[PATCH 11/18] SMDKC100: enable S3C FrameBuffer

Ben Dooks ben-linux at fluff.org
Fri Nov 13 18:34:07 EST 2009


On Thu, Nov 12, 2009 at 09:21:55AM +0100, Marek Szyprowski wrote:
> From: Kyungmin Park <kyungmin.park at samsung.com>
> 
> From: Kyungmin Park <kyungmin.park at samsung.com>
> 
> Add required machine definitions for s3c-fb device.
> A 800x480 lcd device (simmilar to the one known from SMDK6410 boards) has
> been defined. The lcd controller is attached to GPIO lines and can be
> enabled/disabled with platform-lcd driver.
> 
> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>

I'll see if this will apply and compile without the previous FB patches
until they've been sorted out.

> ---
>  arch/arm/mach-s5pc100/Kconfig         |    2 +
>  arch/arm/mach-s5pc100/mach-smdkc100.c |   67 +++++++++++++++++++++++++++++++++
>  2 files changed, 69 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-s5pc100/Kconfig b/arch/arm/mach-s5pc100/Kconfig
> index b1a4ba5..5e6b9a3 100644
> --- a/arch/arm/mach-s5pc100/Kconfig
> +++ b/arch/arm/mach-s5pc100/Kconfig
> @@ -17,6 +17,8 @@ config CPU_S5PC100
>  config MACH_SMDKC100
>  	bool "SMDKC100"
>  	select CPU_S5PC100
> +	select S3C_DEV_FB
>  	select S5PC1XX_SETUP_I2C1
> +	select S5PC1XX_SETUP_FB_24BPP
>  	help
>  	  Machine support for the Samsung SMDKC100
> diff --git a/arch/arm/mach-s5pc100/mach-smdkc100.c b/arch/arm/mach-s5pc100/mach-smdkc100.c
> index 05bb20a..098956d 100644
> --- a/arch/arm/mach-s5pc100/mach-smdkc100.c
> +++ b/arch/arm/mach-s5pc100/mach-smdkc100.c
> @@ -27,16 +27,21 @@
>  #include <asm/mach/map.h>
>  
>  #include <mach/map.h>
> +#include <mach/regs-fb.h>
> +#include <video/platform_lcd.h>
>  
>  #include <asm/irq.h>
>  #include <asm/mach-types.h>
>  
>  #include <plat/regs-serial.h>
> +#include <plat/gpio-cfg.h>
> +#include <plat/regs-gpio.h>
>  
>  #include <plat/clock.h>
>  #include <plat/devs.h>
>  #include <plat/cpu.h>
>  #include <plat/s5pc100.h>
> +#include <plat/fb.h>
>  
>  #define UCON (S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK)
>  #define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB)
> @@ -73,9 +78,65 @@ static struct s3c2410_uartcfg smdkc100_uartcfgs[] __initdata = {
>  	},
>  };
>  
> +/* LCD power controller */
> +static void smdkc100_lcd_power_set(struct plat_lcd_data *pd,
> +				   unsigned int power)
> +{
> +	/* backlight */
> +	gpio_direction_output(S5PC100_GPD(0), power);
> +
> +	if (power) {
> +		/* module reset */
> +		gpio_direction_output(S5PC100_GPH0(6), 1);
> +		mdelay(100);
> +		gpio_direction_output(S5PC100_GPH0(6), 0);
> +		mdelay(10);
> +		gpio_direction_output(S5PC100_GPH0(6), 1);
> +		mdelay(10);
> +	}
> +}
> +
> +static struct plat_lcd_data smdkc100_lcd_power_data = {
> +	.set_power	= smdkc100_lcd_power_set,
> +};
> +
> +static struct platform_device smdkc100_lcd_powerdev = {
> +	.name			= "platform-lcd",
> +	.dev.parent		= &s3c_device_fb.dev,
> +	.dev.platform_data	= &smdkc100_lcd_power_data,
> +};
> +
> +/* Frame Buffer */
> +static struct s3c_fb_pd_win smdkc100_fb_win0 = {
> +	/* this is to ensure we use win0 */
> +	.win_mode	= {
> +		.refresh	= 70,
> +		.pixclock	= (8+13+3+800)*(7+5+1+480),
> +		.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 smdkc100_lcd_pdata __initdata = {
> +	.win[0]		= &smdkc100_fb_win0,
> +	.vidcon0	= VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
> +	.vidcon1	= VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
> +	.setup_gpio	= s5pc100_fb_gpio_setup_24bpp,
> +};
> +
>  static struct map_desc smdkc100_iodesc[] = {};
>  
>  static struct platform_device *smdkc100_devices[] __initdata = {
> +	&s3c_device_fb,
> +	&smdkc100_lcd_powerdev,
>  };
>  
>  static void __init smdkc100_map_io(void)
> @@ -87,6 +148,12 @@ static void __init smdkc100_map_io(void)
>  
>  static void __init smdkc100_machine_init(void)
>  {
> +	s3c_fb_set_platdata(&smdkc100_lcd_pdata);
> +
> +	/* LCD init */
> +	gpio_request(S5PC100_GPD(0), "GPD");
> +	gpio_request(S5PC100_GPH0(6), "GPH0");
> +	smdkc100_lcd_power_set(&smdkc100_lcd_power_data, 0);
>  	platform_add_devices(smdkc100_devices, ARRAY_SIZE(smdkc100_devices));
>  }
>  
> -- 
> 1.6.5
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

-- 
-- 
Ben

Q:      What's a light-year?
A:      One-third less calories than a regular year.




More information about the linux-arm-kernel mailing list