From: abhinavk@codeaurora.org
To: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Kalyan Thota <kalyan_t@codeaurora.org>,
Kuogee Hsieh <khsieh@codeaurora.org>,
Rob Herring <robh+dt@kernel.org>,
Stephen Boyd <swboyd@chromium.org>,
linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [Freedreno] [PATCH v3 2/5] drm/msm/dp: Modify prototype of encoder based API
Date: Tue, 05 Oct 2021 13:13:08 -0700 [thread overview]
Message-ID: <1b86ea5b536d11335ec457fb729886ce@codeaurora.org> (raw)
In-Reply-To: <20211001180058.1021913-3-bjorn.andersson@linaro.org>
On 2021-10-01 11:00, Bjorn Andersson wrote:
> Functions in the DisplayPort code that relates to individual instances
> (encoders) are passed both the struct msm_dp and the struct
> drm_encoder. But
> in a situation where multiple DP instances would exist this means that
> the caller need to resolve which struct msm_dp relates to the struct
> drm_encoder at hand.
>
> Store a reference to the struct msm_dp associated with each
> dpu_encoder_virt to allow the particular instance to be associate with
> the encoder in the following patch.
>
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Abhinav Kumar <abhinavk@codeaurora.org>
> ---
>
> Changes since v2:
> - None
>
> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 23 ++++++++++++---------
> 1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> index 0e9d3fa1544b..b7f33da2799c 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> @@ -168,6 +168,7 @@ enum dpu_enc_rc_states {
> * @vsync_event_work: worker to handle vsync event for autorefresh
> * @topology: topology of the display
> * @idle_timeout: idle timeout duration in milliseconds
> + * @dp: msm_dp pointer, for DP encoders
> */
> struct dpu_encoder_virt {
> struct drm_encoder base;
> @@ -206,6 +207,8 @@ struct dpu_encoder_virt {
> struct msm_display_topology topology;
>
> u32 idle_timeout;
> +
> + struct msm_dp *dp;
> };
>
> #define to_dpu_encoder_virt(x) container_of(x, struct
> dpu_encoder_virt, base)
> @@ -1000,8 +1003,8 @@ static void dpu_encoder_virt_mode_set(struct
> drm_encoder *drm_enc,
>
> trace_dpu_enc_mode_set(DRMID(drm_enc));
>
> - if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS && priv->dp)
> - msm_dp_display_mode_set(priv->dp, drm_enc, mode, adj_mode);
> + if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS)
> + msm_dp_display_mode_set(dpu_enc->dp, drm_enc, mode, adj_mode);
>
> list_for_each_entry(conn_iter, connector_list, head)
> if (conn_iter->encoder == drm_enc)
> @@ -1182,9 +1185,8 @@ static void dpu_encoder_virt_enable(struct
> drm_encoder *drm_enc)
>
> _dpu_encoder_virt_enable_helper(drm_enc);
>
> - if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS && priv->dp) {
> - ret = msm_dp_display_enable(priv->dp,
> - drm_enc);
> + if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) {
> + ret = msm_dp_display_enable(dpu_enc->dp, drm_enc);
> if (ret) {
> DPU_ERROR_ENC(dpu_enc, "dp display enable failed: %d\n",
> ret);
> @@ -1224,8 +1226,8 @@ static void dpu_encoder_virt_disable(struct
> drm_encoder *drm_enc)
> /* wait for idle */
> dpu_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE);
>
> - if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS && priv->dp) {
> - if (msm_dp_display_pre_disable(priv->dp, drm_enc))
> + if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) {
> + if (msm_dp_display_pre_disable(dpu_enc->dp, drm_enc))
> DPU_ERROR_ENC(dpu_enc, "dp display push idle failed\n");
> }
>
> @@ -1253,8 +1255,8 @@ static void dpu_encoder_virt_disable(struct
> drm_encoder *drm_enc)
>
> DPU_DEBUG_ENC(dpu_enc, "encoder disabled\n");
>
> - if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS && priv->dp) {
> - if (msm_dp_display_disable(priv->dp, drm_enc))
> + if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) {
> + if (msm_dp_display_disable(dpu_enc->dp, drm_enc))
> DPU_ERROR_ENC(dpu_enc, "dp display disable failed\n");
> }
>
> @@ -2170,7 +2172,8 @@ int dpu_encoder_setup(struct drm_device *dev,
> struct drm_encoder *enc,
> timer_setup(&dpu_enc->vsync_event_timer,
> dpu_encoder_vsync_event_handler,
> 0);
> -
> + else if (disp_info->intf_type == DRM_MODE_ENCODER_TMDS)
> + dpu_enc->dp = priv->dp;
>
> INIT_DELAYED_WORK(&dpu_enc->delayed_off_work,
> dpu_encoder_off_work);
next prev parent reply other threads:[~2021-10-05 20:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-01 18:00 [PATCH v3 0/5] drm/msm/dp: Support multiple DP instances and add sc8180x Bjorn Andersson
2021-10-01 18:00 ` [PATCH v3 1/5] drm/msm/dp: Remove global g_dp_display variable Bjorn Andersson
2021-10-05 20:11 ` [Freedreno] " abhinavk
2021-10-01 18:00 ` [PATCH v3 2/5] drm/msm/dp: Modify prototype of encoder based API Bjorn Andersson
2021-10-05 20:13 ` abhinavk [this message]
2021-10-01 18:00 ` [PATCH v3 3/5] drm/msm/dp: Support up to 3 DP controllers Bjorn Andersson
2021-10-05 0:58 ` Stephen Boyd
2021-10-05 1:15 ` Bjorn Andersson
2021-10-05 1:17 ` Stephen Boyd
2021-10-05 20:16 ` [Freedreno] " abhinavk
2021-10-05 20:19 ` abhinavk
2021-10-01 18:00 ` [PATCH v3 4/5] dt-bindings: msm/dp: Add SC8180x compatibles Bjorn Andersson
2021-10-05 20:20 ` abhinavk
2021-10-01 18:00 ` [PATCH v3 5/5] drm/msm/dp: Add sc8180x DP controllers Bjorn Andersson
2021-10-05 20:20 ` [Freedreno] " abhinavk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1b86ea5b536d11335ec457fb729886ce@codeaurora.org \
--to=abhinavk@codeaurora.org \
--cc=airlied@linux.ie \
--cc=bjorn.andersson@linaro.org \
--cc=daniel@ffwll.ch \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=kalyan_t@codeaurora.org \
--cc=khsieh@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robdclark@gmail.com \
--cc=robh+dt@kernel.org \
--cc=sean@poorly.run \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.