aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-09-06 04:09:11 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-09-17 18:20:23 -0400
commit73efd53012af7775a4504da46ebf4145528d50e7 (patch)
tree5a287cbba28ac33007223a21e9846b57979bdb87 /arch/arm
parent4672cddff21f6edde857aa4b523bbc1bfc741cf8 (diff)
ARM: 7519/1: integrator: convert platform devices to Device Tree
This moves the physmap flash and SMSC91x ethernet devices over to the device tree, moving the static board code down into the #ifndef CONFIG_OF section. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/boot/dts/integrator.dtsi5
-rw-r--r--arch/arm/boot/dts/integratorcp.dts7
-rw-r--r--arch/arm/mach-integrator/integrator_ap.c36
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c92
4 files changed, 77 insertions, 63 deletions
diff --git a/arch/arm/boot/dts/integrator.dtsi b/arch/arm/boot/dts/integrator.dtsi
index 9bcc09d54457..813b91d7bea2 100644
--- a/arch/arm/boot/dts/integrator.dtsi
+++ b/arch/arm/boot/dts/integrator.dtsi
@@ -31,6 +31,11 @@
31 clear-mask = <0xffffffff>; 31 clear-mask = <0xffffffff>;
32 }; 32 };
33 33
34 flash@24000000 {
35 compatible = "cfi-flash";
36 reg = <0x24000000 0x02000000>;
37 };
38
34 fpga { 39 fpga {
35 compatible = "arm,amba-bus", "simple-bus"; 40 compatible = "arm,amba-bus", "simple-bus";
36 #address-cells = <1>; 41 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts
index 7bd49466cb0d..2dd5e4e48481 100644
--- a/arch/arm/boot/dts/integratorcp.dts
+++ b/arch/arm/boot/dts/integratorcp.dts
@@ -52,6 +52,13 @@
52 valid-mask = <0x00000fff>; 52 valid-mask = <0x00000fff>;
53 }; 53 };
54 54
55 ethernet@c8000000 {
56 compatible = "smsc,lan91c111";
57 reg = <0xc8000000 0x10>;
58 interrupt-parent = <&pic>;
59 interrupts = <27>;
60 };
61
55 fpga { 62 fpga {
56 /* 63 /*
57 * These PrimeCells are at the same location and using 64 * These PrimeCells are at the same location and using
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index 8cd05607435a..ff1255ae7121 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -256,22 +256,6 @@ static struct physmap_flash_data ap_flash_data = {
256 .set_vpp = ap_flash_set_vpp, 256 .set_vpp = ap_flash_set_vpp,
257}; 257};
258 258
259static struct resource cfi_flash_resource = {
260 .start = INTEGRATOR_FLASH_BASE,
261 .end = INTEGRATOR_FLASH_BASE + INTEGRATOR_FLASH_SIZE - 1,
262 .flags = IORESOURCE_MEM,
263};
264
265static struct platform_device cfi_flash_device = {
266 .name = "physmap-flash",
267 .id = 0,
268 .dev = {
269 .platform_data = &ap_flash_data,
270 },
271 .num_resources = 1,
272 .resource = &cfi_flash_resource,
273};
274
275/* 259/*
276 * Where is the timer (VA)? 260 * Where is the timer (VA)?
277 */ 261 */
@@ -476,6 +460,8 @@ static struct of_dev_auxdata ap_auxdata_lookup[] __initdata = {
476 "kmi0", NULL), 460 "kmi0", NULL),
477 OF_DEV_AUXDATA("arm,primecell", KMI1_BASE, 461 OF_DEV_AUXDATA("arm,primecell", KMI1_BASE,
478 "kmi1", NULL), 462 "kmi1", NULL),
463 OF_DEV_AUXDATA("cfi-flash", INTEGRATOR_FLASH_BASE,
464 "physmap-flash", &ap_flash_data),
479 { /* sentinel */ }, 465 { /* sentinel */ },
480}; 466};
481 467
@@ -487,8 +473,6 @@ static void __init ap_init_of(void)
487 of_platform_populate(NULL, of_default_bus_match_table, 473 of_platform_populate(NULL, of_default_bus_match_table,
488 ap_auxdata_lookup, NULL); 474 ap_auxdata_lookup, NULL);
489 475
490 platform_device_register(&cfi_flash_device);
491
492 sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET); 476 sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET);
493 for (i = 0; i < 4; i++) { 477 for (i = 0; i < 4; i++) {
494 struct lm_device *lmdev; 478 struct lm_device *lmdev;
@@ -537,6 +521,22 @@ MACHINE_END
537 * for eventual deletion. 521 * for eventual deletion.
538 */ 522 */
539 523
524static struct resource cfi_flash_resource = {
525 .start = INTEGRATOR_FLASH_BASE,
526 .end = INTEGRATOR_FLASH_BASE + INTEGRATOR_FLASH_SIZE - 1,
527 .flags = IORESOURCE_MEM,
528};
529
530static struct platform_device cfi_flash_device = {
531 .name = "physmap-flash",
532 .id = 0,
533 .dev = {
534 .platform_data = &ap_flash_data,
535 },
536 .num_resources = 1,
537 .resource = &cfi_flash_resource,
538};
539
540static void __init ap_init_timer(void) 540static void __init ap_init_timer(void)
541{ 541{
542 struct clk *clk; 542 struct clk *clk;
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index f032238c1f9f..f51363e2d6fe 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -52,12 +52,9 @@
52#include "common.h" 52#include "common.h"
53 53
54#define INTCP_PA_FLASH_BASE 0x24000000 54#define INTCP_PA_FLASH_BASE 0x24000000
55#define INTCP_FLASH_SIZE SZ_32M
56 55
57#define INTCP_PA_CLCD_BASE 0xc0000000 56#define INTCP_PA_CLCD_BASE 0xc0000000
58 57
59#define INTCP_ETH_SIZE 0x10
60
61#define INTCP_VA_CTRL_BASE IO_ADDRESS(INTEGRATOR_CP_CTL_BASE) 58#define INTCP_VA_CTRL_BASE IO_ADDRESS(INTEGRATOR_CP_CTL_BASE)
62#define INTCP_FLASHPROG 0x04 59#define INTCP_FLASHPROG 0x04
63#define CINTEGRATOR_FLASHPROG_FLVPPEN (1 << 0) 60#define CINTEGRATOR_FLASHPROG_FLVPPEN (1 << 0)
@@ -184,47 +181,6 @@ static struct physmap_flash_data intcp_flash_data = {
184 .set_vpp = intcp_flash_set_vpp, 181 .set_vpp = intcp_flash_set_vpp,
185}; 182};
186 183
187static struct resource intcp_flash_resource = {
188 .start = INTCP_PA_FLASH_BASE,
189 .end = INTCP_PA_FLASH_BASE + INTCP_FLASH_SIZE - 1,
190 .flags = IORESOURCE_MEM,
191};
192
193static struct platform_device intcp_flash_device = {
194 .name = "physmap-flash",
195 .id = 0,
196 .dev = {
197 .platform_data = &intcp_flash_data,
198 },
199 .num_resources = 1,
200 .resource = &intcp_flash_resource,
201};
202
203static struct resource smc91x_resources[] = {
204 [0] = {
205 .start = INTEGRATOR_CP_ETH_BASE,
206 .end = INTEGRATOR_CP_ETH_BASE + INTCP_ETH_SIZE - 1,
207 .flags = IORESOURCE_MEM,
208 },
209 [1] = {
210 .start = IRQ_CP_ETHINT,
211 .end = IRQ_CP_ETHINT,
212 .flags = IORESOURCE_IRQ,
213 },
214};
215
216static struct platform_device smc91x_device = {
217 .name = "smc91x",
218 .id = 0,
219 .num_resources = ARRAY_SIZE(smc91x_resources),
220 .resource = smc91x_resources,
221};
222
223static struct platform_device *intcp_devs[] __initdata = {
224 &intcp_flash_device,
225 &smc91x_device,
226};
227
228/* 184/*
229 * It seems that the card insertion interrupt remains active after 185 * It seems that the card insertion interrupt remains active after
230 * we've acknowledged it. We therefore ignore the interrupt, and 186 * we've acknowledged it. We therefore ignore the interrupt, and
@@ -375,6 +331,8 @@ static struct of_dev_auxdata intcp_auxdata_lookup[] __initdata = {
375 "aaci", &mmc_data), 331 "aaci", &mmc_data),
376 OF_DEV_AUXDATA("arm,primecell", INTCP_PA_CLCD_BASE, 332 OF_DEV_AUXDATA("arm,primecell", INTCP_PA_CLCD_BASE,
377 "clcd", &clcd_data), 333 "clcd", &clcd_data),
334 OF_DEV_AUXDATA("cfi-flash", INTCP_PA_FLASH_BASE,
335 "physmap-flash", &intcp_flash_data),
378 { /* sentinel */ }, 336 { /* sentinel */ },
379}; 337};
380 338
@@ -382,7 +340,6 @@ static void __init intcp_init_of(void)
382{ 340{
383 of_platform_populate(NULL, of_default_bus_match_table, 341 of_platform_populate(NULL, of_default_bus_match_table,
384 intcp_auxdata_lookup, NULL); 342 intcp_auxdata_lookup, NULL);
385 platform_add_devices(intcp_devs, ARRAY_SIZE(intcp_devs));
386} 343}
387 344
388static const char * intcp_dt_board_compat[] = { 345static const char * intcp_dt_board_compat[] = {
@@ -412,6 +369,51 @@ MACHINE_END
412 * for eventual deletion. 369 * for eventual deletion.
413 */ 370 */
414 371
372#define INTCP_FLASH_SIZE SZ_32M
373
374static struct resource intcp_flash_resource = {
375 .start = INTCP_PA_FLASH_BASE,
376 .end = INTCP_PA_FLASH_BASE + INTCP_FLASH_SIZE - 1,
377 .flags = IORESOURCE_MEM,
378};
379
380static struct platform_device intcp_flash_device = {
381 .name = "physmap-flash",
382 .id = 0,
383 .dev = {
384 .platform_data = &intcp_flash_data,
385 },
386 .num_resources = 1,
387 .resource = &intcp_flash_resource,
388};
389
390#define INTCP_ETH_SIZE 0x10
391
392static struct resource smc91x_resources[] = {
393 [0] = {
394 .start = INTEGRATOR_CP_ETH_BASE,
395 .end = INTEGRATOR_CP_ETH_BASE + INTCP_ETH_SIZE - 1,
396 .flags = IORESOURCE_MEM,
397 },
398 [1] = {
399 .start = IRQ_CP_ETHINT,
400 .end = IRQ_CP_ETHINT,
401 .flags = IORESOURCE_IRQ,
402 },
403};
404
405static struct platform_device smc91x_device = {
406 .name = "smc91x",
407 .id = 0,
408 .num_resources = ARRAY_SIZE(smc91x_resources),
409 .resource = smc91x_resources,
410};
411
412static struct platform_device *intcp_devs[] __initdata = {
413 &intcp_flash_device,
414 &smc91x_device,
415};
416
415#define INTCP_VA_CIC_BASE __io_address(INTEGRATOR_HDR_BASE + 0x40) 417#define INTCP_VA_CIC_BASE __io_address(INTEGRATOR_HDR_BASE + 0x40)
416#define INTCP_VA_PIC_BASE __io_address(INTEGRATOR_IC_BASE) 418#define INTCP_VA_PIC_BASE __io_address(INTEGRATOR_IC_BASE)
417#define INTCP_VA_SIC_BASE __io_address(INTEGRATOR_CP_SIC_BASE) 419#define INTCP_VA_SIC_BASE __io_address(INTEGRATOR_CP_SIC_BASE)