]> git.karo-electronics.de Git - linux-beck.git/commitdiff
pca100: add framebuffer device support and TFT
authorLuotao Fu <l.fu@pengutronix.de>
Fri, 18 Jun 2010 07:23:18 +0000 (09:23 +0200)
committerSascha Hauer <s.hauer@pengutronix.de>
Mon, 26 Jul 2010 12:18:25 +0000 (14:18 +0200)
this one adds the frambuffer device and a TFT panel to the PhyCard-S
(pca100) board.

Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/mach-mx2/mach-pca100.c

index 7651d0ef4666ef8e953ac2d4055dce6d26af7dda..a94343663997a2c988b8ce6dd32317c4b29c1642 100644 (file)
@@ -49,6 +49,7 @@
 #include <mach/mmc.h>
 #include <mach/mxc_ehci.h>
 #include <mach/ulpi.h>
+#include <mach/imxfb.h>
 
 #include "devices.h"
 
@@ -131,6 +132,30 @@ static int pca100_pins[] = {
        PD23_AF_USBH2_DATA2,
        PD24_AF_USBH2_DATA1,
        PD26_AF_USBH2_DATA5,
+       /* display */
+       PA5_PF_LSCLK,
+       PA6_PF_LD0,
+       PA7_PF_LD1,
+       PA8_PF_LD2,
+       PA9_PF_LD3,
+       PA10_PF_LD4,
+       PA11_PF_LD5,
+       PA12_PF_LD6,
+       PA13_PF_LD7,
+       PA14_PF_LD8,
+       PA15_PF_LD9,
+       PA16_PF_LD10,
+       PA17_PF_LD11,
+       PA18_PF_LD12,
+       PA19_PF_LD13,
+       PA20_PF_LD14,
+       PA21_PF_LD15,
+       PA22_PF_LD16,
+       PA23_PF_LD17,
+       PA26_PF_PS,
+       PA28_PF_HSYNC,
+       PA29_PF_VSYNC,
+       PA31_PF_OE_ACD,
 };
 
 static struct imxuart_platform_data uart_pdata = {
@@ -299,6 +324,45 @@ static int __init pca100_otg_mode(char *options)
 }
 __setup("otg_mode=", pca100_otg_mode);
 
+/* framebuffer info */
+static struct imx_fb_videomode pca100_fb_modes[] = {
+       {
+               .mode = {
+                       .name           = "EMERGING-ETV570G0DHU",
+                       .refresh        = 60,
+                       .xres           = 640,
+                       .yres           = 480,
+                       .pixclock       = 39722, /* in ps (25.175 MHz) */
+                       .hsync_len      = 30,
+                       .left_margin    = 114,
+                       .right_margin   = 16,
+                       .vsync_len      = 3,
+                       .upper_margin   = 32,
+                       .lower_margin   = 0,
+               },
+               /*
+                * TFT
+                * Pixel pol active high
+                * HSYNC active low
+                * VSYNC active low
+                * use HSYNC for ACD count
+                * line clock disable while idle
+                * always enable line clock even if no data
+                */
+               .pcr = 0xf0c08080,
+               .bpp = 16,
+       },
+};
+
+static struct imx_fb_platform_data pca100_fb_data = {
+       .mode = pca100_fb_modes,
+       .num_modes = ARRAY_SIZE(pca100_fb_modes),
+
+       .pwmr           = 0x00A903FF,
+       .lscr1          = 0x00120300,
+       .dmacr          = 0x00020010,
+};
+
 static void __init pca100_init(void)
 {
        int ret;
@@ -374,6 +438,8 @@ static void __init pca100_init(void)
                mxc_register_device(&mxc_otg_udc_device, &otg_device_pdata);
        }
 
+       mxc_register_device(&mxc_fb_device, &pca100_fb_data);
+
        platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
 }