aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/dss-common.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2013-03-18 15:50:25 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2014-03-19 10:52:23 +0200
commitdcdf407b9ddceb1383da14c9a095e0b07a85b014 (patch)
tree971bbe76a1a0afdc79885355ffd331512dcae1f9 /arch/arm/mach-omap2/dss-common.c
parentLinux 3.14-rc4 (diff)
downloadlinux-dev-dcdf407b9ddceb1383da14c9a095e0b07a85b014.tar.xz
linux-dev-dcdf407b9ddceb1383da14c9a095e0b07a85b014.zip
ARM: OMAP2+: add omapdss_init_of()
The OMAP display architecture requires a bunch of platform devices which are not created via .dts (for now). We also need to pass a few function pointers and the DSS hardware version from the arch code to omapdss driver. This patch adds omapdss_init_of() function, called from board-generic at init time, which handles those tasks. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Archit Taneja <archit@ti.com> Acked-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/dss-common.c')
-rw-r--r--arch/arm/mach-omap2/dss-common.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/dss-common.c b/arch/arm/mach-omap2/dss-common.c
index dadccc91488c..ab8cf26d5096 100644
--- a/arch/arm/mach-omap2/dss-common.c
+++ b/arch/arm/mach-omap2/dss-common.c
@@ -33,6 +33,7 @@
#include "soc.h"
#include "dss-common.h"
#include "mux.h"
+#include "display.h"
#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
@@ -101,6 +102,12 @@ static struct omap_dss_board_info omap4_panda_dss_data = {
void __init omap4_panda_display_init_of(void)
{
+ struct device_node *node;
+
+ node = omapdss_find_dss_of_node();
+ if (node && of_device_is_available(node))
+ return;
+
omap_display_init(&omap4_panda_dss_data);
platform_device_register(&omap4_panda_tfp410_device);
@@ -194,6 +201,11 @@ static struct omap_dss_board_info sdp4430_dss_data = {
void __init omap_4430sdp_display_init_of(void)
{
int r;
+ struct device_node *node;
+
+ node = omapdss_find_dss_of_node();
+ if (node && of_device_is_available(node))
+ return;
r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
"display_sel");
@@ -252,6 +264,12 @@ static struct omap_dss_board_info igep2_dss_data = {
void __init omap3_igep2_display_init_of(void)
{
+ struct device_node *node;
+
+ node = omapdss_find_dss_of_node();
+ if (node && of_device_is_available(node))
+ return;
+
omap_display_init(&igep2_dss_data);
platform_device_register(&omap3_igep2_tfp410_device);