[PATCH 6/6] ARM: S5P6450: Add LCD-LTE480 and enable Framebuffer support

Ajay kumar ajaynumb at gmail.com
Fri Jul 15 02:55:33 EDT 2011


Hi Jingoo,

2011/7/15 JinGoo Han <jg1.han at samsung.com>:
> Hi, Ajay Kumar.
> Please read my comments.
>> -----Original Message-----
>> From: Ajay Kumar [mailto:ajaykumar.rs at samsung.com]
>> Sent: Thursday, July 14, 2011 10:27 PM
>> To: kgene.kim at samsung.com; linux-samsung-soc at vger.kernel.org; linux-arm-
>> kernel at lists.infradead.org; lethal at linux-sh.org; jg1.han at samsung.com
>> Subject: [PATCH 6/6] ARM: S5P6450: Add LCD-LTE480 and enable Framebuffer
>> support
>>
>> This patch:
>> o Adds platform device support for LCD-LTE480.
>> o Adds platform data for FB with win_mode and default_bpp.
>> o Enables FB device support and platform-lcd support.
>>
>> Signed-off-by: Ajay Kumar <ajaykumar.rs at samsung.com>
>> ---
>>  arch/arm/mach-s5p64x0/Kconfig         |    2 +
>>  arch/arm/mach-s5p64x0/mach-smdk6450.c |   63
>> +++++++++++++++++++++++++++++++++
>>  2 files changed, 65 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-s5p64x0/Kconfig b/arch/arm/mach-s5p64x0/Kconfig
>> index c69a32d..b9f3aca 100644
>> --- a/arch/arm/mach-s5p64x0/Kconfig
>> +++ b/arch/arm/mach-s5p64x0/Kconfig
>> @@ -53,6 +53,7 @@ config MACH_SMDK6440
>>  config MACH_SMDK6450
>>       bool "SMDK6450"
>>       select CPU_S5P6450
>> +     select S3C_DEV_FB
>>       select S3C_DEV_I2C1
>>       select S3C_DEV_RTC
>>       select S3C_DEV_WDT
>> @@ -60,6 +61,7 @@ config MACH_SMDK6450
>>       select SAMSUNG_DEV_ADC
>>       select SAMSUNG_DEV_PWM
>>       select SAMSUNG_DEV_TS
>> +     select S5P64X0_SETUP_FB
>>       select S5P64X0_SETUP_I2C1
>>       help
>>         Machine support for the Samsung SMDK6450
>> diff --git a/arch/arm/mach-s5p64x0/mach-smdk6450.c b/arch/arm/mach-
>> s5p64x0/mach-smdk6450.c
>> index d19c469..7568f38 100644
>> --- a/arch/arm/mach-s5p64x0/mach-smdk6450.c
>> +++ b/arch/arm/mach-s5p64x0/mach-smdk6450.c
>> @@ -23,6 +23,7 @@
>>  #include <linux/clk.h>
>>  #include <linux/gpio.h>
>>  #include <linux/pwm_backlight.h>
>> +#include <linux/fb.h>
>>
>>  #include <asm/mach/arch.h>
>>  #include <asm/mach/map.h>
>> @@ -34,6 +35,7 @@
>>  #include <mach/regs-clock.h>
>>  #include <mach/i2c.h>
>>  #include <mach/regs-gpio.h>
>> +#include <mach/regs-fb.h>
>>
>>  #include <plat/regs-serial.h>
>>  #include <plat/gpio-cfg.h>
>> @@ -46,6 +48,9 @@
>>  #include <plat/adc.h>
>>  #include <plat/ts.h>
>>  #include <plat/s5p-time.h>
>> +#include <plat/fb.h>
>> +
>> +#include <video/platform_lcd.h>
>>
>>  #define SMDK6450_UCON_DEFAULT        (S3C2410_UCON_TXILEVEL |        \
>>                               S3C2410_UCON_RXILEVEL |         \
>> @@ -148,6 +153,59 @@ static struct platform_device
>> smdk6450_backlight_device = {
>>       },
>>  };
>>
>> +/* Frame Buffer */
>> +static struct s3c_fb_pd_win s5p6450_fb_win0 = {
> This information also depends on LCD panel on the board.
> So, s5p6450_fb_win0 should be changed to smdk6450_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,
> Why do you use 80Hz as frame rate?
> Please don't add this, if there is no problem when using 60Hz.
>> +     },
>> +     .max_bpp        = 24,
> max_bpp can be 32bpp. FIMD of S5P6440 and S5P6450 can support ARGB 8888.
> Please use 32 as max_bpp.
> +       .max_bpp        = 32,
>> +     .default_bpp    = 24,
>> +     };
> Don't useless tab space.
> It should be as follows.
> +};
>> +
>> +static struct s3c_fb_platdata s5p6450_lcd_pdata __initdata = {
>> +     .win[0]         = &s5p6450_fb_win0,
> s5p6450_fb_win0 should be changed to smdk6450_fb_win0.
>> +     .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
>> +     .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
>> +     .setup_gpio     = s5p64x0_fb_gpio_setup_24bpp,
>> +};
>> +
>> +/* LCD power controller */
>> +static void s5p6450_lte480_reset_power(struct plat_lcd_data *pd,
>> +                                     unsigned int power)
>> +{
>> +     int err;
>> +
>> +     if (power) {
>> +             err = gpio_request(S5P6450_GPN(5), "GPN");
>> +             if (err)
>> +                     printk(KERN_ERR "failed to request GPN for lcd
>> reset\n");
>> +
>> +             gpio_direction_output(S5P6450_GPN(5), 1);
>> +             gpio_set_value(S5P6450_GPN(5), 0);
>> +             gpio_set_value(S5P6450_GPN(5), 1);
>> +             gpio_free(S5P6450_GPN(5));
>> +     }
>> +}
>> +
>> +static struct plat_lcd_data s5p6450_lcd_power_data = {
>> +     .set_power      = s5p6450_lte480_reset_power,
>> +};
>> +
>> +static struct platform_device smdk6450_lcd_lte480wv = {
>> +     .name                   = "platform-lcd",
>> +     .dev.parent             = &s3c_device_fb.dev,
>> +     .dev.platform_data      = &s5p6450_lcd_power_data,
>> +};
>> +
> Please change s5p6450_ lte480 to smdk6450_ lte480.
> LCD reset GPIO pin can be changed according to the board.
>>  static struct platform_device *smdk6450_devices[] __initdata = {
>>       &s3c_device_adc,
>>       &s3c_device_rtc,
>> @@ -159,6 +217,9 @@ static struct platform_device *smdk6450_devices[]
>> __initdata = {
>>       &s5p6450_device_iis0,
>>       &s3c_device_timer[1],
>>       &smdk6450_backlight_device,
>> +     &s3c_device_fb,
>> +     &smdk6450_lcd_lte480wv,
>> +
>>       /* s5p6450_device_spi0 will be added */
>>  };
>>
>> @@ -212,6 +273,8 @@ static void __init smdk6450_machine_init(void)
>>                       ARRAY_SIZE(smdk6450_i2c_devs0));
>>       i2c_register_board_info(1, smdk6450_i2c_devs1,
>>                       ARRAY_SIZE(smdk6450_i2c_devs1));
>> +     s3c_fb_set_platdata(&s5p6450_lcd_pdata);
>> +     s5p64x0_fb_init(S5P64X0_SPCON0_LCD_SEL_RGB);
>>
>>       platform_add_devices(smdk6450_devices,
>> ARRAY_SIZE(smdk6450_devices));
>>  }
>> --
>> 1.7.1
>

Thanks for your comments.
Right now I am looking forward for more comments.
I will fix the same and send a V2 patch-set next week.



More information about the linux-arm-kernel mailing list