diff options
Diffstat (limited to 'arch/arm/mach-pxa/zylonite.c')
-rw-r--r-- | arch/arm/mach-pxa/zylonite.c | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c index 66b446ca273d..8fca6d890b7d 100644 --- a/arch/arm/mach-pxa/zylonite.c +++ b/arch/arm/mach-pxa/zylonite.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/pwm_backlight.h> | 21 | #include <linux/pwm_backlight.h> |
22 | #include <linux/smc91x.h> | ||
22 | 23 | ||
23 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
24 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
@@ -29,6 +30,7 @@ | |||
29 | #include <asm/arch/zylonite.h> | 30 | #include <asm/arch/zylonite.h> |
30 | #include <asm/arch/mmc.h> | 31 | #include <asm/arch/mmc.h> |
31 | #include <asm/arch/pxa27x_keypad.h> | 32 | #include <asm/arch/pxa27x_keypad.h> |
33 | #include <asm/arch/pxa3xx_nand.h> | ||
32 | 34 | ||
33 | #include "devices.h" | 35 | #include "devices.h" |
34 | #include "generic.h" | 36 | #include "generic.h" |
@@ -37,6 +39,8 @@ | |||
37 | struct platform_mmc_slot zylonite_mmc_slot[MAX_SLOTS]; | 39 | struct platform_mmc_slot zylonite_mmc_slot[MAX_SLOTS]; |
38 | 40 | ||
39 | int gpio_eth_irq; | 41 | int gpio_eth_irq; |
42 | int gpio_debug_led1; | ||
43 | int gpio_debug_led2; | ||
40 | 44 | ||
41 | int wm9713_irq; | 45 | int wm9713_irq; |
42 | 46 | ||
@@ -56,13 +60,57 @@ static struct resource smc91x_resources[] = { | |||
56 | } | 60 | } |
57 | }; | 61 | }; |
58 | 62 | ||
63 | static struct smc91x_platdata zylonite_smc91x_info = { | ||
64 | .flags = SMC91X_USE_8BIT | SMC91X_USE_16BIT | | ||
65 | SMC91X_NOWAIT | SMC91X_USE_DMA, | ||
66 | }; | ||
67 | |||
59 | static struct platform_device smc91x_device = { | 68 | static struct platform_device smc91x_device = { |
60 | .name = "smc91x", | 69 | .name = "smc91x", |
61 | .id = 0, | 70 | .id = 0, |
62 | .num_resources = ARRAY_SIZE(smc91x_resources), | 71 | .num_resources = ARRAY_SIZE(smc91x_resources), |
63 | .resource = smc91x_resources, | 72 | .resource = smc91x_resources, |
73 | .dev = { | ||
74 | .platform_data = &zylonite_smc91x_info, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) | ||
79 | static struct gpio_led zylonite_debug_leds[] = { | ||
80 | [0] = { | ||
81 | .name = "zylonite:yellow:1", | ||
82 | .default_trigger = "heartbeat", | ||
83 | }, | ||
84 | [1] = { | ||
85 | .name = "zylonite:yellow:2", | ||
86 | .default_trigger = "default-on", | ||
87 | }, | ||
64 | }; | 88 | }; |
65 | 89 | ||
90 | static struct gpio_led_platform_data zylonite_debug_leds_info = { | ||
91 | .leds = zylonite_debug_leds, | ||
92 | .num_leds = ARRAY_SIZE(zylonite_debug_leds), | ||
93 | }; | ||
94 | |||
95 | static struct platform_device zylonite_device_leds = { | ||
96 | .name = "leds-gpio", | ||
97 | .id = -1, | ||
98 | .dev = { | ||
99 | .platform_data = &zylonite_debug_leds_info, | ||
100 | } | ||
101 | }; | ||
102 | |||
103 | static void __init zylonite_init_leds(void) | ||
104 | { | ||
105 | zylonite_debug_leds[0].gpio = gpio_debug_led1; | ||
106 | zylonite_debug_leds[1].gpio = gpio_debug_led2; | ||
107 | |||
108 | platform_device_register(&zylonite_device_leds); | ||
109 | } | ||
110 | #else | ||
111 | static inline void zylonite_init_leds(void) {} | ||
112 | #endif | ||
113 | |||
66 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) | 114 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) |
67 | static struct platform_pwm_backlight_data zylonite_backlight_data = { | 115 | static struct platform_pwm_backlight_data zylonite_backlight_data = { |
68 | .pwm_id = 3, | 116 | .pwm_id = 3, |
@@ -259,7 +307,7 @@ static void __init zylonite_init_mmc(void) | |||
259 | static inline void zylonite_init_mmc(void) {} | 307 | static inline void zylonite_init_mmc(void) {} |
260 | #endif | 308 | #endif |
261 | 309 | ||
262 | #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULES) | 310 | #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) |
263 | static unsigned int zylonite_matrix_key_map[] = { | 311 | static unsigned int zylonite_matrix_key_map[] = { |
264 | /* KEY(row, col, key_code) */ | 312 | /* KEY(row, col, key_code) */ |
265 | KEY(0, 0, KEY_A), KEY(0, 1, KEY_B), KEY(0, 2, KEY_C), KEY(0, 5, KEY_D), | 313 | KEY(0, 0, KEY_A), KEY(0, 1, KEY_B), KEY(0, 2, KEY_C), KEY(0, 5, KEY_D), |
@@ -324,6 +372,57 @@ static void __init zylonite_init_keypad(void) | |||
324 | static inline void zylonite_init_keypad(void) {} | 372 | static inline void zylonite_init_keypad(void) {} |
325 | #endif | 373 | #endif |
326 | 374 | ||
375 | #if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) | ||
376 | static struct mtd_partition zylonite_nand_partitions[] = { | ||
377 | [0] = { | ||
378 | .name = "Bootloader", | ||
379 | .offset = 0, | ||
380 | .size = 0x060000, | ||
381 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
382 | }, | ||
383 | [1] = { | ||
384 | .name = "Kernel", | ||
385 | .offset = 0x060000, | ||
386 | .size = 0x200000, | ||
387 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
388 | }, | ||
389 | [2] = { | ||
390 | .name = "Filesystem", | ||
391 | .offset = 0x0260000, | ||
392 | .size = 0x3000000, /* 48M - rootfs */ | ||
393 | }, | ||
394 | [3] = { | ||
395 | .name = "MassStorage", | ||
396 | .offset = 0x3260000, | ||
397 | .size = 0x3d40000, | ||
398 | }, | ||
399 | [4] = { | ||
400 | .name = "BBT", | ||
401 | .offset = 0x6FA0000, | ||
402 | .size = 0x80000, | ||
403 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
404 | }, | ||
405 | /* NOTE: we reserve some blocks at the end of the NAND flash for | ||
406 | * bad block management, and the max number of relocation blocks | ||
407 | * differs on different platforms. Please take care with it when | ||
408 | * defining the partition table. | ||
409 | */ | ||
410 | }; | ||
411 | |||
412 | static struct pxa3xx_nand_platform_data zylonite_nand_info = { | ||
413 | .enable_arbiter = 1, | ||
414 | .parts = zylonite_nand_partitions, | ||
415 | .nr_parts = ARRAY_SIZE(zylonite_nand_partitions), | ||
416 | }; | ||
417 | |||
418 | static void __init zylonite_init_nand(void) | ||
419 | { | ||
420 | pxa3xx_set_nand_info(&zylonite_nand_info); | ||
421 | } | ||
422 | #else | ||
423 | static inline void zylonite_init_nand(void) {} | ||
424 | #endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */ | ||
425 | |||
327 | static void __init zylonite_init(void) | 426 | static void __init zylonite_init(void) |
328 | { | 427 | { |
329 | /* board-processor specific initialization */ | 428 | /* board-processor specific initialization */ |
@@ -342,6 +441,8 @@ static void __init zylonite_init(void) | |||
342 | zylonite_init_lcd(); | 441 | zylonite_init_lcd(); |
343 | zylonite_init_mmc(); | 442 | zylonite_init_mmc(); |
344 | zylonite_init_keypad(); | 443 | zylonite_init_keypad(); |
444 | zylonite_init_nand(); | ||
445 | zylonite_init_leds(); | ||
345 | } | 446 | } |
346 | 447 | ||
347 | MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") | 448 | MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") |