[PATCH 6/6] ARM: S5P6450: Add LCD-LTE480 and enable Framebuffer support
Kukjin Kim
kgene.kim at samsung.com
Wed Jul 20 21:22:39 EDT 2011
Ajay kumar wrote:
>
> 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.
Hmm...I didn't get any your V2 patch, yet.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
More information about the linux-arm-kernel
mailing list