aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@wantstofly.org>2008-10-18 20:38:25 -0400
committerNicolas Pitre <nico@cam.org>2009-06-08 13:04:55 -0400
commit91af7bb2f48e14892c5c961bca1fae5c7886532e (patch)
tree77fc2d541ba1b16e37e1129ed11b712d32633ad7
parenta399e3fa795afa058e4485b25c498e0c5a860428 (diff)
[ARM] Kirkwood: add Marvell 88F6281 GTW GE board support
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
-rw-r--r--arch/arm/configs/kirkwood_defconfig1
-rw-r--r--arch/arm/mach-kirkwood/Kconfig6
-rw-r--r--arch/arm/mach-kirkwood/Makefile1
-rw-r--r--arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c99
4 files changed, 107 insertions, 0 deletions
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig
index bde56f406688..0a1abb978d7e 100644
--- a/arch/arm/configs/kirkwood_defconfig
+++ b/arch/arm/configs/kirkwood_defconfig
@@ -182,6 +182,7 @@ CONFIG_ARCH_KIRKWOOD=y
182CONFIG_MACH_DB88F6281_BP=y 182CONFIG_MACH_DB88F6281_BP=y
183CONFIG_MACH_RD88F6192_NAS=y 183CONFIG_MACH_RD88F6192_NAS=y
184CONFIG_MACH_RD88F6281=y 184CONFIG_MACH_RD88F6281=y
185CONFIG_MACH_MV88F6281GTW_GE=y
185CONFIG_MACH_SHEEVAPLUG=y 186CONFIG_MACH_SHEEVAPLUG=y
186CONFIG_MACH_TS219=y 187CONFIG_MACH_TS219=y
187CONFIG_PLAT_ORION=y 188CONFIG_PLAT_ORION=y
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index b5421cccd7e1..25100f7acf4c 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -20,6 +20,12 @@ config MACH_RD88F6281
20 Say 'Y' here if you want your kernel to support the 20 Say 'Y' here if you want your kernel to support the
21 Marvell RD-88F6281 Reference Board. 21 Marvell RD-88F6281 Reference Board.
22 22
23config MACH_MV88F6281GTW_GE
24 bool "Marvell 88F6281 GTW GE Board"
25 help
26 Say 'Y' here if you want your kernel to support the
27 Marvell 88F6281 GTW GE Board.
28
23config MACH_SHEEVAPLUG 29config MACH_SHEEVAPLUG
24 bool "Marvell SheevaPlug Reference Board" 30 bool "Marvell SheevaPlug Reference Board"
25 help 31 help
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index f21f35d8386b..9dd680e964d6 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -3,6 +3,7 @@ obj-y += common.o addr-map.o irq.o pcie.o mpp.o
3obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o 3obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
4obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o 4obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o
5obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o 5obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
6obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
6obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o 7obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
7obj-$(CONFIG_MACH_TS219) += ts219-setup.o 8obj-$(CONFIG_MACH_TS219) += ts219-setup.o
8 9
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
new file mode 100644
index 000000000000..4fb03f4d3f4a
--- /dev/null
+++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
@@ -0,0 +1,99 @@
1/*
2 * arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
3 *
4 * Marvell 88F6281 GTW GE Board Setup
5 *
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.
9 */
10
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/spi/flash.h>
21#include <linux/spi/spi.h>
22#include <linux/spi/orion_spi.h>
23#include <net/dsa.h>
24#include <asm/mach-types.h>
25#include <asm/mach/arch.h>
26#include <asm/mach/pci.h>
27#include <mach/kirkwood.h>
28#include "common.h"
29
30static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {
31 .phy_addr = MV643XX_ETH_PHY_NONE,
32 .speed = SPEED_1000,
33 .duplex = DUPLEX_FULL,
34};
35
36static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = {
37 .port_names[0] = "lan1",
38 .port_names[1] = "lan2",
39 .port_names[2] = "lan3",
40 .port_names[3] = "lan4",
41 .port_names[4] = "wan",
42 .port_names[5] = "cpu",
43};
44
45static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = {
46 .nr_chips = 1,
47 .chip = &mv88f6281gtw_ge_switch_chip_data,
48};
49
50static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data = {
51 .type = "mx25l12805d",
52};
53
54static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = {
55 {
56 .modalias = "m25p80",
57 .platform_data = &mv88f6281gtw_ge_spi_slave_data,
58 .irq = -1,
59 .max_speed_hz = 50000000,
60 .bus_num = 0,
61 .chip_select = 0,
62 },
63};
64
65static void __init mv88f6281gtw_ge_init(void)
66{
67 /*
68 * Basic setup. Needs to be called early.
69 */
70 kirkwood_init();
71
72 kirkwood_ehci_init();
73 kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
74 kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);
75 spi_register_board_info(mv88f6281gtw_ge_spi_slave_info,
76 ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info));
77 kirkwood_spi_init();
78 kirkwood_uart0_init();
79}
80
81static int __init mv88f6281gtw_ge_pci_init(void)
82{
83 if (machine_is_mv88f6281gtw_ge())
84 kirkwood_pcie_init();
85
86 return 0;
87}
88subsys_initcall(mv88f6281gtw_ge_pci_init);
89
90MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")
91 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
92 .phys_io = KIRKWOOD_REGS_PHYS_BASE,
93 .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
94 .boot_params = 0x00000100,
95 .init_machine = mv88f6281gtw_ge_init,
96 .map_io = kirkwood_map_io,
97 .init_irq = kirkwood_init_irq,
98 .timer = &kirkwood_timer,
99MACHINE_END