Re: [PATCH 2/2] drm/amdgpu/display: use msleep rather than udelay for HDCP
On Wed, Dec 18, 2019 at 6:07 PM Dave Airlie wrote: > > Hey, > > I've pulled in these two patches to drm-next directly because my arm > test build was broken. Sounds good. Alex > > Dave. > > On Wed, 18 Dec 2019 at 06:47, Alex Deucher wrote: > > > > ARM has a 2000us limit for udelay. Switch to msleep. This code > > executes in a worker thread so shouldn't be an atomic context. > > > > Signed-off-by: Alex Deucher > > --- > > drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > > b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > > index bcbc0b8a9aa0..f730b94ac3c0 100644 > > --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > > +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > > @@ -153,7 +153,7 @@ static enum mod_hdcp_status > > poll_l_prime_available(struct mod_hdcp *hdcp) > > { > > enum mod_hdcp_status status; > > uint8_t size; > > - uint16_t max_wait = 2; // units of us > > + uint16_t max_wait = 20; // units of ms > > uint16_t num_polls = 5; > > uint16_t wait_time = max_wait / num_polls; > > > > @@ -161,7 +161,7 @@ static enum mod_hdcp_status > > poll_l_prime_available(struct mod_hdcp *hdcp) > > status = MOD_HDCP_STATUS_INVALID_OPERATION; > > else > > for (; num_polls; num_polls--) { > > - udelay(wait_time); > > + msleep(wait_time); > > > > status = mod_hdcp_read_rxstatus(hdcp); > > if (status != MOD_HDCP_STATUS_SUCCESS) > > @@ -474,7 +474,7 @@ static enum mod_hdcp_status locality_check(struct > > mod_hdcp *hdcp, > > hdcp, "lc_init_write")) > > goto out; > > if (is_dp_hdcp(hdcp)) > > - udelay(16000); > > + msleep(16); > > else > > if (!mod_hdcp_execute_and_set(poll_l_prime_available, > > >l_prime_available_poll, , > > -- > > 2.23.0 > > > > ___ > > amd-gfx mailing list > > amd-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH 2/2] drm/amdgpu/display: use msleep rather than udelay for HDCP
Hey, I've pulled in these two patches to drm-next directly because my arm test build was broken. Dave. On Wed, 18 Dec 2019 at 06:47, Alex Deucher wrote: > > ARM has a 2000us limit for udelay. Switch to msleep. This code > executes in a worker thread so shouldn't be an atomic context. > > Signed-off-by: Alex Deucher > --- > drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > index bcbc0b8a9aa0..f730b94ac3c0 100644 > --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c > @@ -153,7 +153,7 @@ static enum mod_hdcp_status poll_l_prime_available(struct > mod_hdcp *hdcp) > { > enum mod_hdcp_status status; > uint8_t size; > - uint16_t max_wait = 2; // units of us > + uint16_t max_wait = 20; // units of ms > uint16_t num_polls = 5; > uint16_t wait_time = max_wait / num_polls; > > @@ -161,7 +161,7 @@ static enum mod_hdcp_status poll_l_prime_available(struct > mod_hdcp *hdcp) > status = MOD_HDCP_STATUS_INVALID_OPERATION; > else > for (; num_polls; num_polls--) { > - udelay(wait_time); > + msleep(wait_time); > > status = mod_hdcp_read_rxstatus(hdcp); > if (status != MOD_HDCP_STATUS_SUCCESS) > @@ -474,7 +474,7 @@ static enum mod_hdcp_status locality_check(struct > mod_hdcp *hdcp, > hdcp, "lc_init_write")) > goto out; > if (is_dp_hdcp(hdcp)) > - udelay(16000); > + msleep(16); > else > if (!mod_hdcp_execute_and_set(poll_l_prime_available, > >l_prime_available_poll, , > -- > 2.23.0 > > ___ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH 2/2] drm/amdgpu/display: use msleep rather than udelay for HDCP
ARM has a 2000us limit for udelay. Switch to msleep. This code executes in a worker thread so shouldn't be an atomic context. Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c index bcbc0b8a9aa0..f730b94ac3c0 100644 --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c @@ -153,7 +153,7 @@ static enum mod_hdcp_status poll_l_prime_available(struct mod_hdcp *hdcp) { enum mod_hdcp_status status; uint8_t size; - uint16_t max_wait = 2; // units of us + uint16_t max_wait = 20; // units of ms uint16_t num_polls = 5; uint16_t wait_time = max_wait / num_polls; @@ -161,7 +161,7 @@ static enum mod_hdcp_status poll_l_prime_available(struct mod_hdcp *hdcp) status = MOD_HDCP_STATUS_INVALID_OPERATION; else for (; num_polls; num_polls--) { - udelay(wait_time); + msleep(wait_time); status = mod_hdcp_read_rxstatus(hdcp); if (status != MOD_HDCP_STATUS_SUCCESS) @@ -474,7 +474,7 @@ static enum mod_hdcp_status locality_check(struct mod_hdcp *hdcp, hdcp, "lc_init_write")) goto out; if (is_dp_hdcp(hdcp)) - udelay(16000); + msleep(16); else if (!mod_hdcp_execute_and_set(poll_l_prime_available, >l_prime_available_poll, , -- 2.23.0 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx