mx53loco: Add support for SEIKO 4.3'' WVGA panel
authorFabio Estevam <fabio.estevam@freescale.com>
Wed, 9 Jan 2013 05:10:16 +0000 (05:10 +0000)
committerStefano Babic <sbabic@denx.de>
Wed, 9 Jan 2013 18:22:24 +0000 (19:22 +0100)
Add support for the Seiko 4.3'' WVGA panel on mx53loco.

By default, the CLAA WVGA panel is selected.

In order to support the Seiko panel, the enviroment variable 'panel' must be
set to 'seiko'.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
board/freescale/mx53loco/mx53loco.c
board/freescale/mx53loco/mx53loco_video.c

index 60cd4f0cfbae4388461a938b97e559dbef0f4d42..8f39c383f111111f83d6935b410d2893d83aadaa 100644 (file)
@@ -503,8 +503,6 @@ int board_init(void)
        mxc_set_sata_internal_clock();
        setup_iomux_i2c();
 
-       lcd_enable();
-
        return 0;
 }
 
index 69991e85116ad26db13ff4c927888ae7f023f0e3..a4d5a6a3650dca0561cc7a39ad6a25fa53a0ec28 100644 (file)
@@ -46,6 +46,21 @@ static struct fb_videomode const claa_wvga = {
        .vmode          = FB_VMODE_NONINTERLACED
 };
 
+static struct fb_videomode const seiko_wvga = {
+       .name           = "Seiko-43WVF1G",
+       .refresh        = 60,
+       .xres           = 800,
+       .yres           = 480,
+       .pixclock       = 29851, /* picosecond (33.5 MHz) */
+       .left_margin    = 89,
+       .right_margin   = 164,
+       .upper_margin   = 23,
+       .lower_margin   = 10,
+       .hsync_len      = 10,
+       .vsync_len      = 10,
+       .sync           = 0,
+};
+
 void setup_iomux_lcd(void)
 {
        mxc_request_iomux(MX53_PIN_DI0_DISP_CLK, IOMUX_CONFIG_ALT0);
@@ -86,9 +101,26 @@ void setup_iomux_lcd(void)
        gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_1), 1);
 }
 
-void lcd_enable(void)
+int board_video_skip(void)
 {
-       int ret = ipuv3_fb_init(&claa_wvga, 0, IPU_PIX_FMT_RGB565);
+       int ret;
+       char const *e = getenv("panel");
+
+       if (e) {
+               if (strcmp(e, "seiko") == 0) {
+                       ret = ipuv3_fb_init(&seiko_wvga, 0, IPU_PIX_FMT_RGB24);
+                       if (ret)
+                               printf("Seiko cannot be configured: %d\n", ret);
+                       return ret;
+               }
+       }
+
+       /*
+        * 'panel' env variable not found or has different value than 'seiko'
+        *  Defaulting to claa lcd.
+        */
+       ret = ipuv3_fb_init(&claa_wvga, 0, IPU_PIX_FMT_RGB565);
        if (ret)
-               printf("LCD cannot be configured: %d\n", ret);
+               printf("CLAA cannot be configured: %d\n", ret);
+       return ret;
 }