[PATCH] pcm049: Add platformcode for omap4 framebuffer
Jan Weitzel
j.weitzel at phytec.de
Mon Jul 1 04:25:21 EDT 2013
From: Christoph Fritz <chf.fritz at googlemail.com>
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 at googlemail.com>
Signed-off-by: Jan Weitzel <j.weitzel at phytec.de>
---
arch/arm/boards/pcm049/board.c | 188 +++++++++++++++++++++++++++++
arch/arm/boards/pcm049/env/bin/init_board | 24 ++++
arch/arm/boards/pcm049/env/config | 18 +++-
arch/arm/boards/pcm049/mux.c | 60 +++++-----
arch/arm/configs/pcm049_defconfig | 5 +
5 files changed, 263 insertions(+), 32 deletions(-)
create mode 100644 arch/arm/boards/pcm049/env/bin/init_board
diff --git a/arch/arm/boards/pcm049/board.c b/arch/arm/boards/pcm049/board.c
index 3c4b1a7..b7b8ea6 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);
diff --git a/arch/arm/boards/pcm049/env/bin/init_board b/arch/arm/boards/pcm049/env/bin/init_board
new file mode 100644
index 0000000..3454eaa
--- /dev/null
+++ b/arch/arm/boards/pcm049/env/bin/init_board
@@ -0,0 +1,24 @@
+#!/bin/sh
+global displayargs
+. /env/config
+
+if [ -z $display ]; then
+ echo "no display configured"
+ exit 0
+fi
+
+if [ $display = dvi ]; then
+ global.displayargs="omapdss.def_disp=dvi omapfb.mode=dvi:$dvi_resolution"
+ exit 0
+fi
+
+# Display a splash screen
+
+if [ -e /dev/fb0 ]; then
+ fb0.mode_name=$display
+ splash /dev/nand0.splash.bb
+ fb0.enable=1
+fi
+
+global.displayargs="panel_generic_dpi.name=$display"
+
diff --git a/arch/arm/boards/pcm049/env/config b/arch/arm/boards/pcm049/env/config
index 0ae3e1b..aa87228 100644
--- a/arch/arm/boards/pcm049/env/config
+++ b/arch/arm/boards/pcm049/env/config
@@ -40,8 +40,22 @@ autoboot_timeout=3
bootargs="console=ttyO2,115200"
-nand_parts="128k(xload)ro,512k(barebox),128k(bareboxenv),4M(kernel),-(root)"
-rootfs_mtdblock_nand=4
+nand_parts="128k(xload)ro,512k(barebox),128k(bareboxenv),4M(kernel),4M(splash),-(root)"
+nand_device="omap2-nand.0"
+rootfs_mtdblock_nand=5
+
+#Displays
+# Splashscreen-Display can be either '', 'pd050vl1', 'pm070wl4', 'pd104slf', 'g104x1'
+# 'edt_etm0350G0dh6', 'edt_etm0430G0dh6', 'edt_etmv570G2dhu' or 'edt_etm0700G0dh6'
+# to use dvi output in kernel set 'display=dvi' and
+# dvi_resolution to '640x480-60' '800x600-60' or '1024x768-60'
+
+display=edt_etm0700G0dh6
+#dvi_resolution=1024x768-60
+
+if [ -n ${global.displayargs} ]; then
+ bootargs="$bootargs ${global.displayargs}"
+fi
# set a fancy prompt (if support is compiled in)
PS1="\e[1;32mbarebox@\e[1;31m\h:\w\e[0m "
diff --git a/arch/arm/boards/pcm049/mux.c b/arch/arm/boards/pcm049/mux.c
index 35eb0a3..fda4c51 100644
--- a/arch/arm/boards/pcm049/mux.c
+++ b/arch/arm/boards/pcm049/mux.c
@@ -109,11 +109,11 @@ static const struct pad_conf_entry core_padconf_array[] = {
{ABE_PDM_DL_DATA, (SAFE_MODE)}, /* unused */
{ABE_PDM_FRAME, (SAFE_MODE)}, /* unused */
{ABE_PDM_LB_CLK, (SAFE_MODE)}, /* unused */
- {ABE_CLKS, (SAFE_MODE)}, /* unused */
+ {ABE_CLKS, (M3)}, /* gpio_118 */
{ABE_DMIC_CLK1, (SAFE_MODE)}, /* nc */
{ABE_DMIC_DIN1, (SAFE_MODE)}, /* unused */
{ABE_DMIC_DIN2, (DIS | IEN | M3)}, /* gpio_121 */
- {ABE_DMIC_DIN3, (SAFE_MODE)}, /* unused */
+ {ABE_DMIC_DIN3, (M3)}, /* gpio_122 */
{UART2_CTS, (SAFE_MODE)}, /* unused */
{UART2_RTS, (SAFE_MODE)}, /* unused */
{UART2_RX, (SAFE_MODE)}, /* unused */
@@ -151,17 +151,17 @@ static const struct pad_conf_entry core_padconf_array[] = {
{UART4_RX, (SAFE_MODE)}, /* unused */
{UART4_TX, (SAFE_MODE)}, /* unused */
{USBB2_ULPITLL_CLK, (SAFE_MODE)}, /* nc */
- {USBB2_ULPITLL_STP, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DIR, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_NXT, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT0, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT1, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT2, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT3, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT4, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT5, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT6, (SAFE_MODE)}, /* unused */
- {USBB2_ULPITLL_DAT7, (SAFE_MODE)}, /* unused */
+ {USBB2_ULPITLL_STP, (M5)}, /* dispc2_data23 */
+ {USBB2_ULPITLL_DIR, (M5)}, /* dispc2_data22 */
+ {USBB2_ULPITLL_NXT, (M5)}, /* dispc2_data21 */
+ {USBB2_ULPITLL_DAT0, (M5)}, /* dispc2_data20 */
+ {USBB2_ULPITLL_DAT1, (M5)}, /* dispc2_data19 */
+ {USBB2_ULPITLL_DAT2, (M5)}, /* dispc2_data18 */
+ {USBB2_ULPITLL_DAT3, (M5)}, /* dispc2_data15 */
+ {USBB2_ULPITLL_DAT4, (M5)}, /* dispc2_data14 */
+ {USBB2_ULPITLL_DAT5, (M5)}, /* dispc2_data13 */
+ {USBB2_ULPITLL_DAT6, (M5)}, /* dispc2_data12 */
+ {USBB2_ULPITLL_DAT7, (M5)}, /* dispc2_data11 */
{USBB2_HSIC_DATA, (SAFE_MODE)}, /* nc */
{USBB2_HSIC_STROBE, (SAFE_MODE)}, /* nc */
{UNIPRO_TX0, (SAFE_MODE)}, /* unused */
@@ -192,23 +192,23 @@ static const struct pad_conf_entry core_padconf_array[] = {
{DPM_EMU0, (IEN | M0)}, /* dpm_emu0 */
{DPM_EMU1, (IEN | M0)}, /* dpm_emu1 */
{DPM_EMU2, (SAFE_MODE)}, /* unused */
- {DPM_EMU3, (SAFE_MODE)}, /* unused */
- {DPM_EMU4, (SAFE_MODE)}, /* unused */
- {DPM_EMU5, (SAFE_MODE)}, /* unused */
- {DPM_EMU6, (SAFE_MODE)}, /* unused */
- {DPM_EMU7, (SAFE_MODE)}, /* unused */
- {DPM_EMU8, (SAFE_MODE)}, /* unused */
- {DPM_EMU9, (SAFE_MODE)}, /* unused */
- {DPM_EMU10, (SAFE_MODE)}, /* unused */
- {DPM_EMU11, (SAFE_MODE)}, /* unused */
- {DPM_EMU12, (SAFE_MODE)}, /* unused */
- {DPM_EMU13, (SAFE_MODE)}, /* unused */
- {DPM_EMU14, (SAFE_MODE)}, /* unused */
- {DPM_EMU15, (SAFE_MODE)}, /* unused */
- {DPM_EMU16, (SAFE_MODE)}, /* unused */
- {DPM_EMU17, (SAFE_MODE)}, /* unused */
- {DPM_EMU18, (SAFE_MODE)}, /* unused */
- {DPM_EMU19, (SAFE_MODE)}, /* unused */
+ {DPM_EMU3, (M5)}, /* dispc2_data10 */
+ {DPM_EMU4, (M5)}, /* dispc2_data9 */
+ {DPM_EMU5, (M5)}, /* dispc2_data16 */
+ {DPM_EMU6, (M5)}, /* dispc2_data17 */
+ {DPM_EMU7, (M5)}, /* dispc2_hsync */
+ {DPM_EMU8, (M5)}, /* dispc2_pclk */
+ {DPM_EMU9, (M5)}, /* dispc2_vsync */
+ {DPM_EMU10, (M5)}, /* dispc2_de */
+ {DPM_EMU11, (M5)}, /* dispc2_data8 */
+ {DPM_EMU12, (M5)}, /* dispc2_data7 */
+ {DPM_EMU13, (M5)}, /* dispc2_data6 */
+ {DPM_EMU14, (M5)}, /* dispc2_data5 */
+ {DPM_EMU15, (M5)}, /* dispc2_data4 */
+ {DPM_EMU16, (M5)}, /* dispc2_data3 */
+ {DPM_EMU17, (M5)}, /* dispc2_data2 */
+ {DPM_EMU18, (M5)}, /* dispc2_data1 */
+ {DPM_EMU19, (M5)}, /* dispc2_data0 */
};
static const struct pad_conf_entry wkup_padconf_array[] = {
diff --git a/arch/arm/configs/pcm049_defconfig b/arch/arm/configs/pcm049_defconfig
index 80dbd71..35b4052 100644
--- a/arch/arm/configs/pcm049_defconfig
+++ b/arch/arm/configs/pcm049_defconfig
@@ -39,6 +39,7 @@ CONFIG_CMD_UIMAGE=y
# CONFIG_CMD_BOOTU is not set
CONFIG_CMD_RESET=y
CONFIG_CMD_GO=y
+CONFIG_CMD_SPLASH=y
CONFIG_CMD_TIMEOUT=y
CONFIG_CMD_PARTITION=y
CONFIG_CMD_MAGICVAR=y
@@ -61,6 +62,10 @@ CONFIG_NAND=y
CONFIG_NAND_OMAP_GPMC=y
CONFIG_UBI=y
CONFIG_USB=y
+CONFIG_VIDEO=y
+CONFIG_DRIVER_VIDEO_OMAP=y
+CONFIG_IMAGE_RENDERER=y
+CONFIG_BMP=y
CONFIG_MCI=y
CONFIG_MCI_STARTUP=y
CONFIG_MCI_OMAP_HSMMC=y
--
1.7.0.4
More information about the barebox
mailing list