ARM/nuc900: re-organize the nuc900 lcd arch platform data setting
Subsystems (2)
PATCH 1/1 ARM/nuc900: 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 <[email protected]>
--- arch/arm/mach-w90x900/dev.c | 55 +++++++++++++++++++++++--------- arch/arm/mach-w90x900/mach-nuc950evb.c | 44 ------------------------- arch/arm/mach-w90x900/nuc910.c | 1 + arch/arm/mach-w90x900/nuc950.c | 2 - 4 files changed, 41 insertions(+), 61 deletions(-)
arch/arm/mach-w90x900/dev.c +40 -15
@@ -36,6 +36,7 @@#include <mach/nuc900_spi.h> #include <mach/map.h> #include <mach/fb.h> +#include <mach/regs-ldm.h> #include "cpu.h"
@@ -382,7 +383,44 @@ struct platform_device nuc900_device_kpi = { .resource = nuc900_kpi_resource, }; -#ifdef CONFIG_FB_NUC900 +/* LCD controller*/ + +static struct nuc900fb_display __initdata nuc900_lcd_info[] = { +/* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */ + [0 ] = { + .type =LCM_DCCS_VA_SRC_RGB565 , + .width =320 , + .height =240 , + .xres =320 , + .yres =240 , + .bpp =16 , + .pixclock =200000 , + .left_margin =34 , + .right_margin =54 , + .hsync_len =10 , + .upper_margin =18 , + .lower_margin =4 , + .vsync_len =1 , + .dccs =0x8e00041a , + .devctl =0x060800c0 , + .fbctrl =0x00a000a0 , + .scale =0x04000400 , + }, +}; + +static struct nuc900fb_mach_info nuc900_fb_info __initdata = { +#if defined(CONFIG_GPM1040A0_320X240) + .displays = &nuc900_lcd_info[0], +#else + .displays = nuc900_lcd_info, +#endif + .num_displays = ARRAY_SIZE(nuc900_lcd_info), + .default_display = 0, + .gpio_dir = 0x00000004, + .gpio_dir_mask = 0xFFFFFFFD, + .gpio_data = 0x00000004, + .gpio_data_mask = 0xFFFFFFFD, +}; static struct resource nuc900_lcd_resource[] = { [0] = {
@@ -406,23 +444,10 @@ struct platform_device nuc900_device_lcd = { .dev = { .dma_mask = &nuc900_device_lcd_dmamask, .coherent_dma_mask = -1, + .platform_data = &nuc900_fb_info, } }; -void nuc900_fb_set_platdata (struct nuc900fb_mach_info *pd) -{ -struct nuc900fb_mach_info *npd; - - npd =kmalloc (sizeof (*npd),GFP_KERNEL ); -if (npd) { -memcpy (npd, pd,sizeof (*npd)); - nuc900_device_lcd.dev.platform_data = npd; - }else { -printk (KERN_ERR "no memory for LCD platform data\n" ); - } -} -#endif -/* AUDIO controller*/ static u64 nuc900_device_audio_dmamask =-1 ; static struct resource nuc900_ac97_resource[] = {
arch/arm/mach-w90x900/mach-nuc950evb.c +0 -44
60 lines not on this page · raw message
arch/arm/mach-w90x900/nuc910.c +1 -0
@@ -26,6 +26,7 @@static struct platform_device *nuc910_dev[]__initdata = { &nuc900_device_ts, &nuc900_device_rtc, + &nuc900_device_lcd, };/* define specific CPU platform io map */
arch/arm/mach-w90x900/nuc950.c +0 -2
@@ -26,9 +26,7 @@static struct platform_device *nuc950_dev[]__initdata = { &nuc900_device_kpi, &nuc900_device_fmi, -#ifdef CONFIG_FB_NUC900 &nuc900_device_lcd, -#endif };/* define specific CPU platform io map */
Signature · 1 line
1.6.3.3
Quoted 4 lines · Wan ZongShun
The patch re-organizes the nuc900 lcd arch platform data, remove the lcd platform data setting from
nuc950.ctodev.cIt can maximize the share codes between nuc900 series MCUs.
Ok.