diff options
author | Archit Taneja <archit@ti.com> | 2013-09-16 09:18:31 +0200 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2013-10-08 23:03:07 +0200 |
commit | 576e5bda70a5442381ee31285edada114d692132 (patch) | |
tree | 5965e5e712098280045afdfdce02169d64163747 /arch/arm/mach-omap2 | |
parent | ARM: OMAP2+: display: Create omapvrfb and omapfb devices inside omap_display_... (diff) | |
download | linux-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.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/display.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/display.h | 1 |
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 |