summaryrefslogtreecommitdiff
path: root/board/freescale/mx51evk
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2012-05-09 06:39:41 (GMT)
committerAnatolij Gustschin <agust@denx.de>2012-05-25 08:06:38 (GMT)
commitf1adefd2393f0322c1c1db8e813e65d95c752cd0 (patch)
tree6d7cc0c82abd1858c2957b39d338bc3fbb39433f /board/freescale/mx51evk
parent90464971f999032fec077bc081b578131b2a3319 (diff)
downloadu-boot-f1adefd2393f0322c1c1db8e813e65d95c752cd0.tar.xz
mx51evk: Add LCD support
Add support for CLAA07LC0ACW LCD that connects to the mx51evk board. Configure the board to show the Linux logo on the LCD. Also increase the size of CONFIG_SYS_MALLOC_LEN variable to take into account the framebuffer usage. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'board/freescale/mx51evk')
-rw-r--r--board/freescale/mx51evk/mx51evk.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/board/freescale/mx51evk/mx51evk.c b/board/freescale/mx51evk/mx51evk.c
index b505a71..bc7f057 100644
--- a/board/freescale/mx51evk/mx51evk.c
+++ b/board/freescale/mx51evk/mx51evk.c
@@ -36,6 +36,12 @@
#include <fsl_pmic.h>
#include <mc13892.h>
#include <usb/ehci-fsl.h>
+#include <linux/fb.h>
+#include <ipu_pixfmt.h>
+
+#define MX51EVK_LCD_3V3 (3 * 32 + 9) /* GPIO4_9 */
+#define MX51EVK_LCD_5V (3 * 32 + 10) /* GPIO4_10 */
+#define MX51EVK_LCD_BACKLIGHT (2 * 32 + 4) /* GPIO3_4 */
DECLARE_GLOBAL_DATA_PTR;
@@ -453,6 +459,54 @@ int board_mmc_init(bd_t *bis)
}
#endif
+static struct fb_videomode claa_wvga = {
+ .name = "CLAA07LC0ACW",
+ .refresh = 57,
+ .xres = 800,
+ .yres = 480,
+ .pixclock = 37037,
+ .left_margin = 40,
+ .right_margin = 60,
+ .upper_margin = 10,
+ .lower_margin = 10,
+ .hsync_len = 20,
+ .vsync_len = 10,
+ .sync = 0,
+ .vmode = FB_VMODE_NONINTERLACED
+};
+
+void lcd_iomux(void)
+{
+ /* DI2_PIN15 */
+ mxc_request_iomux(MX51_PIN_DI_GP4, IOMUX_CONFIG_ALT4);
+
+ /* Pad settings for MX51_PIN_DI2_DISP_CLK */
+ mxc_iomux_set_pad(MX51_PIN_DI2_DISP_CLK, PAD_CTL_HYS_NONE |
+ PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER |
+ PAD_CTL_DRV_MAX | PAD_CTL_SRE_SLOW);
+
+ /* Turn on 3.3V voltage for LCD */
+ mxc_request_iomux(MX51_PIN_CSI2_D12, IOMUX_CONFIG_ALT3);
+ gpio_direction_output(MX51EVK_LCD_3V3, 1);
+
+ /* Turn on 5V voltage for LCD */
+ mxc_request_iomux(MX51_PIN_CSI2_D13, IOMUX_CONFIG_ALT3);
+ gpio_direction_output(MX51EVK_LCD_5V, 1);
+
+ /* Turn on GPIO backlight */
+ mxc_request_iomux(MX51_PIN_DI1_D1_CS, IOMUX_CONFIG_ALT4);
+ mxc_iomux_set_input(MX51_GPIO3_IPP_IND_G_IN_4_SELECT_INPUT,
+ INPUT_CTL_PATH1);
+ gpio_direction_output(MX51EVK_LCD_BACKLIGHT, 1);
+}
+
+void lcd_enable(void)
+{
+ int ret = mx51_fb_init(&claa_wvga, 1, IPU_PIX_FMT_RGB565);
+ if (ret)
+ printf("LCD cannot be configured: %d\n", ret);
+}
+
int board_early_init_f(void)
{
setup_iomux_uart();
@@ -460,6 +514,7 @@ int board_early_init_f(void)
#ifdef CONFIG_USB_EHCI_MX5
setup_usb_h1();
#endif
+ lcd_iomux();
return 0;
}
@@ -469,6 +524,8 @@ int board_init(void)
/* address of boot parameters */
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
+ lcd_enable();
+
return 0;
}
@@ -479,6 +536,8 @@ int board_late_init(void)
setup_iomux_spi();
power_init();
#endif
+ setenv("stdout", "serial");
+
return 0;
}
#endif