[PATCH 2/2] AM35xx-Craneboard:Display: Add DVI and TV Support
srinath at mistralsolutions.com
srinath at mistralsolutions.com
Fri Apr 29 07:41:01 EDT 2011
From: Srinath <srinath at mistralsolutions.com>
Added Display (DVI and TV) support for CraneBoard.
Signed-off-by: Srinath <srinath at mistralsolutions.com>
---
arch/arm/mach-omap2/board-am3517crane.c | 78 +++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c
index 05867b5..83fe85b 100644
--- a/arch/arm/mach-omap2/board-am3517crane.c
+++ b/arch/arm/mach-omap2/board-am3517crane.c
@@ -29,12 +29,15 @@
#include <plat/board.h>
#include <plat/common.h>
#include <plat/usb.h>
+#include <plat/display.h>
+#include <plat/panel-generic-dpi.h>
#include "mux.h"
#include "control.h"
#define GPIO_USB_POWER 35
#define GPIO_USB_NRESET 38
+#define GPIO_DVI_ENABLE 52
/* Board initialization */
@@ -66,11 +69,83 @@ static struct usbhs_omap_board_data usbhs_bdata __initdata = {
.reset_gpio_port[2] = -EINVAL
};
+static void __init am3517_crane_display_init(void)
+{
+ int ret;
+
+ ret = omap_mux_init_gpio(GPIO_DVI_ENABLE, OMAP_PIN_OUTPUT);
+ if (ret < 0) {
+ pr_err("Can not configure mux for GPIO_DVI_ENABLE %d\n",
+ GPIO_DVI_ENABLE);
+ return;
+ }
+
+ ret = gpio_request(GPIO_DVI_ENABLE, "dvi_enable");
+ if (ret < 0) {
+ pr_err("Can not request GPIO %d\n", GPIO_DVI_ENABLE);
+ return;
+ }
+
+ ret = gpio_direction_output(GPIO_DVI_ENABLE, 1);
+ if (ret < 0) {
+ gpio_free(GPIO_DVI_ENABLE);
+ pr_err("Unable to enable DVI\n");
+ return;
+ }
+}
+
+static struct omap_dss_device am3517_crane_tv_device = {
+ .type = OMAP_DISPLAY_TYPE_VENC,
+ .name = "tv",
+ .driver_name = "venc",
+ .phy.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE,
+ .platform_enable = NULL,
+ .platform_disable = NULL,
+};
+
+static int am3517_crane_panel_enable_dvi(struct omap_dss_device *dssdev)
+{
+ gpio_set_value(GPIO_DVI_ENABLE, 1);
+ return 0;
+}
+
+static void am3517_crane_panel_disable_dvi(struct omap_dss_device *dssdev)
+{
+ gpio_set_value(GPIO_DVI_ENABLE, 0);
+}
+
+
+static struct panel_generic_dpi_data dvi_panel = {
+ .name = "generic",
+ .platform_enable = am3517_crane_panel_enable_dvi,
+ .platform_disable = am3517_crane_panel_disable_dvi,
+};
+
+static struct omap_dss_device am3517_crane_dvi_device = {
+ .type = OMAP_DISPLAY_TYPE_DPI,
+ .name = "dvi",
+ .driver_name = "generic_dpi_panel",
+ .data = &dvi_panel,
+ .phy.dpi.data_lines = 24,
+};
+
+static struct omap_dss_device *am3517_crane_dss_devices[] = {
+ &am3517_crane_tv_device,
+ &am3517_crane_dvi_device,
+};
+
+static struct omap_dss_board_info am3517_crane_dss_data = {
+ .num_devices = ARRAY_SIZE(am3517_crane_dss_devices),
+ .devices = am3517_crane_dss_devices,
+ .default_device = &am3517_crane_dvi_device,
+};
+
static void __init am3517_crane_init(void)
{
int ret;
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+ omap_display_init(&am3517_crane_dss_data);
omap_serial_init();
omap_board_config = am3517_crane_config;
@@ -103,6 +178,9 @@ static void __init am3517_crane_init(void)
}
usbhs_init(&usbhs_bdata);
+
+ /* DSS */
+ am3517_crane_display_init();
}
MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
--
1.7.1.226.g770c5
More information about the linux-arm-kernel
mailing list