2011-04-29 12:30:41

by Srinath R

[permalink] [raw]
Subject: [PATCH 2/2] AM35xx-Craneboard:Display: Add DVI and TV Support

From: Srinath <[email protected]>

Added Display (DVI and TV) support for CraneBoard.

Signed-off-by: Srinath <[email protected]>
---
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


2011-04-29 12:46:37

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 2/2] AM35xx-Craneboard:Display: Add DVI and TV Support

Hello.

On 29-04-2011 15:41, [email protected] wrote:

> From: Srinath <[email protected]>

> Added Display (DVI and TV) support for CraneBoard.

> Signed-off-by: Srinath <[email protected]>
[...]

> 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
[...]
> @@ -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;
> + }

You can use gpio_request_one() ISO gpio_request()/gpio_direction_output().

WBR, Sergei