2 * arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
4 * Marvell 88F6281 GTW GE Board Setup
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
11 #include <linux/kernel.h>
12 #include <linux/init.h>
13 #include <linux/platform_device.h>
14 #include <linux/pci.h>
15 #include <linux/irq.h>
16 #include <linux/mtd/physmap.h>
17 #include <linux/timer.h>
18 #include <linux/mv643xx_eth.h>
19 #include <linux/ethtool.h>
20 #include <linux/gpio.h>
21 #include <linux/leds.h>
22 #include <linux/input.h>
23 #include <linux/gpio_keys.h>
24 #include <linux/spi/flash.h>
25 #include <linux/spi/spi.h>
27 #include <asm/mach-types.h>
28 #include <asm/mach/arch.h>
29 #include <asm/mach/pci.h>
30 #include <mach/kirkwood.h>
34 static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data
= {
35 .phy_addr
= MV643XX_ETH_PHY_NONE
,
37 .duplex
= DUPLEX_FULL
,
40 static 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",
49 static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data
= {
51 .chip
= &mv88f6281gtw_ge_switch_chip_data
,
54 static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data
= {
55 .type
= "mx25l12805d",
58 static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info
[] = {
61 .platform_data
= &mv88f6281gtw_ge_spi_slave_data
,
63 .max_speed_hz
= 50000000,
69 static struct gpio_keys_button mv88f6281gtw_ge_button_pins
[] = {
76 .code
= KEY_WPS_BUTTON
,
83 static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data
= {
84 .buttons
= mv88f6281gtw_ge_button_pins
,
85 .nbuttons
= ARRAY_SIZE(mv88f6281gtw_ge_button_pins
),
88 static struct platform_device mv88f6281gtw_ge_buttons
= {
93 .platform_data
= &mv88f6281gtw_ge_button_data
,
97 static struct gpio_led mv88f6281gtw_ge_led_pins
[] = {
99 .name
= "gtw:green:Status",
103 .name
= "gtw:red:Status",
107 .name
= "gtw:green:USB",
113 static struct gpio_led_platform_data mv88f6281gtw_ge_led_data
= {
114 .leds
= mv88f6281gtw_ge_led_pins
,
115 .num_leds
= ARRAY_SIZE(mv88f6281gtw_ge_led_pins
),
118 static struct platform_device mv88f6281gtw_ge_leds
= {
122 .platform_data
= &mv88f6281gtw_ge_led_data
,
126 static unsigned int mv88f6281gtw_ge_mpp_config
[] __initdata
= {
127 MPP12_GPO
, /* Status#_USB pin */
128 MPP20_GPIO
, /* Status#_GLED pin */
129 MPP21_GPIO
, /* Status#_RLED pin */
130 MPP46_GPIO
, /* WPS_Switch pin */
131 MPP47_GPIO
, /* SW_Init pin */
135 static void __init
mv88f6281gtw_ge_init(void)
138 * Basic setup. Needs to be called early.
141 kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config
);
143 kirkwood_ehci_init();
144 kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data
);
145 kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data
, NO_IRQ
);
146 spi_register_board_info(mv88f6281gtw_ge_spi_slave_info
,
147 ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info
));
149 kirkwood_uart0_init();
150 platform_device_register(&mv88f6281gtw_ge_leds
);
151 platform_device_register(&mv88f6281gtw_ge_buttons
);
154 static int __init
mv88f6281gtw_ge_pci_init(void)
156 if (machine_is_mv88f6281gtw_ge())
157 kirkwood_pcie_init(KW_PCIE0
);
161 subsys_initcall(mv88f6281gtw_ge_pci_init
);
163 MACHINE_START(MV88F6281GTW_GE
, "Marvell 88F6281 GTW GE Board")
164 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
165 .atag_offset
= 0x100,
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 .init_time
= kirkwood_timer_init
,
171 .restart
= kirkwood_restart
,