diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/boot/dts/kirkwood-dreamplug.dts | 18 | ||||
-rw-r--r-- | arch/arm/boot/dts/kirkwood.dtsi | 6 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/Kconfig | 14 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/Makefile.boot | 2 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/board-dt.c | 182 |
6 files changed, 223 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts new file mode 100644 index 00000000000..0424d9931a3 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts | |||
@@ -0,0 +1,18 @@ | |||
1 | /dts-v1/; | ||
2 | |||
3 | /include/ "kirkwood.dtsi" | ||
4 | |||
5 | / { | ||
6 | model = "Globalscale Technologies Dreamplug"; | ||
7 | compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
8 | |||
9 | memory { | ||
10 | device_type = "memory"; | ||
11 | reg = <0x00000000 0x20000000>; | ||
12 | }; | ||
13 | |||
14 | chosen { | ||
15 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
16 | }; | ||
17 | |||
18 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi new file mode 100644 index 00000000000..771c6bbeb29 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood.dtsi | |||
@@ -0,0 +1,6 @@ | |||
1 | /include/ "skeleton.dtsi" | ||
2 | |||
3 | / { | ||
4 | compatible = "marvell,kirkwood"; | ||
5 | }; | ||
6 | |||
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig index 7fc603b4689..90ceab76192 100644 --- a/arch/arm/mach-kirkwood/Kconfig +++ b/arch/arm/mach-kirkwood/Kconfig | |||
@@ -44,6 +44,20 @@ config MACH_GURUPLUG | |||
44 | Say 'Y' here if you want your kernel to support the | 44 | Say 'Y' here if you want your kernel to support the |
45 | Marvell GuruPlug Reference Board. | 45 | Marvell GuruPlug Reference Board. |
46 | 46 | ||
47 | config ARCH_KIRKWOOD_DT | ||
48 | bool "Marvell Kirkwood Flattened Device Tree" | ||
49 | select USE_OF | ||
50 | help | ||
51 | Say 'Y' here if you want your kernel to support the | ||
52 | Marvell Kirkwood using flattened device tree. | ||
53 | |||
54 | config MACH_DREAMPLUG_DT | ||
55 | bool "Marvell DreamPlug (Flattened Device Tree)" | ||
56 | select ARCH_KIRKWOOD_DT | ||
57 | help | ||
58 | Say 'Y' here if you want your kernel to support the | ||
59 | Marvell DreamPlug (Flattened Device Tree). | ||
60 | |||
47 | config MACH_TS219 | 61 | config MACH_TS219 |
48 | bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" | 62 | bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" |
49 | help | 63 | help |
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile index 5dcaa81a2ec..acbc5e1db06 100644 --- a/arch/arm/mach-kirkwood/Makefile +++ b/arch/arm/mach-kirkwood/Makefile | |||
@@ -20,3 +20,4 @@ obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o | |||
20 | obj-$(CONFIG_MACH_T5325) += t5325-setup.o | 20 | obj-$(CONFIG_MACH_T5325) += t5325-setup.o |
21 | 21 | ||
22 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | 22 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o |
23 | obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o | ||
diff --git a/arch/arm/mach-kirkwood/Makefile.boot b/arch/arm/mach-kirkwood/Makefile.boot index 760a0efe758..16f93852230 100644 --- a/arch/arm/mach-kirkwood/Makefile.boot +++ b/arch/arm/mach-kirkwood/Makefile.boot | |||
@@ -1,3 +1,5 @@ | |||
1 | zreladdr-y += 0x00008000 | 1 | zreladdr-y += 0x00008000 |
2 | params_phys-y := 0x00000100 | 2 | params_phys-y := 0x00000100 |
3 | initrd_phys-y := 0x00800000 | 3 | initrd_phys-y := 0x00800000 |
4 | |||
5 | dtb-$(CONFIG_MACH_DREAMPLUG_DT) += kirkwood-dreamplug.dtb | ||
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c new file mode 100644 index 00000000000..76392af791d --- /dev/null +++ b/arch/arm/mach-kirkwood/board-dt.c | |||
@@ -0,0 +1,182 @@ | |||
1 | /* | ||
2 | * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> | ||
3 | * | ||
4 | * arch/arm/mach-kirkwood/board-dt.c | ||
5 | * | ||
6 | * Marvell DreamPlug Reference Board Setup | ||
7 | * | ||
8 | * This file is licensed under the terms of the GNU General Public | ||
9 | * License version 2. This program is licensed "as is" without any | ||
10 | * warranty of any kind, whether express or implied. | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/platform_device.h> | ||
16 | #include <linux/mtd/partitions.h> | ||
17 | #include <linux/ata_platform.h> | ||
18 | #include <linux/mv643xx_eth.h> | ||
19 | #include <linux/of.h> | ||
20 | #include <linux/of_address.h> | ||
21 | #include <linux/of_fdt.h> | ||
22 | #include <linux/of_irq.h> | ||
23 | #include <linux/of_platform.h> | ||
24 | #include <linux/gpio.h> | ||
25 | #include <linux/leds.h> | ||
26 | #include <linux/mtd/physmap.h> | ||
27 | #include <linux/spi/flash.h> | ||
28 | #include <linux/spi/spi.h> | ||
29 | #include <linux/spi/orion_spi.h> | ||
30 | #include <asm/mach-types.h> | ||
31 | #include <asm/mach/arch.h> | ||
32 | #include <mach/kirkwood.h> | ||
33 | #include <plat/mvsdio.h> | ||
34 | #include "common.h" | ||
35 | #include "mpp.h" | ||
36 | |||
37 | static struct of_device_id kirkwood_dt_match_table[] __initdata = { | ||
38 | { .compatible = "simple-bus", }, | ||
39 | { } | ||
40 | }; | ||
41 | |||
42 | struct mtd_partition dreamplug_partitions[] = { | ||
43 | { | ||
44 | .name = "u-boot", | ||
45 | .size = SZ_512K, | ||
46 | .offset = 0, | ||
47 | }, | ||
48 | { | ||
49 | .name = "u-boot env", | ||
50 | .size = SZ_64K, | ||
51 | .offset = SZ_512K + SZ_512K, | ||
52 | }, | ||
53 | { | ||
54 | .name = "dtb", | ||
55 | .size = SZ_64K, | ||
56 | .offset = SZ_512K + SZ_512K + SZ_512K, | ||
57 | }, | ||
58 | }; | ||
59 | |||
60 | static const struct flash_platform_data dreamplug_spi_slave_data = { | ||
61 | .type = "mx25l1606e", | ||
62 | .name = "spi_flash", | ||
63 | .parts = dreamplug_partitions, | ||
64 | .nr_parts = ARRAY_SIZE(dreamplug_partitions), | ||
65 | }; | ||
66 | |||
67 | static struct spi_board_info __initdata dreamplug_spi_slave_info[] = { | ||
68 | { | ||
69 | .modalias = "m25p80", | ||
70 | .platform_data = &dreamplug_spi_slave_data, | ||
71 | .irq = -1, | ||
72 | .max_speed_hz = 50000000, | ||
73 | .bus_num = 0, | ||
74 | .chip_select = 0, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | static struct mv643xx_eth_platform_data dreamplug_ge00_data = { | ||
79 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
80 | }; | ||
81 | |||
82 | static struct mv643xx_eth_platform_data dreamplug_ge01_data = { | ||
83 | .phy_addr = MV643XX_ETH_PHY_ADDR(1), | ||
84 | }; | ||
85 | |||
86 | static struct mv_sata_platform_data dreamplug_sata_data = { | ||
87 | .n_ports = 1, | ||
88 | }; | ||
89 | |||
90 | static struct mvsdio_platform_data dreamplug_mvsdio_data = { | ||
91 | /* unfortunately the CD signal has not been connected */ | ||
92 | }; | ||
93 | |||
94 | static struct gpio_led dreamplug_led_pins[] = { | ||
95 | { | ||
96 | .name = "dreamplug:blue:bluetooth", | ||
97 | .gpio = 47, | ||
98 | .active_low = 1, | ||
99 | }, | ||
100 | { | ||
101 | .name = "dreamplug:green:wifi", | ||
102 | .gpio = 48, | ||
103 | .active_low = 1, | ||
104 | }, | ||
105 | { | ||
106 | .name = "dreamplug:green:wifi_ap", | ||
107 | .gpio = 49, | ||
108 | .active_low = 1, | ||
109 | }, | ||
110 | }; | ||
111 | |||
112 | static struct gpio_led_platform_data dreamplug_led_data = { | ||
113 | .leds = dreamplug_led_pins, | ||
114 | .num_leds = ARRAY_SIZE(dreamplug_led_pins), | ||
115 | }; | ||
116 | |||
117 | static struct platform_device dreamplug_leds = { | ||
118 | .name = "leds-gpio", | ||
119 | .id = -1, | ||
120 | .dev = { | ||
121 | .platform_data = &dreamplug_led_data, | ||
122 | } | ||
123 | }; | ||
124 | |||
125 | static unsigned int dreamplug_mpp_config[] __initdata = { | ||
126 | MPP0_SPI_SCn, | ||
127 | MPP1_SPI_MOSI, | ||
128 | MPP2_SPI_SCK, | ||
129 | MPP3_SPI_MISO, | ||
130 | MPP47_GPIO, /* Bluetooth LED */ | ||
131 | MPP48_GPIO, /* Wifi LED */ | ||
132 | MPP49_GPIO, /* Wifi AP LED */ | ||
133 | 0 | ||
134 | }; | ||
135 | |||
136 | static void __init dreamplug_init(void) | ||
137 | { | ||
138 | /* | ||
139 | * Basic setup. Needs to be called early. | ||
140 | */ | ||
141 | kirkwood_mpp_conf(dreamplug_mpp_config); | ||
142 | |||
143 | kirkwood_uart0_init(); | ||
144 | |||
145 | spi_register_board_info(dreamplug_spi_slave_info, | ||
146 | ARRAY_SIZE(dreamplug_spi_slave_info)); | ||
147 | kirkwood_spi_init(); | ||
148 | |||
149 | kirkwood_ehci_init(); | ||
150 | kirkwood_ge00_init(&dreamplug_ge00_data); | ||
151 | kirkwood_ge01_init(&dreamplug_ge01_data); | ||
152 | kirkwood_sata_init(&dreamplug_sata_data); | ||
153 | kirkwood_sdio_init(&dreamplug_mvsdio_data); | ||
154 | |||
155 | platform_device_register(&dreamplug_leds); | ||
156 | } | ||
157 | |||
158 | static void __init kirkwood_dt_init(void) | ||
159 | { | ||
160 | kirkwood_init(); | ||
161 | |||
162 | if (of_machine_is_compatible("globalscale,dreamplug")) | ||
163 | dreamplug_init(); | ||
164 | |||
165 | of_platform_populate(NULL, kirkwood_dt_match_table, NULL, NULL); | ||
166 | } | ||
167 | |||
168 | static const char *kirkwood_dt_board_compat[] = { | ||
169 | "globalscale,dreamplug", | ||
170 | NULL | ||
171 | }; | ||
172 | |||
173 | DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") | ||
174 | /* Maintainer: Jason Cooper <jason@lakedaemon.net> */ | ||
175 | .map_io = kirkwood_map_io, | ||
176 | .init_early = kirkwood_init_early, | ||
177 | .init_irq = kirkwood_init_irq, | ||
178 | .timer = &kirkwood_timer, | ||
179 | .init_machine = kirkwood_dt_init, | ||
180 | .restart = kirkwood_restart, | ||
181 | .dt_compat = kirkwood_dt_board_compat, | ||
182 | MACHINE_END | ||