OMAPDSS: Adapt DSS driver for skipping initialization during bootup
authorRakesh Movva <r-movva@ti.com>
Wed, 16 Sep 2015 13:20:33 +0000 (08:20 -0500)
committerVishal Mahaveer <vishalm@ti.com>
Fri, 18 Sep 2015 20:25:08 +0000 (15:25 -0500)
Leverage the detection methods for display skip during init
and conditionally configure dss, dispc and overlay managers.

Since DSS clock configuration is required for overlay scaling
function to work correctly disabling only the pm runtime enable
logic should be enough.

Change-Id: I4898db98d04a68d0159de137823b95b7c96241de
Signed-off-by: Sundar Raman <sunds@ti.com>
Signed-off-by: Rakesh Movva <r-movva@ti.com>
drivers/video/fbdev/omap2/dss/apply.c
drivers/video/fbdev/omap2/dss/dss.c
drivers/video/fbdev/omap2/dss/manager.c

index 0a0b084ce65d626ca7619f81065b914d4286bb89..0e767386b6014032a3c809adf156c65823b46803 100644 (file)
@@ -721,11 +721,13 @@ static void dss_mgr_write_regs_extra(struct omap_overlay_manager *mgr)
        if (!mp->extra_info_dirty)
                return;
 
        if (!mp->extra_info_dirty)
                return;
 
-       dispc_mgr_set_timings(mgr->id, &mp->timings);
+       if (!omapdss_skipinit() || mgr->id != OMAP_DSS_CHANNEL_LCD) {
+               dispc_mgr_set_timings(mgr->id, &mp->timings);
 
 
-       /* lcd_config parameters */
-       if (dss_mgr_is_lcd(mgr->id))
-               dispc_mgr_set_lcd_config(mgr->id, &mp->lcd_config);
+               /* lcd_config parameters */
+               if (dss_mgr_is_lcd(mgr->id))
+                       dispc_mgr_set_lcd_config(mgr->id, &mp->lcd_config);
+       }
 
        mp->extra_info_dirty = false;
        if (mp->updating)
 
        mp->extra_info_dirty = false;
        if (mp->updating)
index 11626611efa89cf0afb5d621e46342ca8dae2607..46e852839f4305ed22be2d789bdc2992a45bc799 100644 (file)
@@ -1074,12 +1074,15 @@ static int __init omap_dsshw_probe(struct platform_device *pdev)
        if (r)
                goto err_setup_clocks;
 
        if (r)
                goto err_setup_clocks;
 
-       pm_runtime_enable(&pdev->dev);
-       pm_runtime_irq_safe(&pdev->dev);
+       if (!omapdss_skipinit()) {
 
 
-       r = dss_runtime_get();
-       if (r)
-               goto err_runtime_get;
+               pm_runtime_enable(&pdev->dev);
+               pm_runtime_irq_safe(&pdev->dev);
+
+               r = dss_runtime_get();
+               if (r)
+                       goto err_runtime_get;
+       }
 
        dss.dss_clk_rate = clk_get_rate(dss.dss_clk);
 
 
        dss.dss_clk_rate = clk_get_rate(dss.dss_clk);
 
index 1aac9b4191a9762e7556dcb2485c178fa0ff17d2..fb6ebdfd16630c2129d7cdfacca01aba76a840c8 100644 (file)
@@ -231,6 +231,9 @@ int dss_mgr_check(struct omap_overlay_manager *mgr,
        struct omap_overlay *ovl;
        int r;
 
        struct omap_overlay *ovl;
        int r;
 
+       if (omapdss_skipinit())
+               return 0;
+
        if (dss_has_feature(FEAT_ALPHA_FREE_ZORDER)) {
                r = dss_mgr_check_zorder(mgr, overlay_infos);
                if (r)
        if (dss_has_feature(FEAT_ALPHA_FREE_ZORDER)) {
                r = dss_mgr_check_zorder(mgr, overlay_infos);
                if (r)