video: s3c-fb: Rearrange the elements in platform data
Subsystems (4)
v3 cover video: s3c-fb: Rearrange the elements in platform data
Changes since v2:
- Patch 3/4 is a new patch in this series. The real6410 and mini6410 boards use the display controllers window configuration data to represent video timing of two different lcd panels. Since the window configuration data should be not be used to specify timing of two different panels, this has been reworked in such a way that two instance of display controller's platform data is setup for the two supported lcd panels. Depending on the lcd panel specified using boot parameters, the corresponding platform data is registered. This maintains backward compatibility with existing functionality of supporting multiple lcd panels at runtime.
Changes since v1:
- Includes all changes suggested by Jingoo Han.
- Reworked s3c-fb platform data in all Samsung SoC based board files.
This patchset rearranges the elements in the platform data of the s3c-fb driver with the intent of adding device tree support to the driver in subsequent patches.
The first patch moves the video timing information from the individual window setup data into the platform specific configuration section in the platform data. The video timing is independent of the window setup. The resolution of the window could be smaller than that of the lcd panel attached. So the video timing data is removed from window configuration data.
The second patch removes the need for the 'default_win' element in the platform data. This element was used to decide whether the video data output from the controller should be enabled or disabled when the window specified by 'default_win' is enabled or disabled. With the first patch removing the need for atleast one window to be of the same resolution as that of the lcd panel, it is now possible to decide when to enable/disable the video data output based on the state of each window. If any of the window is active, the lcd data output is enabled. Otherwise, the lcd data output is disabled. Hence, the 'default_win' parameter from the platform data can be removed, which anyways cannot be specified when using device tree.
The third patch reworks the display controller's platform data that was used to supply video timing information for two different panels on the mini6410 and real6410 boards. That was not the correct usage of the window data and hence reworks the runtime handling of two different lcd panels.
For all the Samsung SoC based boards, the forth patch reworks the platform data of the display controller based on the changes introduced in the first two patches.
This patch series is based on
http://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git [for-next]
with all patches merged from
https://github.com/schandinat/linux-2.6.git [fbdev-next]
and tested one Exynos4210 based Origen board (only compile tested for other boards)
Thomas Abraham (4):
video: s3c-fb: move video interface timing out of window setup data
video: s3c-fb: remove 'default_win' element from platform data
ARM: s3c64xx: Decouple lcd type from display controller window data
ARM: Samsung: Rework platform data of s3c-fb driver
arch/arm/mach-exynos/mach-nuri.c | 26 +++--- arch/arm/mach-exynos/mach-origen.c | 24 +++-- arch/arm/mach-exynos/mach-smdkv310.c | 28 ++++--- arch/arm/mach-exynos/mach-universal_c210.c | 26 +++--- arch/arm/mach-s3c24xx/mach-smdk2416.c | 27 +++--- arch/arm/mach-s3c64xx/mach-anw6410.c | 25 +++--- arch/arm/mach-s3c64xx/mach-crag6410.c | 25 +++--- arch/arm/mach-s3c64xx/mach-hmt.c | 24 +++-- arch/arm/mach-s3c64xx/mach-mini6410.c | 92 +++++++++++-------- arch/arm/mach-s3c64xx/mach-real6410.c | 90 +++++++++++-------- arch/arm/mach-s3c64xx/mach-smartq5.c | 26 +++--- arch/arm/mach-s3c64xx/mach-smartq7.c | 26 +++--- arch/arm/mach-s3c64xx/mach-smdk6410.c | 25 +++--- arch/arm/mach-s5p64x0/mach-smdk6440.c | 24 +++-- arch/arm/mach-s5p64x0/mach-smdk6450.c | 24 +++-- arch/arm/mach-s5pc100/mach-smdkc100.c | 27 +++--- arch/arm/mach-s5pv210/mach-aquila.c | 36 ++++---- arch/arm/mach-s5pv210/mach-goni.c | 26 +++--- arch/arm/mach-s5pv210/mach-smdkv210.c | 24 +++-- arch/arm/plat-samsung/include/plat/fb.h | 11 ++- drivers/video/s3c-fb.c | 135 +++++++++++++-------------- 21 files changed, 426 insertions(+), 345 deletions(-)
PATCH v3 1/4 video: s3c-fb: move video interface timing out of window setup data
The video interface timing is independent of the window setup data. The resolution of the window can be smaller than that of the lcd panel to which the video data is output.
So move the video timing data from the per-window setup data to the platform specific section in the platform data. This also removes the restriction that atleast one window should have the same resolution as that of the panel attached.
--- arch/arm/plat-samsung/include/plat/fb.h | 9 ++- drivers/video/s3c-fb.c | 112 +++++++++++++++++-------------- 2 files changed, 67 insertions(+), 54 deletions(-)
arch/arm/plat-samsung/include/plat/fb.h +6 -3
@@ -24,15 +24,16 @@/** * struct s3c_fb_pd_win - per window setup data -* @win_mode: The display parameters to initialise (not for window 0) +* @xres : The window X size. +* @yres : The window Y size. * @virtual_x: The virtual X size. * @virtual_y: The virtual Y size. */ struct s3c_fb_pd_win { -struct fb_videomode win_mode; -unsigned short default_bpp;unsigned short max_bpp; +unsigned short xres; +unsigned short yres;unsigned short virtual_x;unsigned short virtual_y; };
@@ -45,6 +46,7 @@ struct s3c_fb_pd_win {* @default_win: default window layer number to be used for UI layer. * @vidcon0: The base vidcon0 values to control the panel data format. * @vidcon1: The base vidcon1 values to control the panel data output. +* @vtiming: Video timing when connected to a RGB type panel. * @win: The setup data for each hardware window, or NULL for unused. * @display_mode: The LCD output display mode. *
@@ -58,6 +60,7 @@ struct s3c_fb_platdata {void (*setup_gpio)(void );struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN ]; +struct fb_videomode *vtiming;u32 default_win;
drivers/video/s3c-fb.c +61 -51
179 lines not on this page · raw message
Signature · 1 line
1.6.6.rc2
PATCH v3 2/4 video: s3c-fb: remove 'default_win' element from platform data
In reply to Thomas AbrahamThe decision to enable or disable the data output to the lcd panel from the controller need not be based on the value of 'default_win' element in the platform data. Instead, the data output to the panel is enabled if any of the windows are active, else data output is disabled.
--- arch/arm/plat-samsung/include/plat/fb.h | 2 -- drivers/video/s3c-fb.c | 25 +++++-------------------- 2 files changed, 5 insertions(+), 22 deletions(-)
arch/arm/plat-samsung/include/plat/fb.h +0 -2
@@ -62,8 +62,6 @@ struct s3c_fb_platdata {struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN ];struct fb_videomode *vtiming; -u32 default_win; -u32 vidcon0;u32 vidcon1; };
drivers/video/s3c-fb.c +5 -20
@@ -531,7 +531,7 @@ static int s3c_fb_set_par(struct fb_info *info)/* disable the window whilst we update it */ writel (0 , regs +WINCON (win_no)); -if (win_no == sfb->pdata->default_win) +if (!sfb->output_on)s3c_fb_enable (sfb,1 );/* write the buffer address */
@@ -799,6 +799,7 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info)struct s3c_fb *sfb = win->parent;unsigned int index = win->index;u32 wincon; +u32 output_on = sfb->output_on;dev_dbg (sfb->dev,"blank mode %d\n" , blank_mode);
@@ -837,34 +838,18 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info)shadow_protect_win (win,1 );writel (wincon, sfb->regs + sfb->variant.wincon + (index *4 )); -shadow_protect_win (win,0 );/* Check the enabled state to see if we need to be running the * main LCD interface, as if there are no active windows then * it is highly likely that we also do not need to output * anything. */ - -/* We could do something like the following code, but the current -* system of using framebuffer events means that we cannot make -* the distinction between just window 0 being inactive and all -* the windows being down. -* -* s3c_fb_enable(sfb, sfb->enabled ? 1 : 0); -*/ - -/* we're stuck with this until we can do something about overriding -* the power control using the blanking event for a single fb. -*/ -if (index == sfb->pdata->default_win) { -shadow_protect_win (win,1 ); -s3c_fb_enable (sfb, blank_mode !=FB_BLANK_POWERDOWN ?1 :0 ); -shadow_protect_win (win,0 ); - } +s3c_fb_enable (sfb, sfb->enabled ?1 :0 ); +shadow_protect_win (win,0 );pm_runtime_put_sync (sfb->dev); -return 0 ; +return output_on == sfb->output_on; }/**
Signature · 1 line
1.6.6.rc2
PATCH v3 3/4 ARM: s3c64xx: Decouple lcd type from display controller window data
In reply to Thomas AbrahamThe display controller window data should contain window configuration data for only one type of lcd panel. So, for real6410 and mini6410 boards, split the existing display controller window data, which contains window configuration data for two different types of lcd panels, into two seperate instances and register one of them depending on the type of the lcd panel detected at runtime.
This is a prerequisite change for a subsequent commit that reorders the platform data of display controller by moving video interface timing out of window setup data.
--- arch/arm/mach-s3c64xx/mach-mini6410.c | 82 +++++++++++++++++--------------- arch/arm/mach-s3c64xx/mach-real6410.c | 82 +++++++++++++++++--------------- 2 files changed, 88 insertions(+), 76 deletions(-)
arch/arm/mach-s3c64xx/mach-mini6410.c +44 -38
@@ -151,41 +151,49 @@ static struct s3c2410_platform_nand mini6410_nand_info = { .sets = mini6410_nand_sets, }; -static struct s3c_fb_pd_win mini6410_fb_win[] = { - { - .win_mode = {/* 4.3" 480x272 */ - .left_margin =3 , - .right_margin =2 , - .upper_margin =1 , - .lower_margin =1 , - .hsync_len =40 , - .vsync_len =1 , - .xres =480 , - .yres =272 , - }, - .max_bpp =32 , - .default_bpp =16 , - }, { - .win_mode = {/* 7.0" 800x480 */ - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, - .max_bpp =32 , - .default_bpp =16 , +static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = { + .win_mode = {/* 4.3" 480x272 */ + .left_margin =3 , + .right_margin =2 , + .upper_margin =1 , + .lower_margin =1 , + .hsync_len =40 , + .vsync_len =1 , + .xres =480 , + .yres =272 , }, + .max_bpp =32 , + .default_bpp =16 , }; -static struct s3c_fb_platdata mini6410_lcd_pdata__initdata = { - .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, - .win[0 ] = &mini6410_fb_win[0 ], - .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , - .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , +static struct s3c_fb_pd_win mini6410_lcd_type1_fb_win = { + .win_mode = {/* 7.0" 800x480 */ + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + }, + .max_bpp =32 , + .default_bpp =16 , +}; + +static struct s3c_fb_platdata mini6410_lcd_pdata[]__initdata = { + { + .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .win[0 ] = &mini6410_lcd_type0_fb_win, + .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , + .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , + }, { + .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .win[0 ] = &mini6410_lcd_type1_fb_win, + .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , + .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , + }, + { }, }; static void mini6410_lcd_power_set(struct plat_lcd_data *pd,
@@ -283,7 +291,7 @@ static void mini6410_parse_features( "screen type already set\n", f); }else {int li = f -'0' ; -if (li >=ARRAY_SIZE (mini6410_fb_win)) +if (li >=ARRAY_SIZE (mini6410_lcd_pdata))printk (KERN_INFO "MINI6410: '%c' out " "of range LCD mode\n" , f);else {
@@ -307,14 +315,12 @@ static void __init mini6410_machine_init(void)/* Parse the feature string */ mini6410_parse_features (&features, mini6410_features_str); - mini6410_lcd_pdata.win[0 ] = &mini6410_fb_win[features.lcd_index]; -printk (KERN_INFO "MINI6410: selected LCD display is %dx%d\n" , - mini6410_lcd_pdata.win[0 ]->win_mode.xres, - mini6410_lcd_pdata.win[0 ]->win_mode.yres); + mini6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.xres, + mini6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.yres);s3c_nand_set_platdata (&mini6410_nand_info); -s3c_fb_set_platdata (&mini6410_lcd_pdata); +s3c_fb_set_platdata (&mini6410_lcd_pdata[features.lcd_index]);s3c24xx_ts_set_platdata (NULL );/* configure nCS1 width to 16 bits */
arch/arm/mach-s3c64xx/mach-real6410.c +44 -38
105 lines not on this page · raw message
Signature · 1 line
1.6.6.rc2
PATCH v3 3/4 ARM: s3c64xx: Decouple lcd type from display controller window data
Quoted 9 lines · Thomas Abraham
Subject: [PATCH v3 3/4] ARM: s3c64xx: Decouple lcd type from display controller window data
The display controller window data should contain window configuration data for only one type of lcd panel. So, for real6410 and mini6410 boards, split the existing display controller window data, which contains window configuration data for two different types of lcd panels, into two seperate instances and register one of them depending on the type of the lcd panel detected at runtime.
Quoted 6 lines
This is a prerequisite change for a subsequent commit that reorders the platform data of display controller by moving video interface timing out of window setup data.
Cc Darius Augulis <[email protected]>Cc Jingoo Han <[email protected]>
It looks good.
Quoted 233 lines
Signed-off-by Thomas Abraham <[email protected]>--- arch/arm/mach-s3c64xx/mach-mini6410.c | 82 +++++++++++++++++--------------- arch/arm/mach-s3c64xx/mach-real6410.c | 82 +++++++++++++++++--------------- 2 files changed, 88 insertions(+), 76 deletions(-)arch/arm/mach-s3c64xx/mach-mini6410.c +44
-38@@ -151,41 +151,49 @@ static struct s3c2410_platform_nand mini6410_nand_info = { .sets = mini6410_nand_sets, }; -static struct s3c_fb_pd_win mini6410_fb_win[] = { - { - .win_mode = {/* 4.3" 480x272 */ - .left_margin =3 , - .right_margin =2 , - .upper_margin =1 , - .lower_margin =1 , - .hsync_len =40 , - .vsync_len =1 , - .xres =480 , - .yres =272 , - }, - .max_bpp =32 , - .default_bpp =16 , - }, { - .win_mode = {/* 7.0" 800x480 */ - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, - .max_bpp =32 , - .default_bpp =16 , +static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = { + .win_mode = {/* 4.3" 480x272 */ + .left_margin =3 , + .right_margin =2 , + .upper_margin =1 , + .lower_margin =1 , + .hsync_len =40 , + .vsync_len =1 , + .xres =480 , + .yres =272 , }, + .max_bpp =32 , + .default_bpp =16 , }; -static struct s3c_fb_platdata mini6410_lcd_pdata__initdata = { - .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, - .win[0 ] = &mini6410_fb_win[0 ], - .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , - .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , +static struct s3c_fb_pd_win mini6410_lcd_type1_fb_win = { + .win_mode = {/* 7.0" 800x480 */ + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + }, + .max_bpp =32 , + .default_bpp =16 , +}; + +static struct s3c_fb_platdata mini6410_lcd_pdata[]__initdata = { + { + .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .win[0 ] = &mini6410_lcd_type0_fb_win, + .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , + .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , + }, { + .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .win[0 ] = &mini6410_lcd_type1_fb_win, + .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , + .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , + }, + { }, }; static void mini6410_lcd_power_set(struct plat_lcd_data *pd,@@ -283,7 +291,7 @@ static void mini6410_parse_features( "screen type already set\n", f); }else {int li = f -'0' ; -if (li >=ARRAY_SIZE (mini6410_fb_win)) +if (li >=ARRAY_SIZE (mini6410_lcd_pdata))printk (KERN_INFO "MINI6410: '%c' out " "of range LCD mode\n" , f);else {@@ -307,14 +315,12 @@ static void __init mini6410_machine_init(void)/* Parse the feature string */ mini6410_parse_features (&features, mini6410_features_str); - mini6410_lcd_pdata.win[0 ] = &mini6410_fb_win[features.lcd_index]; -printk (KERN_INFO "MINI6410: selected LCD display is %dx%d\n" , - mini6410_lcd_pdata.win[0 ]->win_mode.xres, - mini6410_lcd_pdata.win[0 ]->win_mode.yres); + mini6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.xres, + mini6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.yres);s3c_nand_set_platdata (&mini6410_nand_info); -s3c_fb_set_platdata (&mini6410_lcd_pdata); +s3c_fb_set_platdata (&mini6410_lcd_pdata[features.lcd_index]);s3c24xx_ts_set_platdata (NULL );/* configure nCS1 width to 16 bits */ arch/arm/mach-s3c64xx/mach-real6410.c +44
-39@@ -117,41 +117,49 @@ static struct platform_device real6410_device_eth = { }, }; -static struct s3c_fb_pd_win real6410_fb_win[] = { - { - .win_mode = {/* 4.3" 480x272 */ - .left_margin =3 , - .right_margin =2 , - .upper_margin =1 , - .lower_margin =1 , - .hsync_len =40 , - .vsync_len =1 , - .xres =480 , - .yres =272 , - }, - .max_bpp =32 , - .default_bpp =16 , - }, { - .win_mode = {/* 7.0" 800x480 */ - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, - .max_bpp =32 , - .default_bpp =16 , +static struct s3c_fb_pd_win real6410_lcd_type0_fb_win = { + .win_mode = {/* 4.3" 480x272 */ + .left_margin =3 , + .right_margin =2 , + .upper_margin =1 , + .lower_margin =1 , + .hsync_len =40 , + .vsync_len =1 , + .xres =480 , + .yres =272 , }, + .max_bpp =32 , + .default_bpp =16 , }; -static struct s3c_fb_platdata real6410_lcd_pdata__initdata = { - .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, - .win[0 ] = &real6410_fb_win[0 ], - .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , - .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , +static struct s3c_fb_pd_win real6410_lcd_type1_fb_win = { + .win_mode = {/* 7.0" 800x480 */ + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + }, + .max_bpp =32 , + .default_bpp =16 , +}; + +static struct s3c_fb_platdata real6410_lcd_pdata[]__initdata = { + { + .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .win[0 ] = &real6410_lcd_type0_fb_win, + .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , + .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , + }, { + .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .win[0 ] = &real6410_lcd_type1_fb_win, + .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , + .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , + }, + { }, };static struct mtd_partition real6410_nand_part[] = {@@ -264,7 +272,7 @@ static void real6410_parse_features( "screen type already set\n", f); }else {int li = f -'0' ; -if (li >=ARRAY_SIZE (real6410_fb_win)) +if (li >=ARRAY_SIZE (real6410_lcd_pdata))printk (KERN_INFO "REAL6410: '%c' out " "of range LCD mode\n" , f);else {@@ -288,13 +296,11 @@ static void __init real6410_machine_init(void)/* Parse the feature string */ real6410_parse_features (&features, real6410_features_str); - real6410_lcd_pdata.win[0 ] = &real6410_fb_win[features.lcd_index]; -printk (KERN_INFO "REAL6410: selected LCD display is %dx%d\n" , - real6410_lcd_pdata.win[0 ]->win_mode.xres, - real6410_lcd_pdata.win[0 ]->win_mode.yres); + real6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.xres, + real6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.yres); -s3c_fb_set_platdata (&real6410_lcd_pdata); +s3c_fb_set_platdata (&real6410_lcd_pdata[features.lcd_index]);s3c_nand_set_platdata (&real6410_nand_info);s3c24xx_ts_set_platdata (NULL ); --1.6.6.rc2
PATCH v3 4/4 ARM: Samsung: Rework platform data of s3c-fb driver
In reply to Thomas AbrahamFor all the Samsung SoC based boards which have the platform data for s3c-fb driver, the 'default_win' element in the platform data is removed and the lcd panel video timing values are moved out of individual window configuration data.
--- arch/arm/mach-exynos/mach-nuri.c | 26 ++++++++------ arch/arm/mach-exynos/mach-origen.c | 24 +++++++----- arch/arm/mach-exynos/mach-smdkv310.c | 28 ++++++++------ arch/arm/mach-exynos/mach-universal_c210.c | 26 ++++++++------ arch/arm/mach-s3c24xx/mach-smdk2416.c | 27 ++++++++------ arch/arm/mach-s3c64xx/mach-anw6410.c | 25 +++++++------ arch/arm/mach-s3c64xx/mach-crag6410.c | 25 +++++++------ arch/arm/mach-s3c64xx/mach-hmt.c | 24 +++++++----- arch/arm/mach-s3c64xx/mach-mini6410.c | 54 ++++++++++++++++----------- arch/arm/mach-s3c64xx/mach-real6410.c | 52 +++++++++++++++----------- arch/arm/mach-s3c64xx/mach-smartq5.c | 26 ++++++++------ arch/arm/mach-s3c64xx/mach-smartq7.c | 26 ++++++++------ arch/arm/mach-s3c64xx/mach-smdk6410.c | 25 +++++++------ arch/arm/mach-s5p64x0/mach-smdk6440.c | 24 +++++++----- arch/arm/mach-s5p64x0/mach-smdk6450.c | 24 +++++++----- arch/arm/mach-s5pc100/mach-smdkc100.c | 27 ++++++++------ arch/arm/mach-s5pv210/mach-aquila.c | 36 ++++++++---------- arch/arm/mach-s5pv210/mach-goni.c | 26 ++++++++------ arch/arm/mach-s5pv210/mach-smdkv210.c | 24 +++++++----- 19 files changed, 311 insertions(+), 238 deletions(-)
arch/arm/mach-exynos/mach-nuri.c +15 -11
@@ -212,25 +212,29 @@ static struct platform_device nuri_gpio_keys = {/* Frame Buffer */ static struct s3c_fb_pd_win nuri_fb_win0 = { - .win_mode = { - .left_margin =64 , - .right_margin =16 , - .upper_margin =64 , - .lower_margin =1 , - .hsync_len =48 , - .vsync_len =3 , - .xres =1024 , - .yres =600 , - .refresh =60 , - }, .max_bpp =24 , .default_bpp =16 , + .xres =1024 , + .yres =600 , .virtual_x =1024 , .virtual_y =2 *600 , }; +static struct fb_videomode nuri_lcd_timing = { + .left_margin =64 , + .right_margin =16 , + .upper_margin =64 , + .lower_margin =1 , + .hsync_len =48 , + .vsync_len =3 , + .xres =1024 , + .yres =600 , + .refresh =60 , +}; +static struct s3c_fb_platdata nuri_fb_pdata__initdata = { .win[0 ] = &nuri_fb_win0, + .vtiming = &nuri_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB |VIDCON0_CLKSEL_LCD , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,
arch/arm/mach-exynos/mach-origen.c +14 -10
@@ -583,22 +583,26 @@ static struct platform_device origen_lcd_hv070wsa = { };static struct s3c_fb_pd_win origen_fb_win0 = { - .win_mode = { - .left_margin =64 , - .right_margin =16 , - .upper_margin =64 , - .lower_margin =16 , - .hsync_len =48 , - .vsync_len =3 , - .xres =1024 , - .yres =600 , - }, + .xres =1024 , + .yres =600 , .max_bpp =32 , .default_bpp =24 , }; +static struct fb_videomode origen_lcd_timing = { + .left_margin =64 , + .right_margin =16 , + .upper_margin =64 , + .lower_margin =16 , + .hsync_len =48 , + .vsync_len =3 , + .xres =1024 , + .yres =600 , +}; +static struct s3c_fb_platdata origen_lcd_pdata__initdata = { .win[0 ] = &origen_fb_win0, + .vtiming = &origen_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC |VIDCON1_INV_VCLK ,
arch/arm/mach-exynos/mach-smdkv310.c +16 -12
@@ -157,22 +157,26 @@ static struct platform_device smdkv310_lcd_lte480wv = { };static struct s3c_fb_pd_win smdkv310_fb_win0 = { - .win_mode = { - .left_margin =13 , - .right_margin =8 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, - .max_bpp =32 , - .default_bpp =24 , + .max_bpp =32 , + .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdkv310_lcd_timing = { + .left_margin =13 , + .right_margin =8 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdkv310_lcd0_pdata__initdata = { .win[0 ] = &smdkv310_fb_win0, + .vtiming = &smdkv310_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
arch/arm/mach-exynos/mach-universal_c210.c +15 -11
@@ -813,25 +813,29 @@ static struct i2c_board_info i2c1_devs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win universal_fb_win0 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =2 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =1 , - .xres =480 , - .yres =800 , - .refresh =55 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , .virtual_x =480 , .virtual_y =2 *800 , }; +static struct fb_videomode universal_lcd_timing = { + .left_margin =16 , + .right_margin =16 , + .upper_margin =2 , + .lower_margin =28 , + .hsync_len =2 , + .vsync_len =1 , + .xres =480 , + .yres =800 , + .refresh =55 , +}; +static struct s3c_fb_platdata universal_lcd_pdata__initdata = { .win[0 ] = &universal_fb_win0, + .vtiming = &universal_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB |VIDCON0_CLKSEL_LCD , .vidcon1 =VIDCON1_INV_VCLK |VIDCON1_INV_VDEN
arch/arm/mach-s3c24xx/mach-smdk2416.c +15 -12
@@ -148,23 +148,25 @@ static struct s3c24xx_hsudc_platdata smdk2416_hsudc_platdata = {static struct s3c_fb_pd_win smdk2416_fb_win[] = { [0 ] = { -/* think this is the same as the smdk6410 */ - .win_mode = { - .pixclock =41094 , - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .default_bpp =16 , .max_bpp =32 , + .xres =800 , + .yres =480 , }, }; +static struct fb_videomode smdk2416_lcd_timing = { + .pixclock =41094 , + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , +}; +static void s3c2416_fb_gpio_setup_24bpp (void ) {unsigned int gpio;
@@ -187,6 +189,7 @@ static void s3c2416_fb_gpio_setup_24bpp(void)static struct s3c_fb_platdata smdk2416_fb_platdata = { .win[0 ] = &smdk2416_fb_win[0 ], + .vtiming = &smdk2416_lcd_timing, .setup_gpio = s3c2416_fb_gpio_setup_24bpp, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,
arch/arm/mach-s3c64xx/mach-anw6410.c +14 -11
@@ -134,24 +134,27 @@ static struct platform_device anw6410_lcd_powerdev = { };static struct s3c_fb_pd_win anw6410_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode anw6410_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata anw6410_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &anw6410_lcd_timing, .win[0 ] = &anw6410_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,
arch/arm/mach-s3c64xx/mach-crag6410.c +14 -11
@@ -151,26 +151,29 @@ static struct platform_device crag6410_lcd_powerdev = {/* 640x480 URT */ static struct s3c_fb_pd_win crag6410_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =150 , - .right_margin =80 , - .upper_margin =40 , - .lower_margin =5 , - .hsync_len =40 , - .vsync_len =5 , - .xres =640 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =640 , + .yres =480 , .virtual_y =480 *2 , .virtual_x =640 , }; +static struct fb_videomode crag6410_lcd_timing = { + .left_margin =150 , + .right_margin =80 , + .upper_margin =40 , + .lower_margin =5 , + .hsync_len =40 , + .vsync_len =5 , + .xres =640 , + .yres =480 , +}; +/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata crag6410_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &crag6410_lcd_timing, .win[0 ] = &crag6410_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,
arch/arm/mach-s3c64xx/mach-hmt.c +14 -10
@@ -129,23 +129,27 @@ static struct platform_device hmt_backlight_device = { };static struct s3c_fb_pd_win hmt_fb_win0 = { - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode hmt_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata hmt_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &hmt_lcd_timing, .win[0 ] = &hmt_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,
arch/arm/mach-s3c64xx/mach-mini6410.c +32 -22
83 lines not on this page · raw message
arch/arm/mach-s3c64xx/mach-real6410.c +30 -22
81 lines not on this page · raw message
arch/arm/mach-s3c64xx/mach-smartq5.c +15 -11
@@ -108,23 +108,27 @@ static struct platform_device smartq5_buttons_device = { };static struct s3c_fb_pd_win smartq5_fb_win0 = { - .win_mode = { - .left_margin =216 , - .right_margin =40 , - .upper_margin =35 , - .lower_margin =10 , - .hsync_len =1 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - .refresh =80 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smartq5_lcd_timing = { + .left_margin =216 , + .right_margin =40 , + .upper_margin =35 , + .lower_margin =10 , + .hsync_len =1 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + .refresh =80 , };static struct s3c_fb_platdata smartq5_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &smartq5_lcd_timing, .win[0 ] = &smartq5_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
arch/arm/mach-s3c64xx/mach-smartq7.c +15 -11
@@ -124,23 +124,27 @@ static struct platform_device smartq7_buttons_device = { };static struct s3c_fb_pd_win smartq7_fb_win0 = { - .win_mode = { - .left_margin =3 , - .right_margin =5 , - .upper_margin =1 , - .lower_margin =20 , - .hsync_len =10 , - .vsync_len =3 , - .xres =800 , - .yres =480 , - .refresh =80 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smartq7_lcd_timing = { + .left_margin =3 , + .right_margin =5 , + .upper_margin =1 , + .lower_margin =20 , + .hsync_len =10 , + .vsync_len =3 , + .xres =800 , + .yres =480 , + .refresh =80 , };static struct s3c_fb_platdata smartq7_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &smartq7_lcd_timing, .win[0 ] = &smartq7_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
arch/arm/mach-s3c64xx/mach-smdk6410.c +14 -11
@@ -146,26 +146,29 @@ static struct platform_device smdk6410_lcd_powerdev = { };static struct s3c_fb_pd_win smdk6410_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , .virtual_y =480 *2 , .virtual_x =800 , }; +static struct fb_videomode smdk6410_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , +}; +/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata smdk6410_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &smdk6410_lcd_timing, .win[0 ] = &smdk6410_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,
arch/arm/mach-s5p64x0/mach-smdk6440.c +14 -10
@@ -103,22 +103,26 @@ static struct s3c2410_uartcfg smdk6440_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win smdk6440_fb_win0 = { - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdk6440_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdk6440_lcd_pdata__initdata = { .win[0 ] = &smdk6440_fb_win0, + .vtiming = &smdk6440_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5p64x0_fb_gpio_setup_24bpp,
arch/arm/mach-s5p64x0/mach-smdk6450.c +14 -10
@@ -121,22 +121,26 @@ static struct s3c2410_uartcfg smdk6450_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win smdk6450_fb_win0 = { - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdk6450_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdk6450_lcd_pdata__initdata = { .win[0 ] = &smdk6450_fb_win0, + .vtiming = &smdk6450_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5p64x0_fb_gpio_setup_24bpp,
arch/arm/mach-s5pc100/mach-smdkc100.c +15 -12
@@ -136,24 +136,27 @@ static struct platform_device smdkc100_lcd_powerdev = {/* Frame Buffer */ static struct s3c_fb_pd_win smdkc100_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - .refresh =80 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdkc100_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + .refresh =80 , };static struct s3c_fb_platdata smdkc100_lcd_pdata__initdata = { .win[0 ] = &smdkc100_fb_win0, + .vtiming = &smdkc100_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5pc100_fb_gpio_setup_24bpp,
arch/arm/mach-s5pv210/mach-aquila.c +16 -20
@@ -96,38 +96,34 @@ static struct s3c2410_uartcfg aquila_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win aquila_fb_win0 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =3 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =2 , - .xres =480 , - .yres =800 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , };static struct s3c_fb_pd_win aquila_fb_win1 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =3 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =2 , - .xres =480 , - .yres =800 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , +}; + +static struct fb_videomode aquila_lcd_timing = { + .left_margin =16 , + .right_margin =16 , + .upper_margin =3 , + .lower_margin =28 , + .hsync_len =2 , + .vsync_len =2 , + .xres =480 , + .yres =800 , };static struct s3c_fb_platdata aquila_lcd_pdata__initdata = { .win[0 ] = &aquila_fb_win0, .win[1 ] = &aquila_fb_win1, + .vtiming = &aquila_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC |VIDCON1_INV_VCLK |VIDCON1_INV_VDEN ,
arch/arm/mach-s5pv210/mach-goni.c +15 -11
@@ -105,25 +105,29 @@ static struct s3c2410_uartcfg goni_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win goni_fb_win0 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =2 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =1 , - .xres =480 , - .yres =800 , - .refresh =55 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , .virtual_x =480 , .virtual_y =2 *800 , }; +static struct fb_videomode goni_lcd_timing = { + .left_margin =16 , + .right_margin =16 , + .upper_margin =2 , + .lower_margin =28 , + .hsync_len =2 , + .vsync_len =1 , + .xres =480 , + .yres =800 , + .refresh =55 , +}; +static struct s3c_fb_platdata goni_lcd_pdata__initdata = { .win[0 ] = &goni_fb_win0, + .vtiming = &goni_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB |VIDCON0_CLKSEL_LCD , .vidcon1 =VIDCON1_INV_VCLK |VIDCON1_INV_VDEN
arch/arm/mach-s5pv210/mach-smdkv210.c +14 -10
@@ -189,22 +189,26 @@ static struct platform_device smdkv210_lcd_lte480wv = { };static struct s3c_fb_pd_win smdkv210_fb_win0 = { - .win_mode = { - .left_margin =13 , - .right_margin =8 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdkv210_lcd_timing = { + .left_margin =13 , + .right_margin =8 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdkv210_lcd0_pdata__initdata = { .win[0 ] = &smdkv210_fb_win0, + .vtiming = &smdkv210_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5pv210_fb_gpio_setup_24bpp,
Signature · 1 line
1.6.6.rc2
PATCH v3 4/4 ARM: Samsung: Rework platform data of s3c-fb driver
Quoted 8 lines · Thomas Abraham
Subject: [PATCH v3 4/4] ARM: Samsung: Rework platform data of s3c-fb driver
For all the Samsung SoC based boards which have the platform data for s3c-fb driver, the '
default_win' element in the platform data is removed and the lcd panel video timing values are moved out of individual window configuration data.Cc Jingoo Han <[email protected]>
It looks good for SMDK boards.
Quoted 967 lines
Cc Kyungmin Park <[email protected]>Cc JeongHyeon Kim <[email protected]>Cc Kukjin Kim <[email protected]>Cc Heiko Stuebner <[email protected]>Cc Ben Dooks <[email protected]>Cc Kwangwoo Lee <[email protected]>Cc Mark Brown <[email protected]>Cc Peter Korsgaard <[email protected]>Cc Darius Augulis <[email protected]>Cc Maurus Cuelenaere <[email protected]>Signed-off-by Thomas Abraham <[email protected]>--- arch/arm/mach-exynos/mach-nuri.c | 26 ++++++++------ arch/arm/mach-exynos/mach-origen.c | 24 +++++++----- arch/arm/mach-exynos/mach-smdkv310.c | 28 ++++++++------ arch/arm/mach-exynos/mach-universal_c210.c | 26 ++++++++------ arch/arm/mach-s3c24xx/mach-smdk2416.c | 27 ++++++++------ arch/arm/mach-s3c64xx/mach-anw6410.c | 25 +++++++------ arch/arm/mach-s3c64xx/mach-crag6410.c | 25 +++++++------ arch/arm/mach-s3c64xx/mach-hmt.c | 24 +++++++----- arch/arm/mach-s3c64xx/mach-mini6410.c | 54 ++++++++++++++++----------- arch/arm/mach-s3c64xx/mach-real6410.c | 52 +++++++++++++++----------- arch/arm/mach-s3c64xx/mach-smartq5.c | 26 ++++++++------ arch/arm/mach-s3c64xx/mach-smartq7.c | 26 ++++++++------ arch/arm/mach-s3c64xx/mach-smdk6410.c | 25 +++++++------ arch/arm/mach-s5p64x0/mach-smdk6440.c | 24 +++++++----- arch/arm/mach-s5p64x0/mach-smdk6450.c | 24 +++++++----- arch/arm/mach-s5pc100/mach-smdkc100.c | 27 ++++++++------ arch/arm/mach-s5pv210/mach-aquila.c | 36 ++++++++---------- arch/arm/mach-s5pv210/mach-goni.c | 26 ++++++++------ arch/arm/mach-s5pv210/mach-smdkv210.c | 24 +++++++----- 19 files changed, 311 insertions(+), 238 deletions(-)arch/arm/mach-exynos/mach-nuri.c +15
-11@@ -212,25 +212,29 @@ static struct platform_device nuri_gpio_keys = {/* Frame Buffer */ static struct s3c_fb_pd_win nuri_fb_win0 = { - .win_mode = { - .left_margin =64 , - .right_margin =16 , - .upper_margin =64 , - .lower_margin =1 , - .hsync_len =48 , - .vsync_len =3 , - .xres =1024 , - .yres =600 , - .refresh =60 , - }, .max_bpp =24 , .default_bpp =16 , + .xres =1024 , + .yres =600 , .virtual_x =1024 , .virtual_y =2 *600 , }; +static struct fb_videomode nuri_lcd_timing = { + .left_margin =64 , + .right_margin =16 , + .upper_margin =64 , + .lower_margin =1 , + .hsync_len =48 , + .vsync_len =3 , + .xres =1024 , + .yres =600 , + .refresh =60 , +}; +static struct s3c_fb_platdata nuri_fb_pdata__initdata = { .win[0 ] = &nuri_fb_win0, + .vtiming = &nuri_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB |VIDCON0_CLKSEL_LCD , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,arch/arm/mach-exynos/mach-origen.c +14
-10@@ -583,22 +583,26 @@ static struct platform_device origen_lcd_hv070wsa = { };static struct s3c_fb_pd_win origen_fb_win0 = { - .win_mode = { - .left_margin =64 , - .right_margin =16 , - .upper_margin =64 , - .lower_margin =16 , - .hsync_len =48 , - .vsync_len =3 , - .xres =1024 , - .yres =600 , - }, + .xres =1024 , + .yres =600 , .max_bpp =32 , .default_bpp =24 , }; +static struct fb_videomode origen_lcd_timing = { + .left_margin =64 , + .right_margin =16 , + .upper_margin =64 , + .lower_margin =16 , + .hsync_len =48 , + .vsync_len =3 , + .xres =1024 , + .yres =600 , +}; +static struct s3c_fb_platdata origen_lcd_pdata__initdata = { .win[0 ] = &origen_fb_win0, + .vtiming = &origen_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC |VIDCON1_INV_VCLK ,arch/arm/mach-exynos/mach-smdkv310.c +16
-12@@ -157,22 +157,26 @@ static struct platform_device smdkv310_lcd_lte480wv = { };static struct s3c_fb_pd_win smdkv310_fb_win0 = { - .win_mode = { - .left_margin =13 , - .right_margin =8 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, - .max_bpp =32 , - .default_bpp =24 , + .max_bpp =32 , + .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdkv310_lcd_timing = { + .left_margin =13 , + .right_margin =8 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdkv310_lcd0_pdata__initdata = { .win[0 ] = &smdkv310_fb_win0, + .vtiming = &smdkv310_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,arch/arm/mach-exynos/mach-universal_c210.c +15
-11@@ -813,25 +813,29 @@ static struct i2c_board_info i2c1_devs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win universal_fb_win0 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =2 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =1 , - .xres =480 , - .yres =800 , - .refresh =55 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , .virtual_x =480 , .virtual_y =2 *800 , }; +static struct fb_videomode universal_lcd_timing = { + .left_margin =16 , + .right_margin =16 , + .upper_margin =2 , + .lower_margin =28 , + .hsync_len =2 , + .vsync_len =1 , + .xres =480 , + .yres =800 , + .refresh =55 , +}; +static struct s3c_fb_platdata universal_lcd_pdata__initdata = { .win[0 ] = &universal_fb_win0, + .vtiming = &universal_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB |VIDCON0_CLKSEL_LCD , .vidcon1 =VIDCON1_INV_VCLK |VIDCON1_INV_VDEN arch/arm/mach-s3c24xx/mach-smdk2416.c +15
-12@@ -148,23 +148,25 @@ static struct s3c24xx_hsudc_platdata smdk2416_hsudc_platdata = {static struct s3c_fb_pd_win smdk2416_fb_win[] = { [0 ] = { -/* think this is the same as the smdk6410 */ - .win_mode = { - .pixclock =41094 , - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .default_bpp =16 , .max_bpp =32 , + .xres =800 , + .yres =480 , }, }; +static struct fb_videomode smdk2416_lcd_timing = { + .pixclock =41094 , + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , +}; +static void s3c2416_fb_gpio_setup_24bpp (void ) {unsigned int gpio;@@ -187,6 +189,7 @@ static void s3c2416_fb_gpio_setup_24bpp(void)static struct s3c_fb_platdata smdk2416_fb_platdata = { .win[0 ] = &smdk2416_fb_win[0 ], + .vtiming = &smdk2416_lcd_timing, .setup_gpio = s3c2416_fb_gpio_setup_24bpp, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,arch/arm/mach-s3c64xx/mach-anw6410.c +14
-11@@ -134,24 +134,27 @@ static struct platform_device anw6410_lcd_powerdev = { };static struct s3c_fb_pd_win anw6410_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode anw6410_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata anw6410_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &anw6410_lcd_timing, .win[0 ] = &anw6410_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,arch/arm/mach-s3c64xx/mach-crag6410.c +14
-11@@ -151,26 +151,29 @@ static struct platform_device crag6410_lcd_powerdev = {/* 640x480 URT */ static struct s3c_fb_pd_win crag6410_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =150 , - .right_margin =80 , - .upper_margin =40 , - .lower_margin =5 , - .hsync_len =40 , - .vsync_len =5 , - .xres =640 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =640 , + .yres =480 , .virtual_y =480 *2 , .virtual_x =640 , }; +static struct fb_videomode crag6410_lcd_timing = { + .left_margin =150 , + .right_margin =80 , + .upper_margin =40 , + .lower_margin =5 , + .hsync_len =40 , + .vsync_len =5 , + .xres =640 , + .yres =480 , +}; +/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata crag6410_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &crag6410_lcd_timing, .win[0 ] = &crag6410_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,arch/arm/mach-s3c64xx/mach-hmt.c +14
-10@@ -129,23 +129,27 @@ static struct platform_device hmt_backlight_device = { };static struct s3c_fb_pd_win hmt_fb_win0 = { - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode hmt_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata hmt_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &hmt_lcd_timing, .win[0 ] = &hmt_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,arch/arm/mach-s3c64xx/mach-mini6410.c +32
-22@@ -152,43 +152,53 @@ static struct s3c2410_platform_nand mini6410_nand_info = { };static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = { - .win_mode = {/* 4.3" 480x272 */ - .left_margin =3 , - .right_margin =2 , - .upper_margin =1 , - .lower_margin =1 , - .hsync_len =40 , - .vsync_len =1 , - .xres =480 , - .yres =272 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =272 , +}; + +static struct fb_videomode mini6410_lcd_type0_timing = { +/* 4.3" 480x272 */ + .left_margin =3 , + .right_margin =2 , + .upper_margin =1 , + .lower_margin =1 , + .hsync_len =40 , + .vsync_len =1 , + .xres =480 , + .yres =272 , };static struct s3c_fb_pd_win mini6410_lcd_type1_fb_win = { - .win_mode = {/* 7.0" 800x480 */ - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode mini6410_lcd_type1_timing = { +/* 7.0" 800x480 */ + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata mini6410_lcd_pdata[]__initdata = { { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &mini6410_lcd_type0_timing, .win[0 ] = &mini6410_lcd_type0_fb_win, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , }, { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &mini6410_lcd_type1_timing, .win[0 ] = &mini6410_lcd_type1_fb_win, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,@@ -316,8 +326,8 @@ static void __init mini6410_machine_init(void)mini6410_parse_features (&features, mini6410_features_str);printk (KERN_INFO "MINI6410: selected LCD display is %dx%d\n" , - mini6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.xres, - mini6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.yres); + mini6410_lcd_pdata[features.lcd_index].win[0 ]->xres, + mini6410_lcd_pdata[features.lcd_index].win[0 ]->yres);s3c_nand_set_platdata (&mini6410_nand_info);s3c_fb_set_platdata (&mini6410_lcd_pdata[features.lcd_index]);arch/arm/mach-s3c64xx/mach-real6410.c +30
-22@@ -118,43 +118,51 @@ static struct platform_device real6410_device_eth = { };static struct s3c_fb_pd_win real6410_lcd_type0_fb_win = { - .win_mode = {/* 4.3" 480x272 */ - .left_margin =3 , - .right_margin =2 , - .upper_margin =1 , - .lower_margin =1 , - .hsync_len =40 , - .vsync_len =1 , - .xres =480 , - .yres =272 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =272 , +}; + +static struct fb_videomode real6410_lcd_type0_timing = { +/* 4.3" 480x272 */ + .left_margin =3 , + .right_margin =2 , + .upper_margin =1 , + .lower_margin =1 , + .hsync_len =40 , + .vsync_len =1 , };static struct s3c_fb_pd_win real6410_lcd_type1_fb_win = { - .win_mode = {/* 7.0" 800x480 */ - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode real6410_lcd_type1_timing = { +/* 7.0" 800x480 */ + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata real6410_lcd_pdata[]__initdata = { { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &real6410_lcd_type0_timing, .win[0 ] = &real6410_lcd_type0_fb_win, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , }, { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &real6410_lcd_type1_timing, .win[0 ] = &real6410_lcd_type1_fb_win, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,@@ -297,8 +305,8 @@ static void __init real6410_machine_init(void)real6410_parse_features (&features, real6410_features_str);printk (KERN_INFO "REAL6410: selected LCD display is %dx%d\n" , - real6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.xres, - real6410_lcd_pdata[features.lcd_index].win[0 ]->win_mode.yres); + real6410_lcd_pdata[features.lcd_index].win[0 ]->xres, + real6410_lcd_pdata[features.lcd_index].win[0 ]->yres);s3c_fb_set_platdata (&real6410_lcd_pdata[features.lcd_index]);s3c_nand_set_platdata (&real6410_nand_info);arch/arm/mach-s3c64xx/mach-smartq5.c +15
-11@@ -108,23 +108,27 @@ static struct platform_device smartq5_buttons_device = { };static struct s3c_fb_pd_win smartq5_fb_win0 = { - .win_mode = { - .left_margin =216 , - .right_margin =40 , - .upper_margin =35 , - .lower_margin =10 , - .hsync_len =1 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - .refresh =80 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smartq5_lcd_timing = { + .left_margin =216 , + .right_margin =40 , + .upper_margin =35 , + .lower_margin =10 , + .hsync_len =1 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + .refresh =80 , };static struct s3c_fb_platdata smartq5_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &smartq5_lcd_timing, .win[0 ] = &smartq5_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |arch/arm/mach-s3c64xx/mach-smartq7.c +15
-11@@ -124,23 +124,27 @@ static struct platform_device smartq7_buttons_device = { };static struct s3c_fb_pd_win smartq7_fb_win0 = { - .win_mode = { - .left_margin =3 , - .right_margin =5 , - .upper_margin =1 , - .lower_margin =20 , - .hsync_len =10 , - .vsync_len =3 , - .xres =800 , - .yres =480 , - .refresh =80 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smartq7_lcd_timing = { + .left_margin =3 , + .right_margin =5 , + .upper_margin =1 , + .lower_margin =20 , + .hsync_len =10 , + .vsync_len =3 , + .xres =800 , + .yres =480 , + .refresh =80 , };static struct s3c_fb_platdata smartq7_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &smartq7_lcd_timing, .win[0 ] = &smartq7_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |arch/arm/mach-s3c64xx/mach-smdk6410.c +14
-11@@ -146,26 +146,29 @@ static struct platform_device smdk6410_lcd_powerdev = { };static struct s3c_fb_pd_win smdk6410_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , .virtual_y =480 *2 , .virtual_x =800 , }; +static struct fb_videomode smdk6410_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , +}; +/* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ static struct s3c_fb_platdata smdk6410_lcd_pdata__initdata = { .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .vtiming = &smdk6410_lcd_timing, .win[0 ] = &smdk6410_fb_win0, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC ,arch/arm/mach-s5p64x0/mach-smdk6440.c +14
-10@@ -103,22 +103,26 @@ static struct s3c2410_uartcfg smdk6440_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win smdk6440_fb_win0 = { - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdk6440_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdk6440_lcd_pdata__initdata = { .win[0 ] = &smdk6440_fb_win0, + .vtiming = &smdk6440_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5p64x0_fb_gpio_setup_24bpp,arch/arm/mach-s5p64x0/mach-smdk6450.c +14
-10@@ -121,22 +121,26 @@ static struct s3c2410_uartcfg smdk6450_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win smdk6450_fb_win0 = { - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdk6450_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdk6450_lcd_pdata__initdata = { .win[0 ] = &smdk6450_fb_win0, + .vtiming = &smdk6450_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5p64x0_fb_gpio_setup_24bpp,arch/arm/mach-s5pc100/mach-smdkc100.c +15
-12@@ -136,24 +136,27 @@ static struct platform_device smdkc100_lcd_powerdev = {/* Frame Buffer */ static struct s3c_fb_pd_win smdkc100_fb_win0 = { -/* this is to ensure we use win0 */ - .win_mode = { - .left_margin =8 , - .right_margin =13 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - .refresh =80 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdkc100_lcd_timing = { + .left_margin =8 , + .right_margin =13 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , + .refresh =80 , };static struct s3c_fb_platdata smdkc100_lcd_pdata__initdata = { .win[0 ] = &smdkc100_fb_win0, + .vtiming = &smdkc100_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5pc100_fb_gpio_setup_24bpp,arch/arm/mach-s5pv210/mach-aquila.c +16
-20@@ -96,38 +96,34 @@ static struct s3c2410_uartcfg aquila_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win aquila_fb_win0 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =3 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =2 , - .xres =480 , - .yres =800 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , };static struct s3c_fb_pd_win aquila_fb_win1 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =3 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =2 , - .xres =480 , - .yres =800 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , +}; + +static struct fb_videomode aquila_lcd_timing = { + .left_margin =16 , + .right_margin =16 , + .upper_margin =3 , + .lower_margin =28 , + .hsync_len =2 , + .vsync_len =2 , + .xres =480 , + .yres =800 , };static struct s3c_fb_platdata aquila_lcd_pdata__initdata = { .win[0 ] = &aquila_fb_win0, .win[1 ] = &aquila_fb_win1, + .vtiming = &aquila_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC |VIDCON1_INV_VCLK |VIDCON1_INV_VDEN ,arch/arm/mach-s5pv210/mach-goni.c +15
-11@@ -105,25 +105,29 @@ static struct s3c2410_uartcfg goni_uartcfgs[] __initdata = {/* Frame Buffer */ static struct s3c_fb_pd_win goni_fb_win0 = { - .win_mode = { - .left_margin =16 , - .right_margin =16 , - .upper_margin =2 , - .lower_margin =28 , - .hsync_len =2 , - .vsync_len =1 , - .xres =480 , - .yres =800 , - .refresh =55 , - }, .max_bpp =32 , .default_bpp =16 , + .xres =480 , + .yres =800 , .virtual_x =480 , .virtual_y =2 *800 , }; +static struct fb_videomode goni_lcd_timing = { + .left_margin =16 , + .right_margin =16 , + .upper_margin =2 , + .lower_margin =28 , + .hsync_len =2 , + .vsync_len =1 , + .xres =480 , + .yres =800 , + .refresh =55 , +}; +static struct s3c_fb_platdata goni_lcd_pdata__initdata = { .win[0 ] = &goni_fb_win0, + .vtiming = &goni_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB |VIDCON0_CLKSEL_LCD , .vidcon1 =VIDCON1_INV_VCLK |VIDCON1_INV_VDEN arch/arm/mach-s5pv210/mach-smdkv210.c +14
-11@@ -189,22 +189,26 @@ static struct platform_device smdkv210_lcd_lte480wv = { };static struct s3c_fb_pd_win smdkv210_fb_win0 = { - .win_mode = { - .left_margin =13 , - .right_margin =8 , - .upper_margin =7 , - .lower_margin =5 , - .hsync_len =3 , - .vsync_len =1 , - .xres =800 , - .yres =480 , - }, .max_bpp =32 , .default_bpp =24 , + .xres =800 , + .yres =480 , +}; + +static struct fb_videomode smdkv210_lcd_timing = { + .left_margin =13 , + .right_margin =8 , + .upper_margin =7 , + .lower_margin =5 , + .hsync_len =3 , + .vsync_len =1 , + .xres =800 , + .yres =480 , };static struct s3c_fb_platdata smdkv210_lcd0_pdata__initdata = { .win[0 ] = &smdkv210_fb_win0, + .vtiming = &smdkv210_lcd_timing, .vidcon0 =VIDCON0_VIDOUT_RGB |VIDCON0_PNRMODE_RGB , .vidcon1 =VIDCON1_INV_HSYNC |VIDCON1_INV_VSYNC , .setup_gpio = s5pv210_fb_gpio_setup_24bpp, --1.6.6.rc2
v3 cover video: s3c-fb: Rearrange the elements in platform data
In reply to Thomas AbrahamQuoted 52 lines · Thomas Abraham
Changes since v2:
- Patch 3/4 is a new patch in this series. The real6410 and mini6410 boards use the display controllers window configuration data to represent video timing of two different lcd panels. Since the window configuration data should be not be used to specify timing of two different panels, this has been reworked in such a way that two instance of display controller's platform data is setup for the two supported lcd panels. Depending on the lcd panel specified using boot parameters, the corresponding platform data is registered. This maintains backward compatibility with existing functionality of supporting multiple lcd panels at runtime.Changes since v1:
- Includes all changes suggested by Jingoo Han.
- Reworked s3c-fb platform data in all Samsung SoC based board files.This patchset rearranges the elements in the platform data of the s3c-fb driver with the intent of adding device tree support to the driver in subsequent patches.
The first patch moves the video timing information from the individual window setup data into the platform specific configuration section in the platform data. The video timing is independent of the window setup. The resolution of the window could be smaller than that of the lcd panel attached. So the video timing data is removed from window configuration data.
The second patch removes the need for the '
default_win' element in the platform data. This element was used to decide whether the video data output from the controller should be enabled or disabled when the window specified by 'default_win' is enabled or disabled. With the first patch removing the need for atleast one window to be of the same resolution as that of the lcd panel, it is now possible to decide when to enable/disable the video data output based on the state of each window. If any of the window is active, the lcd data output is enabled. Otherwise, the lcd data output is disabled. Hence, the 'default_win' parameter from the platform data can be removed, which anyways cannot be specified when using device tree.The third patch reworks the display controller's platform data that was used to supply video timing information for two different panels on the mini6410 and real6410 boards. That was not the correct usage of the window data and hence reworks the runtime handling of two different lcd panels.
For all the Samsung SoC based boards, the forth patch reworks the platform data of the display controller based on the changes introduced in the first two patches.
This patch series is based on
http://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git [for-next]with all patches merged from
https://github.com/schandinat/linux-2.6.git [fbdev-next]
Quoted 8 lines
and tested one Exynos4210 based Origen board (only compile tested for other boards)
Thomas Abraham (4):
video: s3c-fb: move video interface timing out of window setup data
video: s3c-fb: remove 'default_win' element from platform data
ARM: s3c64xx: Decouple lcd type from display controller window data
ARM: Samsung: Rework platform data of s3c-fb driver
Applied this series.
Thanks,
Florian Tobias Schandinat
Quoted 25 lines
arch/arm/mach-exynos/mach-nuri.c | 26 +++--- arch/arm/mach-exynos/mach-origen.c | 24 +++-- arch/arm/mach-exynos/mach-smdkv310.c | 28 ++++--- arch/arm/mach-exynos/mach-universal_c210.c | 26 +++--- arch/arm/mach-s3c24xx/mach-smdk2416.c | 27 +++--- arch/arm/mach-s3c64xx/mach-anw6410.c | 25 +++--- arch/arm/mach-s3c64xx/mach-crag6410.c | 25 +++--- arch/arm/mach-s3c64xx/mach-hmt.c | 24 +++-- arch/arm/mach-s3c64xx/mach-mini6410.c | 92 +++++++++++-------- arch/arm/mach-s3c64xx/mach-real6410.c | 90 +++++++++++-------- arch/arm/mach-s3c64xx/mach-smartq5.c | 26 +++--- arch/arm/mach-s3c64xx/mach-smartq7.c | 26 +++--- arch/arm/mach-s3c64xx/mach-smdk6410.c | 25 +++--- arch/arm/mach-s5p64x0/mach-smdk6440.c | 24 +++-- arch/arm/mach-s5p64x0/mach-smdk6450.c | 24 +++-- arch/arm/mach-s5pc100/mach-smdkc100.c | 27 +++--- arch/arm/mach-s5pv210/mach-aquila.c | 36 ++++---- arch/arm/mach-s5pv210/mach-goni.c | 26 +++--- arch/arm/mach-s5pv210/mach-smdkv210.c | 24 +++-- arch/arm/plat-samsung/include/plat/fb.h | 11 ++- drivers/video/s3c-fb.c | 135 +++++++++++++-------------- 21 files changed, 426 insertions(+), 345 deletions(-)