drm/msm/mdp5: don't use autosuspend
authorRob Clark <robdclark@gmail.com>
Fri, 20 Oct 2017 12:17:43 +0000 (08:17 -0400)
committerRob Clark <robdclark@gmail.com>
Sat, 28 Oct 2017 18:02:55 +0000 (14:02 -0400)
It's only likely to paper over bugs.  Unlike the gpu, where we want to
keep things alive a bit longer in expectation of the next frame's
submit, when the display is shut down we can power off immediately.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Acked-by: Archit Taneja <architt@codeaurora.org>
drivers/gpu/drm/msm/mdp/mdp5/mdp5_cmd_encoder.c
drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c
drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c

index 60790df91bfa050469a45a43cf06770345852819..1abc7f5c345c4f32237b27ad261a0fd3bd541a0b 100644 (file)
@@ -224,7 +224,7 @@ int mdp5_cmd_encoder_set_split_display(struct drm_encoder *encoder,
        mdp5_write(mdp5_kms, REG_MDP5_SPLIT_DPL_LOWER,
                   MDP5_SPLIT_DPL_LOWER_SMART_PANEL);
        mdp5_write(mdp5_kms, REG_MDP5_SPLIT_DPL_EN, 1);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 
        return 0;
 }
index 1a4aedb16b54521b98324912e748c21eda6d324c..5ad722c83b3fb0ba5cb886e8f09d026ec38daffa 100644 (file)
@@ -434,7 +434,7 @@ static void mdp5_crtc_atomic_disable(struct drm_crtc *crtc,
                mdp_irq_unregister(&mdp5_kms->base, &mdp5_crtc->pp_done);
 
        mdp_irq_unregister(&mdp5_kms->base, &mdp5_crtc->err);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 
        mdp5_crtc->enabled = false;
 }
@@ -831,7 +831,7 @@ set_cursor:
        crtc_flush(crtc, flush_mask);
 
 end:
-       pm_runtime_put_autosuspend(&pdev->dev);
+       pm_runtime_put_sync(&pdev->dev);
        if (old_bo) {
                drm_flip_work_queue(&mdp5_crtc->unref_cursor_work, old_bo);
                /* enable vblank to complete cursor work: */
@@ -877,7 +877,7 @@ static int mdp5_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
 
        crtc_flush(crtc, flush_mask);
 
-       pm_runtime_put_autosuspend(&mdp5_kms->pdev->dev);
+       pm_runtime_put_sync(&mdp5_kms->pdev->dev);
 
        return 0;
 }
index 5b851380d3f2d5a1f73d1babe5f28cebfa9ee0e5..36ad3cbe5f79a0540f107c86269ef9c2ef71b6b4 100644 (file)
@@ -384,7 +384,7 @@ int mdp5_vid_encoder_set_split_display(struct drm_encoder *encoder,
 
        mdp5_ctl_pair(mdp5_encoder->ctl, mdp5_slave_enc->ctl, true);
 
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 
        return 0;
 }
index bb5deb00c8994fe9d6eb301396b8d7834c9ddc29..280e368bc9bb828d103172c642b4ff80e5269dfc 100644 (file)
@@ -54,7 +54,7 @@ void mdp5_irq_preinstall(struct msm_kms *kms)
        pm_runtime_get_sync(dev);
        mdp5_write(mdp5_kms, REG_MDP5_INTR_CLEAR, 0xffffffff);
        mdp5_write(mdp5_kms, REG_MDP5_INTR_EN, 0x00000000);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 }
 
 int mdp5_irq_postinstall(struct msm_kms *kms)
@@ -72,7 +72,7 @@ int mdp5_irq_postinstall(struct msm_kms *kms)
 
        pm_runtime_get_sync(dev);
        mdp_irq_register(mdp_kms, error_handler);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 
        return 0;
 }
@@ -84,7 +84,7 @@ void mdp5_irq_uninstall(struct msm_kms *kms)
 
        pm_runtime_get_sync(dev);
        mdp5_write(mdp5_kms, REG_MDP5_INTR_EN, 0x00000000);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 }
 
 irqreturn_t mdp5_irq(struct msm_kms *kms)
@@ -119,7 +119,7 @@ int mdp5_enable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
        pm_runtime_get_sync(dev);
        mdp_update_vblank_mask(to_mdp_kms(kms),
                        mdp5_crtc_vblank(crtc), true);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 
        return 0;
 }
@@ -132,5 +132,5 @@ void mdp5_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
        pm_runtime_get_sync(dev);
        mdp_update_vblank_mask(to_mdp_kms(kms),
                        mdp5_crtc_vblank(crtc), false);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 }
index 494b2936502d83c2eb142506d2c1e554d339b8fb..3e9bba4d66246b10a2f4a914fbddf97513681de0 100644 (file)
@@ -125,7 +125,7 @@ static void mdp5_complete_commit(struct msm_kms *kms, struct drm_atomic_state *s
        if (mdp5_kms->smp)
                mdp5_smp_complete_commit(mdp5_kms->smp, &mdp5_kms->state->smp);
 
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 }
 
 static void mdp5_wait_for_crtc_commit_done(struct msm_kms *kms,
@@ -496,7 +496,7 @@ static void read_mdp_hw_revision(struct mdp5_kms *mdp5_kms,
 
        pm_runtime_get_sync(dev);
        version = mdp5_read(mdp5_kms, REG_MDP5_HW_VERSION);
-       pm_runtime_put_autosuspend(dev);
+       pm_runtime_put_sync(dev);
 
        *major = FIELD(version, MDP5_HW_VERSION_MAJOR);
        *minor = FIELD(version, MDP5_HW_VERSION_MINOR);
@@ -683,7 +683,7 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev)
                aspace = NULL;;
        }
 
-       pm_runtime_put_autosuspend(&pdev->dev);
+       pm_runtime_put_sync(&pdev->dev);
 
        ret = modeset_init(mdp5_kms);
        if (ret) {