drm/amdgpu/display: use msleep rather than udelay for HDCP
authorAlex Deucher <alexdeucher@gmail.com>
Tue, 17 Dec 2019 20:47:07 +0000 (15:47 -0500)
committerDave Airlie <airlied@redhat.com>
Wed, 18 Dec 2019 23:04:13 +0000 (09:04 +1000)
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 <alexander.deucher@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191217204707.2258744-2-alexander.deucher@amd.com
drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_execution.c

index bcbc0b8a9aa08d2d5845158be5327b7398d54f8f..f730b94ac3c0633d584524296a1ca403028990b8 100644 (file)
@@ -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 = 20000; // 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,
                                &input->l_prime_available_poll, &status,