[PATCH v4 10/11] drm/bridge: it6505: fix HDCP CTS ksv wait timer
Dmitry Baryshkov
dmitry.baryshkov at linaro.org
Thu Sep 26 09:22:46 UTC 2024
On Thu, 26 Sept 2024 at 10:39, <Hermes.Wu at ite.com.tw> wrote:
>
> >On Thu, Sep 26, 2024 at 03:51:33PM GMT, Hermes Wu wrote:
> >> From: Hermes Wu <Hermes.wu at ite.com.tw>
> >>
> >> When running the HDCP CTS test on UNIGRAF DPR-100.
> >> HDCP must disabled after waiting KSV for 5s.
> >> Consider system ksv work schedules. The original timer has a chance to expire.
> >
> >I can't understand two last sentences, excuse me.
> >
> >Nit: KSV, not ksv
>
> Form HDCP CTS, DUT should wait downstream KSV list at least 5s.
> And driver use a while loop with a 20ms sleep to reach the scope.
> The true wait timer will reach 10s which is much longer then it supposed to.
>
> It should better use other APIs to implement this waiting, rather than just reduce the counter.
See all the macros in <linux/iopoll.h>, maybe that helps. Consider
adding a version of read_poll_timeout with the in-loop break
condition.
>
> timeout /= 20;
> while (timeout > 0) {
> if (!it6505_get_sink_hpd_status(it6505))
> return;
>
> bstatus = it6505_dpcd_read(it6505, DP_AUX_HDCP_BSTATUS);
>
> if (bstatus & DP_BSTATUS_READY)
> break;
>
> msleep(20);
> timeout--;
> }
>
> >>
> >> Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
> >> Signed-off-by: Hermes Wu <Hermes.wu at ite.com.tw>
> >> ---
> >> drivers/gpu/drm/bridge/ite-it6505.c | 3 ++-
> >> 1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c
> >> index e75bc1575aa8..22d9bec3faea 100644
> >> --- a/drivers/gpu/drm/bridge/ite-it6505.c
> >> +++ b/drivers/gpu/drm/bridge/ite-it6505.c
> >> @@ -2093,7 +2093,8 @@ static void it6505_hdcp_wait_ksv_list(struct work_struct *work)
> >> struct it6505 *it6505 = container_of(work, struct it6505,
> >> hdcp_wait_ksv_list);
> >> struct device *dev = it6505->dev;
> >> - unsigned int timeout = 5000;
> >> + /* 1B-04 fail, wait to long to Stop encription(5s->3s). */
> >
> >encryption, most likely it's also "too long".
> >
> >> + unsigned int timeout = 3000;
> >
> >What is the timeout per the standard?
> >
> >> u8 bstatus = 0;
> >> bool ksv_list_check;
> >>
> >> --
> >> 2.34.1
> >>
> >
> >--
> >With best wishes
> >Dmitry
> >
--
With best wishes
Dmitry
More information about the dri-devel
mailing list