summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorArchit Taneja <archit@ti.com>2013-09-16 09:18:31 +0200
committerTony Lindgren <tony@atomide.com>2013-10-08 23:03:07 +0200
commit576e5bda70a5442381ee31285edada114d692132 (patch)
tree5965e5e712098280045afdfdce02169d64163747 /arch/arm/mach-omap2
parentARM: OMAP2+: display: Create omapvrfb and omapfb devices inside omap_display_... (diff)
downloadlinux-576e5bda70a5442381ee31285edada114d692132.tar.xz
linux-576e5bda70a5442381ee31285edada114d692132.zip
ARM: OMAP2+: display: Create omap_vout device inside omap_display_init
Move omap_vout device creation inside the omap_display_init so that we can correctly create the device based on the presence of omapdss within the platform. For example, on a kernel image supporting multiple platforms, omap_init_vout will create a omapdrm platform device on a AM33xx platform even though it doesn't have a DSS block. Signed-off-by: Archit Taneja <archit@ti.com> Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/devices.c10
-rw-r--r--arch/arm/mach-omap2/display.c7
-rw-r--r--arch/arm/mach-omap2/display.h1
3 files changed, 13 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 5c5315ba129b..89a8698cd6ed 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -37,6 +37,7 @@
#include "mux.h"
#include "control.h"
#include "devices.h"
+#include "display.h"
#define L3_MODULES_MAX_LEN 12
#define L3_MODULES 3
@@ -466,13 +467,13 @@ static struct platform_device omap_vout_device = {
.resource = &omap_vout_resource[0],
.id = -1,
};
-static void omap_init_vout(void)
+
+int __init omap_init_vout(void)
{
- if (platform_device_register(&omap_vout_device) < 0)
- printk(KERN_ERR "Unable to register OMAP-VOUT device\n");
+ return platform_device_register(&omap_vout_device);
}
#else
-static inline void omap_init_vout(void) {}
+int __init omap_init_vout(void) { return 0; }
#endif
#if IS_ENABLED(CONFIG_WL12XX)
@@ -536,7 +537,6 @@ static int __init omap2_init_devices(void)
omap_init_wl12xx_of();
}
omap_init_sti();
- omap_init_vout();
return 0;
}
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index fb66e5ae56ad..a4e536b11ec9 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -437,6 +437,13 @@ int __init omap_display_init(struct omap_dss_board_info *board_data)
return r;
}
+ /* create V4L2 display device */
+ r = omap_init_vout();
+ if (r < 0) {
+ pr_err("Unable to register omap_vout device\n");
+ return r;
+ }
+
return 0;
}
diff --git a/arch/arm/mach-omap2/display.h b/arch/arm/mach-omap2/display.h
index bc7af4075914..f3d2ce4bc262 100644
--- a/arch/arm/mach-omap2/display.h
+++ b/arch/arm/mach-omap2/display.h
@@ -29,4 +29,5 @@ struct omap_dss_dispc_dev_attr {
int omap_init_drm(void);
int omap_init_vrfb(void);
int omap_init_fb(void);
+int omap_init_vout(void);
#endif