Message ID | 1619048258-8717-5-git-send-email-khsieh@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | check sink_count before update is_connected status | expand |
Quoting Kuogee Hsieh (2021-04-21 16:37:38) > Add checking aux read/write status at both dp_link_parse_sink_count() > and dp_link_parse_sink_status_filed() to avoid long timeout delay if s/filed/field/ > dp aux read/write failed at timeout due to cable unplugged. > > Changes in V4: > -- split this patch as stand alone patch > > Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> Can this patch come before the one previously? And then some fixes tag be added? Otherwise looks good to me. Reviewed-by: Stephen Boyd <swboyd@chromium.org> Tested-by: Stephen Boyd <swboyd@chromium.org>
On 04/05/2021 07:35, Stephen Boyd wrote: > Quoting Kuogee Hsieh (2021-04-21 16:37:38) >> Add checking aux read/write status at both dp_link_parse_sink_count() >> and dp_link_parse_sink_status_filed() to avoid long timeout delay if > > s/filed/field/ > >> dp aux read/write failed at timeout due to cable unplugged. >> >> Changes in V4: >> -- split this patch as stand alone patch >> >> Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> > > Can this patch come before the one previously? And then some fixes tag > be added? Otherwise looks good to me. > > Reviewed-by: Stephen Boyd <swboyd@chromium.org> > Tested-by: Stephen Boyd <swboyd@chromium.org> Is this something that we still need to pursue/merge? There were changes requested for this and for the previous patch, but no new versions were posted.
On 2021-11-24 23:32, Dmitry Baryshkov wrote: > On 04/05/2021 07:35, Stephen Boyd wrote: >> Quoting Kuogee Hsieh (2021-04-21 16:37:38) >>> Add checking aux read/write status at both dp_link_parse_sink_count() >>> and dp_link_parse_sink_status_filed() to avoid long timeout delay if >> >> s/filed/field/ >> >>> dp aux read/write failed at timeout due to cable unplugged. >>> >>> Changes in V4: >>> -- split this patch as stand alone patch >>> >>> Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> >> >> Can this patch come before the one previously? And then some fixes tag >> be added? Otherwise looks good to me. >> >> Reviewed-by: Stephen Boyd <swboyd@chromium.org> >> Tested-by: Stephen Boyd <swboyd@chromium.org> > > Is this something that we still need to pursue/merge? > > There were changes requested for this and for the previous patch, but > no new versions were posted. It is my fault to miss this one. The first two patches of this serial are merged. I will rebase and re submit this one to V5.10.
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 1784e11..d1319b5 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -711,9 +711,15 @@ static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data) return 0; } - ret = dp_display_usbpd_attention_cb(&dp->pdev->dev); - if (ret == -ECONNRESET) { /* cable unplugged */ - dp->core_initialized = false; + /* + * 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; + } } mutex_unlock(&dp->event_mutex); diff --git a/drivers/gpu/drm/msm/dp/dp_link.c b/drivers/gpu/drm/msm/dp/dp_link.c index be986da..53ecae6 100644 --- a/drivers/gpu/drm/msm/dp/dp_link.c +++ b/drivers/gpu/drm/msm/dp/dp_link.c @@ -737,18 +737,25 @@ static int dp_link_parse_sink_count(struct dp_link *dp_link) return 0; } -static void dp_link_parse_sink_status_field(struct dp_link_private *link) +static int dp_link_parse_sink_status_field(struct dp_link_private *link) { int len = 0; link->prev_sink_count = link->dp_link.sink_count; - dp_link_parse_sink_count(&link->dp_link); + len = dp_link_parse_sink_count(&link->dp_link); + if (len < 0) { + DRM_ERROR("DP parse sink count failed\n"); + return len; + } len = drm_dp_dpcd_read_link_status(link->aux, link->link_status); - if (len < DP_LINK_STATUS_SIZE) + if (len < DP_LINK_STATUS_SIZE) { DRM_ERROR("DP link status read failed\n"); - dp_link_parse_request(link); + return len; + } + + return dp_link_parse_request(link); } /** @@ -1032,7 +1039,10 @@ int dp_link_process_request(struct dp_link *dp_link) dp_link_reset_data(link); - dp_link_parse_sink_status_field(link); + ret = dp_link_parse_sink_status_field(link); + if (ret) { + return ret; + } if (link->request.test_requested == DP_TEST_LINK_EDID_READ) { dp_link->sink_request |= DP_TEST_LINK_EDID_READ;
Add checking aux read/write status at both dp_link_parse_sink_count() and dp_link_parse_sink_status_filed() to avoid long timeout delay if dp aux read/write failed at timeout due to cable unplugged. Changes in V4: -- split this patch as stand alone patch Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> --- drivers/gpu/drm/msm/dp/dp_display.c | 12 +++++++++--- drivers/gpu/drm/msm/dp/dp_link.c | 20 +++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-)