diff options
author | Christoph Fritz <chf.fritz@googlemail.com> | 2013-07-01 10:25:21 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-07-02 16:09:41 +0200 |
commit | 569acbbb80945deedb743481fb6c3b40f233048a (patch) | |
tree | 78a53c860f1f9d0c3913b727b764dcf89e862727 /arch/arm/boards/pcm049/board.c | |
parent | 3cfd3be736edf6fea41b03c00023dba88a2ff11e (diff) | |
download | barebox-569acbbb80945deedb743481fb6c3b40f233048a.tar.gz barebox-569acbbb80945deedb743481fb6c3b40f233048a.tar.xz |
pcm049: Add platformcode for omap4 framebuffer
For splashscreen support on pcm049, this patch adds omap4 framebuffer
platform data and configures display pd050vl1, g104x1, pm070wl4, pd104slf,
edt_etm0350G0dh6, edt_etm0430G0dh6, edt_etmv570G2dhu and edt_etm0700G0dh6
Also add extra muxing and defconfig
Signed-off-by: Christoph Fritz <chf.fritz@googlemail.com>
Signed-off-by: Jan Weitzel <j.weitzel@phytec.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/boards/pcm049/board.c')
-rw-r--r-- | arch/arm/boards/pcm049/board.c | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/arch/arm/boards/pcm049/board.c b/arch/arm/boards/pcm049/board.c index 3c4b1a7dbe..b7b8ea6690 100644 --- a/arch/arm/boards/pcm049/board.c +++ b/arch/arm/boards/pcm049/board.c @@ -24,6 +24,8 @@ #include <generated/mach-types.h> #include <mach/omap4-silicon.h> #include <mach/omap4-devices.h> +#include <mach/omap4-clock.h> +#include <mach/omap-fb.h> #include <mach/sdrc.h> #include <mach/sys_info.h> #include <mach/syslib.h> @@ -92,6 +94,190 @@ static struct gpmc_nand_platform_data nand_plat = { .nand_cfg = &omap4_nand_cfg, }; +static struct omapfb_display const pcm049_displays[] = { + { + .mode = { + .name = "pd050vl1", + .refresh = 60, + .xres = 640, + .yres = 480, + .pixclock = 25000, + .left_margin = 46, + .right_margin = 18, + .hsync_len = 96, + .upper_margin = 33, + .lower_margin = 10, + .vsync_len = 2, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + /* Prime-View PM070WL4 */ + { + .mode = { + .name = "pm070wl4", + .refresh = 60, + .xres = 800, + .yres = 480, + .pixclock = 32000, + .left_margin = 86, + .right_margin = 42, + .hsync_len = 128, + .lower_margin = 10, + .upper_margin = 33, + .vsync_len = 2, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + /* Prime-View PD104SLF */ + { + .mode = { + .name = "pd104slf", + .refresh = 60, + .xres = 800, + .yres = 600, + .pixclock = 40000, + .left_margin = 86, + .right_margin = 42, + .hsync_len = 128, + .lower_margin = 1, + .upper_margin = 23, + .vsync_len = 4, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + /* EDT ETM0350G0DH6 */ + { + .mode = { + .name = "edt_etm0350G0dh6", + .refresh = 60, + .xres = 320, + .yres = 240, + .pixclock = 15720, + .left_margin = 68, + .right_margin = 20, + .hsync_len = 88, + .lower_margin = 4, + .upper_margin = 18, + .vsync_len = 22, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + /* EDT ETM0430G0DH6 */ + { + .mode = { + .name = "edt_etm0430G0dh6", + .refresh = 60, + .xres = 480, + .yres = 272, + .pixclock = 9000, + .left_margin = 2, + .right_margin = 2, + .hsync_len = 41, + .lower_margin = 2, + .upper_margin = 2, + .vsync_len = 10, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + /* EDT ETMV570G2DHU */ + { + .mode = { + .name = "edt_etmv570G2dhu", + .refresh = 60, + .xres = 640, + .yres = 480, + .pixclock = 25175, + .left_margin = 114, + .right_margin = 16, + .hsync_len = 30, + .lower_margin = 10, + .upper_margin = 35, + .vsync_len = 3, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + /* ETD ETM0700G0DH6 */ + { + .mode = { + .name = "edt_etm0700G0dh6", + .refresh = 60, + .xres = 800, + .yres = 480, + .pixclock = 33260, + .left_margin = 216, + .right_margin = 40, + .hsync_len = 128, + .lower_margin = 10, + .upper_margin = 35, + .vsync_len = 2, + }, + + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + }, + + /* CHIMEI G104X1-L03 */ + { + .mode = { + .name = "g104x1", + .refresh = 60, + .xres = 1024, + .yres = 768, + .pixclock = 64000, + .left_margin = 320, + .right_margin = 1, + .hsync_len = 320, + .upper_margin = 38, + .lower_margin = 38, + .vsync_len = 2, + }, + .config = (OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | + OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC | + OMAP_DSS_LCD_DATALINES_24), + + .power_on_delay = 50, + .power_off_delay = 100, + }, +}; + +#define GPIO_DISPENABLE 118 +#define GPIO_BACKLIGHT 122 + +static void pcm049_fb_enable(int e) +{ + gpio_direction_output(GPIO_DISPENABLE, e); + gpio_direction_output(GPIO_BACKLIGHT, e); +} + +static struct omapfb_platform_data pcm049_fb_data = { + .displays = pcm049_displays, + .num_displays = ARRAY_SIZE(pcm049_displays), + + .dss_clk_hz = 19200000, + + .bpp = 32, + .enable = pcm049_fb_enable, +}; + static int pcm049_devices_init(void) { i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); @@ -116,6 +302,8 @@ static int pcm049_devices_init(void) armlinux_set_bootparams((void *)0x80000100); armlinux_set_architecture(MACH_TYPE_PCM049); + omap_add_display(&pcm049_fb_data); + return 0; } device_initcall(pcm049_devices_init); |