drm/msm/dpu: split _dpu_encoder_resource_control_helper()
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 8 Feb 2024 15:20:42 +0000 (17:20 +0200)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Sun, 11 Feb 2024 20:38:08 +0000 (22:38 +0200)
Follow the _dpu_encoder_irq_control() change and split the
_dpu_encoder_resource_control_helper() into enable and disable parts.

Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/577525/
Link: https://lore.kernel.org/r/20240208-fd_remove_phys_ops_atomic_mode_set-v4-2-caf5dcd125c0@linaro.org
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h

index 2bb249c564005b8b8f8545d9084d8a96e3422be5..b740bbbfbf4e81dd72c7ad695c88416ad591eebd 100644 (file)
@@ -761,8 +761,7 @@ static void _dpu_encoder_irq_disable(struct drm_encoder *drm_enc)
        }
 }
 
-static void _dpu_encoder_resource_control_helper(struct drm_encoder *drm_enc,
-               bool enable)
+static void _dpu_encoder_resource_enable(struct drm_encoder *drm_enc)
 {
        struct msm_drm_private *priv;
        struct dpu_kms *dpu_kms;
@@ -772,28 +771,42 @@ static void _dpu_encoder_resource_control_helper(struct drm_encoder *drm_enc,
        priv = drm_enc->dev->dev_private;
        dpu_kms = to_dpu_kms(priv->kms);
 
-       trace_dpu_enc_rc_helper(DRMID(drm_enc), enable);
+       trace_dpu_enc_rc_enable(DRMID(drm_enc));
 
        if (!dpu_enc->cur_master) {
                DPU_ERROR("encoder master not set\n");
                return;
        }
 
-       if (enable) {
-               /* enable DPU core clks */
-               pm_runtime_get_sync(&dpu_kms->pdev->dev);
+       /* enable DPU core clks */
+       pm_runtime_get_sync(&dpu_kms->pdev->dev);
 
-               /* enable all the irq */
-               _dpu_encoder_irq_enable(drm_enc);
+       /* enable all the irq */
+       _dpu_encoder_irq_enable(drm_enc);
+}
 
-       } else {
-               /* disable all the irq */
-               _dpu_encoder_irq_disable(drm_enc);
+static void _dpu_encoder_resource_disable(struct drm_encoder *drm_enc)
+{
+       struct msm_drm_private *priv;
+       struct dpu_kms *dpu_kms;
+       struct dpu_encoder_virt *dpu_enc;
 
-               /* disable DPU core clks */
-               pm_runtime_put_sync(&dpu_kms->pdev->dev);
+       dpu_enc = to_dpu_encoder_virt(drm_enc);
+       priv = drm_enc->dev->dev_private;
+       dpu_kms = to_dpu_kms(priv->kms);
+
+       trace_dpu_enc_rc_disable(DRMID(drm_enc));
+
+       if (!dpu_enc->cur_master) {
+               DPU_ERROR("encoder master not set\n");
+               return;
        }
 
+       /* disable all the irq */
+       _dpu_encoder_irq_disable(drm_enc);
+
+       /* disable DPU core clks */
+       pm_runtime_put_sync(&dpu_kms->pdev->dev);
 }
 
 static int dpu_encoder_resource_control(struct drm_encoder *drm_enc,
@@ -851,7 +864,7 @@ static int dpu_encoder_resource_control(struct drm_encoder *drm_enc,
                if (is_vid_mode && dpu_enc->rc_state == DPU_ENC_RC_STATE_IDLE)
                        _dpu_encoder_irq_enable(drm_enc);
                else
-                       _dpu_encoder_resource_control_helper(drm_enc, true);
+                       _dpu_encoder_resource_enable(drm_enc);
 
                dpu_enc->rc_state = DPU_ENC_RC_STATE_ON;
 
@@ -946,7 +959,7 @@ static int dpu_encoder_resource_control(struct drm_encoder *drm_enc,
                 * and in IDLE state the resources are already disabled
                 */
                if (dpu_enc->rc_state == DPU_ENC_RC_STATE_PRE_OFF)
-                       _dpu_encoder_resource_control_helper(drm_enc, false);
+                       _dpu_encoder_resource_disable(drm_enc);
 
                dpu_enc->rc_state = DPU_ENC_RC_STATE_OFF;
 
@@ -981,7 +994,7 @@ static int dpu_encoder_resource_control(struct drm_encoder *drm_enc,
                if (is_vid_mode)
                        _dpu_encoder_irq_disable(drm_enc);
                else
-                       _dpu_encoder_resource_control_helper(drm_enc, false);
+                       _dpu_encoder_resource_disable(drm_enc);
 
                dpu_enc->rc_state = DPU_ENC_RC_STATE_IDLE;
 
index 95ce7647ff7666e386ca8f21a30201629bd1e799..bd92fb2979aa22c4054c23701f765a66764db354 100644 (file)
@@ -273,6 +273,14 @@ DEFINE_EVENT(dpu_drm_obj_template, dpu_crtc_runtime_resume,
        TP_PROTO(uint32_t drm_id),
        TP_ARGS(drm_id)
 );
+DEFINE_EVENT(dpu_drm_obj_template, dpu_enc_rc_enable,
+       TP_PROTO(uint32_t drm_id),
+       TP_ARGS(drm_id)
+);
+DEFINE_EVENT(dpu_drm_obj_template, dpu_enc_rc_disable,
+       TP_PROTO(uint32_t drm_id),
+       TP_ARGS(drm_id)
+);
 
 TRACE_EVENT(dpu_enc_enable,
        TP_PROTO(uint32_t drm_id, int hdisplay, int vdisplay),
@@ -342,10 +350,6 @@ DECLARE_EVENT_CLASS(dpu_enc_id_enable_template,
        TP_printk("id=%u, enable=%s",
                  __entry->drm_id, __entry->enable ? "true" : "false")
 );
-DEFINE_EVENT(dpu_enc_id_enable_template, dpu_enc_rc_helper,
-       TP_PROTO(uint32_t drm_id, bool enable),
-       TP_ARGS(drm_id, enable)
-);
 DEFINE_EVENT(dpu_enc_id_enable_template, dpu_enc_vblank_cb,
        TP_PROTO(uint32_t drm_id, bool enable),
        TP_ARGS(drm_id, enable)