aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2017-08-11 09:49:11 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2017-08-16 08:38:51 -0400
commit5ce783025c827340cdc966508a0d445dcd591ba9 (patch)
treee9ac67c482ac36e934fa5f2f901dd2a5b5248fc6
parentd86bd82c1ae7b4e3304be969cecd4ece63b78eea (diff)
ARM: OMAP2+: Don't register omapdss device for omapdrm
The omapdrm driver doesn't need the omapdss device anymore. Although it can't be removed completely as the fbdev driver still requires it, we can condition its registration to the usage of the omapfb driver. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Tony Lindgren <tony@atomide.com> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--arch/arm/mach-omap2/display.c111
1 files changed, 60 insertions, 51 deletions
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 5f5697668de8..798fc718fffe 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -66,6 +66,7 @@
66 */ 66 */
67#define FRAMEDONE_IRQ_TIMEOUT 100 67#define FRAMEDONE_IRQ_TIMEOUT 100
68 68
69#if defined(CONFIG_FB_OMAP2)
69static struct platform_device omap_display_device = { 70static struct platform_device omap_display_device = {
70 .name = "omapdss", 71 .name = "omapdss",
71 .id = -1, 72 .id = -1,
@@ -163,6 +164,64 @@ static enum omapdss_version __init omap_display_get_version(void)
163 return OMAPDSS_VER_UNKNOWN; 164 return OMAPDSS_VER_UNKNOWN;
164} 165}
165 166
167static int __init omapdss_init_fbdev(void)
168{
169 static struct omap_dss_board_info board_data = {
170 .dsi_enable_pads = omap_dsi_enable_pads,
171 .dsi_disable_pads = omap_dsi_disable_pads,
172 .set_min_bus_tput = omap_dss_set_min_bus_tput,
173 };
174 struct device_node *node;
175
176 board_data.version = omap_display_get_version();
177 if (board_data.version == OMAPDSS_VER_UNKNOWN) {
178 pr_err("DSS not supported on this SoC\n");
179 return -ENODEV;
180 }
181
182 omap_display_device.dev.platform_data = &board_data;
183
184 r = platform_device_register(&omap_display_device);
185 if (r < 0) {
186 pr_err("Unable to register omapdss device\n");
187 return r;
188 }
189
190 /* create vrfb device */
191 r = omap_init_vrfb();
192 if (r < 0) {
193 pr_err("Unable to register omapvrfb device\n");
194 return r;
195 }
196
197 /* create FB device */
198 r = omap_init_fb();
199 if (r < 0) {
200 pr_err("Unable to register omapfb device\n");
201 return r;
202 }
203
204 /* create V4L2 display device */
205 r = omap_init_vout();
206 if (r < 0) {
207 pr_err("Unable to register omap_vout device\n");
208 return r;
209 }
210
211 /* add DSI info for omap4 */
212 node = of_find_node_by_name(NULL, "omap4_padconf_global");
213 if (node)
214 omap4_dsi_mux_syscon = syscon_node_to_regmap(node);
215
216 return 0;
217}
218#else
219static inline int omapdss_init_fbdev(void)
220{
221 return 0;
222}
223#endif /* CONFIG_FB_OMAP2 */
224
166static void dispc_disable_outputs(void) 225static void dispc_disable_outputs(void)
167{ 226{
168 u32 v, irq_mask = 0; 227 u32 v, irq_mask = 0;
@@ -335,16 +394,9 @@ static struct device_node * __init omapdss_find_dss_of_node(void)
335int __init omapdss_init_of(void) 394int __init omapdss_init_of(void)
336{ 395{
337 int r; 396 int r;
338 enum omapdss_version ver;
339 struct device_node *node; 397 struct device_node *node;
340 struct platform_device *pdev; 398 struct platform_device *pdev;
341 399
342 static struct omap_dss_board_info board_data = {
343 .dsi_enable_pads = omap_dsi_enable_pads,
344 .dsi_disable_pads = omap_dsi_disable_pads,
345 .set_min_bus_tput = omap_dss_set_min_bus_tput,
346 };
347
348 /* only create dss helper devices if dss is enabled in the .dts */ 400 /* only create dss helper devices if dss is enabled in the .dts */
349 401
350 node = omapdss_find_dss_of_node(); 402 node = omapdss_find_dss_of_node();
@@ -354,13 +406,6 @@ int __init omapdss_init_of(void)
354 if (!of_device_is_available(node)) 406 if (!of_device_is_available(node))
355 return 0; 407 return 0;
356 408
357 ver = omap_display_get_version();
358
359 if (ver == OMAPDSS_VER_UNKNOWN) {
360 pr_err("DSS not supported on this SoC\n");
361 return -ENODEV;
362 }
363
364 pdev = of_find_device_by_node(node); 409 pdev = of_find_device_by_node(node);
365 410
366 if (!pdev) { 411 if (!pdev) {
@@ -374,41 +419,5 @@ int __init omapdss_init_of(void)
374 return r; 419 return r;
375 } 420 }
376 421
377 board_data.version = ver; 422 return omapdss_init_fbdev();
378
379 omap_display_device.dev.platform_data = &board_data;
380
381 r = platform_device_register(&omap_display_device);
382 if (r < 0) {
383 pr_err("Unable to register omapdss device\n");
384 return r;
385 }
386
387 /* create vrfb device */
388 r = omap_init_vrfb();
389 if (r < 0) {
390 pr_err("Unable to register omapvrfb device\n");
391 return r;
392 }
393
394 /* create FB device */
395 r = omap_init_fb();
396 if (r < 0) {
397 pr_err("Unable to register omapfb device\n");
398 return r;
399 }
400
401 /* create V4L2 display device */
402 r = omap_init_vout();
403 if (r < 0) {
404 pr_err("Unable to register omap_vout device\n");
405 return r;
406 }
407
408 /* add DSI info for omap4 */
409 node = of_find_node_by_name(NULL, "omap4_padconf_global");
410 if (node)
411 omap4_dsi_mux_syscon = syscon_node_to_regmap(node);
412
413 return 0;
414} 423}