From: Stephen Boyd <swboyd@chromium.org> To: Kuogee Hsieh <quic_khsieh@quicinc.com>, agross@kernel.org, airlied@linux.ie, bjorn.andersson@linaro.org, daniel@ffwll.ch, dmitry.baryshkov@linaro.org, dri-devel@lists.freedesktop.org, robdclark@gmail.com, sean@poorly.run, vkoul@kernel.org Cc: quic_abhinavk@quicinc.com, aravindh@codeaurora.org, quic_sbillaka@quicinc.com, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v15 1/4] drm/msm/dp: do not initialize phy until plugin interrupt received Date: Fri, 14 Jan 2022 15:41:44 -0600 [thread overview] Message-ID: <CAE-0n52UYBajrqGFqppun5oK82V3ppjvQxANU27kL95gCZtURg@mail.gmail.com> (raw) In-Reply-To: <1642194710-2512-2-git-send-email-quic_khsieh@quicinc.com> Quoting Kuogee Hsieh (2022-01-14 13:11:47) > diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c > index 7cc4d21..7cd6222 100644 > --- a/drivers/gpu/drm/msm/dp/dp_display.c > +++ b/drivers/gpu/drm/msm/dp/dp_display.c > @@ -696,12 +699,9 @@ static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data) > * dp core (ahb/aux clks) must be initialized before > * irq_hpd be handled > */ > - if (dp->core_initialized) { > - ret = dp_display_usbpd_attention_cb(&dp->pdev->dev); > - if (ret == -ECONNRESET) { /* cable unplugged */ > - dp->core_initialized = false; > - } > - } > + if (dp->core_initialized) When is this condition false? The irq isn't unmasked until the core has been initialized. On the resume path I suppose the irq is enabled in dp_display_host_init() calling dp_ctrl_reset_irq_ctrl(), and then we could immediately get the interrupt but it will block on the event_mutex lock. > + dp_display_usbpd_attention_cb(&dp->pdev->dev); > + > DRM_DEBUG_DP("hpd_state=%d\n", state); > > mutex_unlock(&dp->event_mutex); > @@ -1363,14 +1373,16 @@ static int dp_pm_suspend(struct device *dev) > if (dp_power_clk_status(dp->power, DP_CTRL_PM)) > dp_ctrl_off_link_stream(dp->ctrl); > > + dp_display_host_phy_exit(dp); > + > + /* host_init will be called at pm_resume */ > dp_display_host_deinit(dp); > + } else { > + dp_display_host_phy_exit(dp); I fail to see where this condition happens. Can we suspend the device without the irq being installed? > } > > dp->hpd_state = ST_SUSPENDED; > > - /* host_init will be called at pm_resume */ > - dp->core_initialized = false; > - > DRM_DEBUG_DP("After, core_inited=%d power_on=%d\n", > dp->core_initialized, dp_display->power_on); >
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Boyd <swboyd@chromium.org> To: Kuogee Hsieh <quic_khsieh@quicinc.com>, agross@kernel.org, airlied@linux.ie, bjorn.andersson@linaro.org, daniel@ffwll.ch, dmitry.baryshkov@linaro.org, dri-devel@lists.freedesktop.org, robdclark@gmail.com, sean@poorly.run, vkoul@kernel.org Cc: quic_sbillaka@quicinc.com, linux-arm-msm@vger.kernel.org, quic_abhinavk@quicinc.com, linux-kernel@vger.kernel.org, aravindh@codeaurora.org, freedreno@lists.freedesktop.org Subject: Re: [PATCH v15 1/4] drm/msm/dp: do not initialize phy until plugin interrupt received Date: Fri, 14 Jan 2022 15:41:44 -0600 [thread overview] Message-ID: <CAE-0n52UYBajrqGFqppun5oK82V3ppjvQxANU27kL95gCZtURg@mail.gmail.com> (raw) In-Reply-To: <1642194710-2512-2-git-send-email-quic_khsieh@quicinc.com> Quoting Kuogee Hsieh (2022-01-14 13:11:47) > diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c > index 7cc4d21..7cd6222 100644 > --- a/drivers/gpu/drm/msm/dp/dp_display.c > +++ b/drivers/gpu/drm/msm/dp/dp_display.c > @@ -696,12 +699,9 @@ static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data) > * dp core (ahb/aux clks) must be initialized before > * irq_hpd be handled > */ > - if (dp->core_initialized) { > - ret = dp_display_usbpd_attention_cb(&dp->pdev->dev); > - if (ret == -ECONNRESET) { /* cable unplugged */ > - dp->core_initialized = false; > - } > - } > + if (dp->core_initialized) When is this condition false? The irq isn't unmasked until the core has been initialized. On the resume path I suppose the irq is enabled in dp_display_host_init() calling dp_ctrl_reset_irq_ctrl(), and then we could immediately get the interrupt but it will block on the event_mutex lock. > + dp_display_usbpd_attention_cb(&dp->pdev->dev); > + > DRM_DEBUG_DP("hpd_state=%d\n", state); > > mutex_unlock(&dp->event_mutex); > @@ -1363,14 +1373,16 @@ static int dp_pm_suspend(struct device *dev) > if (dp_power_clk_status(dp->power, DP_CTRL_PM)) > dp_ctrl_off_link_stream(dp->ctrl); > > + dp_display_host_phy_exit(dp); > + > + /* host_init will be called at pm_resume */ > dp_display_host_deinit(dp); > + } else { > + dp_display_host_phy_exit(dp); I fail to see where this condition happens. Can we suspend the device without the irq being installed? > } > > dp->hpd_state = ST_SUSPENDED; > > - /* host_init will be called at pm_resume */ > - dp->core_initialized = false; > - > DRM_DEBUG_DP("After, core_inited=%d power_on=%d\n", > dp->core_initialized, dp_display->power_on); >
next prev parent reply other threads:[~2022-01-14 21:41 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-01-14 21:11 [PATCH v15 0/4] group dp driver related patches into one series Kuogee Hsieh 2022-01-14 21:11 ` Kuogee Hsieh 2022-01-14 21:11 ` [PATCH v15 1/4] drm/msm/dp: do not initialize phy until plugin interrupt received Kuogee Hsieh 2022-01-14 21:11 ` Kuogee Hsieh 2022-01-14 21:41 ` Stephen Boyd [this message] 2022-01-14 21:41 ` Stephen Boyd 2022-01-14 22:28 ` Kuogee Hsieh 2022-01-14 22:28 ` Kuogee Hsieh 2022-01-14 23:23 ` Stephen Boyd 2022-01-14 23:23 ` Stephen Boyd 2022-01-14 21:11 ` [PATCH v15 2/4] drm/msm/dp: populate connector of struct dp_panel Kuogee Hsieh 2022-01-14 21:11 ` Kuogee Hsieh 2022-01-14 21:11 ` [PATCH v15 3/4] drm/msm/dp: add support of tps4 (training pattern 4) for HBR3 Kuogee Hsieh 2022-01-14 21:11 ` Kuogee Hsieh 2022-01-14 21:11 ` [PATCH v15 4/4] drm/msm/dp: stop link training after link training 2 failed Kuogee Hsieh 2022-01-14 21:11 ` Kuogee Hsieh
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=CAE-0n52UYBajrqGFqppun5oK82V3ppjvQxANU27kL95gCZtURg@mail.gmail.com \ --to=swboyd@chromium.org \ --cc=agross@kernel.org \ --cc=airlied@linux.ie \ --cc=aravindh@codeaurora.org \ --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=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=quic_abhinavk@quicinc.com \ --cc=quic_khsieh@quicinc.com \ --cc=quic_sbillaka@quicinc.com \ --cc=robdclark@gmail.com \ --cc=sean@poorly.run \ --cc=vkoul@kernel.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: linkBe 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.