[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