Patchwork [U-Boot,v3] mx53loco: Add support for SEIKO 4.3'' WVGA panel

login
register
mail settings
Submitter Fabio Estevam
Date Jan. 9, 2013, 3:10 p.m.
Message ID <1357744216-27068-1-git-send-email-fabio.estevam@freescale.com>
Download mbox | patch
Permalink /patch/210730/
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Comments

Fabio Estevam - Jan. 9, 2013, 3:10 p.m.
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>
---
Changes since v2:
- Simplify lcd detection logic
Changes since v1:
- Allow a single binary to support both CLAA and Seiko panels
 board/freescale/mx53loco/mx53loco.c       |    2 --
 board/freescale/mx53loco/mx53loco_video.c |   38 ++++++++++++++++++++++++++---
 2 files changed, 35 insertions(+), 5 deletions(-)
Stefano Babic - Jan. 9, 2013, 6:24 p.m.
On 09/01/2013 16:10, Fabio Estevam wrote:
> 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>
> ---
Applied to u-boot-imx, thanks.

Best regards,
Stefano Babic

Patch

diff --git a/board/freescale/mx53loco/mx53loco.c b/board/freescale/mx53loco/mx53loco.c
index 60cd4f0..8f39c38 100644
--- a/board/freescale/mx53loco/mx53loco.c
+++ b/board/freescale/mx53loco/mx53loco.c
@@ -503,8 +503,6 @@  int board_init(void)
 	mxc_set_sata_internal_clock();
 	setup_iomux_i2c();
 
-	lcd_enable();
-
 	return 0;
 }
 
diff --git a/board/freescale/mx53loco/mx53loco_video.c b/board/freescale/mx53loco/mx53loco_video.c
index 69991e8..a4d5a6a 100644
--- a/board/freescale/mx53loco/mx53loco_video.c
+++ b/board/freescale/mx53loco/mx53loco_video.c
@@ -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;
 }