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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).