diff options
author | wanzongshun <mcuos.com@gmail.com> | 2010-07-18 10:15:11 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-07-22 04:20:16 -0400 |
commit | 6a446b906d58420f9282d74d42e28ff7e3b50b5c (patch) | |
tree | fd9209b499bdc476ef4e3c422c2ca6a4eea211de /arch | |
parent | cd5b8f8755a89a57fc8c408d284b8b613f090345 (diff) |
ARM: 6231/1: re-organize the nuc900 lcd arch platform data setting
The patch re-organizes the nuc900 lcd arch platform data,
remove the lcd platform data setting from nuc950.c to dev.c
It can maximize the share codes between nuc900 series MCUs.
Signed-off-by: Wan ZongShun <mcuos.com@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-w90x900/dev.c | 55 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/mach-nuc950evb.c | 44 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/nuc910.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/nuc950.c | 2 |
4 files changed, 41 insertions, 61 deletions
diff --git a/arch/arm/mach-w90x900/dev.c b/arch/arm/mach-w90x900/dev.c index b2eda4dc1c34..73b3ecaf81c1 100644 --- a/arch/arm/mach-w90x900/dev.c +++ b/arch/arm/mach-w90x900/dev.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <mach/nuc900_spi.h> | 36 | #include <mach/nuc900_spi.h> |
37 | #include <mach/map.h> | 37 | #include <mach/map.h> |
38 | #include <mach/fb.h> | 38 | #include <mach/fb.h> |
39 | #include <mach/regs-ldm.h> | ||
39 | 40 | ||
40 | #include "cpu.h" | 41 | #include "cpu.h" |
41 | 42 | ||
@@ -382,7 +383,44 @@ struct platform_device nuc900_device_kpi = { | |||
382 | .resource = nuc900_kpi_resource, | 383 | .resource = nuc900_kpi_resource, |
383 | }; | 384 | }; |
384 | 385 | ||
385 | #ifdef CONFIG_FB_NUC900 | 386 | /* LCD controller*/ |
387 | |||
388 | static struct nuc900fb_display __initdata nuc900_lcd_info[] = { | ||
389 | /* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */ | ||
390 | [0] = { | ||
391 | .type = LCM_DCCS_VA_SRC_RGB565, | ||
392 | .width = 320, | ||
393 | .height = 240, | ||
394 | .xres = 320, | ||
395 | .yres = 240, | ||
396 | .bpp = 16, | ||
397 | .pixclock = 200000, | ||
398 | .left_margin = 34, | ||
399 | .right_margin = 54, | ||
400 | .hsync_len = 10, | ||
401 | .upper_margin = 18, | ||
402 | .lower_margin = 4, | ||
403 | .vsync_len = 1, | ||
404 | .dccs = 0x8e00041a, | ||
405 | .devctl = 0x060800c0, | ||
406 | .fbctrl = 0x00a000a0, | ||
407 | .scale = 0x04000400, | ||
408 | }, | ||
409 | }; | ||
410 | |||
411 | static struct nuc900fb_mach_info nuc900_fb_info __initdata = { | ||
412 | #if defined(CONFIG_GPM1040A0_320X240) | ||
413 | .displays = &nuc900_lcd_info[0], | ||
414 | #else | ||
415 | .displays = nuc900_lcd_info, | ||
416 | #endif | ||
417 | .num_displays = ARRAY_SIZE(nuc900_lcd_info), | ||
418 | .default_display = 0, | ||
419 | .gpio_dir = 0x00000004, | ||
420 | .gpio_dir_mask = 0xFFFFFFFD, | ||
421 | .gpio_data = 0x00000004, | ||
422 | .gpio_data_mask = 0xFFFFFFFD, | ||
423 | }; | ||
386 | 424 | ||
387 | static struct resource nuc900_lcd_resource[] = { | 425 | static struct resource nuc900_lcd_resource[] = { |
388 | [0] = { | 426 | [0] = { |
@@ -406,23 +444,10 @@ struct platform_device nuc900_device_lcd = { | |||
406 | .dev = { | 444 | .dev = { |
407 | .dma_mask = &nuc900_device_lcd_dmamask, | 445 | .dma_mask = &nuc900_device_lcd_dmamask, |
408 | .coherent_dma_mask = -1, | 446 | .coherent_dma_mask = -1, |
447 | .platform_data = &nuc900_fb_info, | ||
409 | } | 448 | } |
410 | }; | 449 | }; |
411 | 450 | ||
412 | void nuc900_fb_set_platdata(struct nuc900fb_mach_info *pd) | ||
413 | { | ||
414 | struct nuc900fb_mach_info *npd; | ||
415 | |||
416 | npd = kmalloc(sizeof(*npd), GFP_KERNEL); | ||
417 | if (npd) { | ||
418 | memcpy(npd, pd, sizeof(*npd)); | ||
419 | nuc900_device_lcd.dev.platform_data = npd; | ||
420 | } else { | ||
421 | printk(KERN_ERR "no memory for LCD platform data\n"); | ||
422 | } | ||
423 | } | ||
424 | #endif | ||
425 | |||
426 | /* AUDIO controller*/ | 451 | /* AUDIO controller*/ |
427 | static u64 nuc900_device_audio_dmamask = -1; | 452 | static u64 nuc900_device_audio_dmamask = -1; |
428 | static struct resource nuc900_ac97_resource[] = { | 453 | static struct resource nuc900_ac97_resource[] = { |
diff --git a/arch/arm/mach-w90x900/mach-nuc950evb.c b/arch/arm/mach-w90x900/mach-nuc950evb.c index b3edc3cccf52..04d295f89eb0 100644 --- a/arch/arm/mach-w90x900/mach-nuc950evb.c +++ b/arch/arm/mach-w90x900/mach-nuc950evb.c | |||
@@ -20,51 +20,10 @@ | |||
20 | #include <asm/mach/map.h> | 20 | #include <asm/mach/map.h> |
21 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
22 | #include <mach/map.h> | 22 | #include <mach/map.h> |
23 | #include <mach/regs-ldm.h> | ||
24 | #include <mach/fb.h> | 23 | #include <mach/fb.h> |
25 | 24 | ||
26 | #include "nuc950.h" | 25 | #include "nuc950.h" |
27 | 26 | ||
28 | #ifdef CONFIG_FB_NUC900 | ||
29 | /* LCD Controller */ | ||
30 | static struct nuc900fb_display __initdata nuc950_lcd_info[] = { | ||
31 | /* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */ | ||
32 | [0] = { | ||
33 | .type = LCM_DCCS_VA_SRC_RGB565, | ||
34 | .width = 320, | ||
35 | .height = 240, | ||
36 | .xres = 320, | ||
37 | .yres = 240, | ||
38 | .bpp = 16, | ||
39 | .pixclock = 200000, | ||
40 | .left_margin = 34, | ||
41 | .right_margin = 54, | ||
42 | .hsync_len = 10, | ||
43 | .upper_margin = 18, | ||
44 | .lower_margin = 4, | ||
45 | .vsync_len = 1, | ||
46 | .dccs = 0x8e00041a, | ||
47 | .devctl = 0x060800c0, | ||
48 | .fbctrl = 0x00a000a0, | ||
49 | .scale = 0x04000400, | ||
50 | }, | ||
51 | }; | ||
52 | |||
53 | static struct nuc900fb_mach_info nuc950_fb_info __initdata = { | ||
54 | #if defined(CONFIG_GPM1040A0_320X240) | ||
55 | .displays = &nuc950_lcd_info[0], | ||
56 | #else | ||
57 | .displays = nuc950_lcd_info, | ||
58 | #endif | ||
59 | .num_displays = ARRAY_SIZE(nuc950_lcd_info), | ||
60 | .default_display = 0, | ||
61 | .gpio_dir = 0x00000004, | ||
62 | .gpio_dir_mask = 0xFFFFFFFD, | ||
63 | .gpio_data = 0x00000004, | ||
64 | .gpio_data_mask = 0xFFFFFFFD, | ||
65 | }; | ||
66 | #endif | ||
67 | |||
68 | static void __init nuc950evb_map_io(void) | 27 | static void __init nuc950evb_map_io(void) |
69 | { | 28 | { |
70 | nuc950_map_io(); | 29 | nuc950_map_io(); |
@@ -74,9 +33,6 @@ static void __init nuc950evb_map_io(void) | |||
74 | static void __init nuc950evb_init(void) | 33 | static void __init nuc950evb_init(void) |
75 | { | 34 | { |
76 | nuc950_board_init(); | 35 | nuc950_board_init(); |
77 | #ifdef CONFIG_FB_NUC900 | ||
78 | nuc900_fb_set_platdata(&nuc950_fb_info); | ||
79 | #endif | ||
80 | } | 36 | } |
81 | 37 | ||
82 | MACHINE_START(W90P950EVB, "W90P950EVB") | 38 | MACHINE_START(W90P950EVB, "W90P950EVB") |
diff --git a/arch/arm/mach-w90x900/nuc910.c b/arch/arm/mach-w90x900/nuc910.c index 656f03b3b629..cd4977678b85 100644 --- a/arch/arm/mach-w90x900/nuc910.c +++ b/arch/arm/mach-w90x900/nuc910.c | |||
@@ -26,6 +26,7 @@ | |||
26 | static struct platform_device *nuc910_dev[] __initdata = { | 26 | static struct platform_device *nuc910_dev[] __initdata = { |
27 | &nuc900_device_ts, | 27 | &nuc900_device_ts, |
28 | &nuc900_device_rtc, | 28 | &nuc900_device_rtc, |
29 | &nuc900_device_lcd, | ||
29 | }; | 30 | }; |
30 | 31 | ||
31 | /* define specific CPU platform io map */ | 32 | /* define specific CPU platform io map */ |
diff --git a/arch/arm/mach-w90x900/nuc950.c b/arch/arm/mach-w90x900/nuc950.c index 4d1f1ab044c4..5704f74a50ee 100644 --- a/arch/arm/mach-w90x900/nuc950.c +++ b/arch/arm/mach-w90x900/nuc950.c | |||
@@ -26,9 +26,7 @@ | |||
26 | static struct platform_device *nuc950_dev[] __initdata = { | 26 | static struct platform_device *nuc950_dev[] __initdata = { |
27 | &nuc900_device_kpi, | 27 | &nuc900_device_kpi, |
28 | &nuc900_device_fmi, | 28 | &nuc900_device_fmi, |
29 | #ifdef CONFIG_FB_NUC900 | ||
30 | &nuc900_device_lcd, | 29 | &nuc900_device_lcd, |
31 | #endif | ||
32 | }; | 30 | }; |
33 | 31 | ||
34 | /* define specific CPU platform io map */ | 32 | /* define specific CPU platform io map */ |