Path: blob/master/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
10817 views
/*1* arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c2*3* Marvell 88F6281 GTW GE Board Setup4*5* This file is licensed under the terms of the GNU General Public6* License version 2. This program is licensed "as is" without any7* warranty of any kind, whether express or implied.8*/910#include <linux/kernel.h>11#include <linux/init.h>12#include <linux/platform_device.h>13#include <linux/pci.h>14#include <linux/irq.h>15#include <linux/mtd/physmap.h>16#include <linux/timer.h>17#include <linux/mv643xx_eth.h>18#include <linux/ethtool.h>19#include <linux/gpio.h>20#include <linux/leds.h>21#include <linux/input.h>22#include <linux/gpio_keys.h>23#include <linux/spi/flash.h>24#include <linux/spi/spi.h>25#include <linux/spi/orion_spi.h>26#include <net/dsa.h>27#include <asm/mach-types.h>28#include <asm/mach/arch.h>29#include <asm/mach/pci.h>30#include <mach/kirkwood.h>31#include "common.h"32#include "mpp.h"3334static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {35.phy_addr = MV643XX_ETH_PHY_NONE,36.speed = SPEED_1000,37.duplex = DUPLEX_FULL,38};3940static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = {41.port_names[0] = "lan1",42.port_names[1] = "lan2",43.port_names[2] = "lan3",44.port_names[3] = "lan4",45.port_names[4] = "wan",46.port_names[5] = "cpu",47};4849static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = {50.nr_chips = 1,51.chip = &mv88f6281gtw_ge_switch_chip_data,52};5354static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data = {55.type = "mx25l12805d",56};5758static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = {59{60.modalias = "m25p80",61.platform_data = &mv88f6281gtw_ge_spi_slave_data,62.irq = -1,63.max_speed_hz = 50000000,64.bus_num = 0,65.chip_select = 0,66},67};6869static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {70{71.code = KEY_RESTART,72.gpio = 47,73.desc = "SWR Button",74.active_low = 1,75}, {76.code = KEY_WPS_BUTTON,77.gpio = 46,78.desc = "WPS Button",79.active_low = 1,80},81};8283static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data = {84.buttons = mv88f6281gtw_ge_button_pins,85.nbuttons = ARRAY_SIZE(mv88f6281gtw_ge_button_pins),86};8788static struct platform_device mv88f6281gtw_ge_buttons = {89.name = "gpio-keys",90.id = -1,91.num_resources = 0,92.dev = {93.platform_data = &mv88f6281gtw_ge_button_data,94},95};9697static struct gpio_led mv88f6281gtw_ge_led_pins[] = {98{99.name = "gtw:green:Status",100.gpio = 20,101.active_low = 0,102}, {103.name = "gtw:red:Status",104.gpio = 21,105.active_low = 0,106}, {107.name = "gtw:green:USB",108.gpio = 12,109.active_low = 0,110},111};112113static struct gpio_led_platform_data mv88f6281gtw_ge_led_data = {114.leds = mv88f6281gtw_ge_led_pins,115.num_leds = ARRAY_SIZE(mv88f6281gtw_ge_led_pins),116};117118static struct platform_device mv88f6281gtw_ge_leds = {119.name = "leds-gpio",120.id = -1,121.dev = {122.platform_data = &mv88f6281gtw_ge_led_data,123},124};125126static unsigned int mv88f6281gtw_ge_mpp_config[] __initdata = {127MPP12_GPO, /* Status#_USB pin */128MPP20_GPIO, /* Status#_GLED pin */129MPP21_GPIO, /* Status#_RLED pin */130MPP46_GPIO, /* WPS_Switch pin */131MPP47_GPIO, /* SW_Init pin */1320133};134135static void __init mv88f6281gtw_ge_init(void)136{137/*138* Basic setup. Needs to be called early.139*/140kirkwood_init();141kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config);142143kirkwood_ehci_init();144kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);145kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);146spi_register_board_info(mv88f6281gtw_ge_spi_slave_info,147ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info));148kirkwood_spi_init();149kirkwood_uart0_init();150platform_device_register(&mv88f6281gtw_ge_leds);151platform_device_register(&mv88f6281gtw_ge_buttons);152}153154static int __init mv88f6281gtw_ge_pci_init(void)155{156if (machine_is_mv88f6281gtw_ge())157kirkwood_pcie_init(KW_PCIE0);158159return 0;160}161subsys_initcall(mv88f6281gtw_ge_pci_init);162163MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")164/* Maintainer: Lennert Buytenhek <[email protected]> */165.boot_params = 0x00000100,166.init_machine = mv88f6281gtw_ge_init,167.map_io = kirkwood_map_io,168.init_early = kirkwood_init_early,169.init_irq = kirkwood_init_irq,170.timer = &kirkwood_timer,171MACHINE_END172173174