Skip to content

Commit 205104d

Browse files
committed
drm/apple: Increase poweron timeout to 10 seconds
Occasionally dcp_poweron takes a long time. Double the timeout to 10 seconds. This is most likely a sequencing error / race condition on driver side. On the system the timeout was observed dcp_set_power_state_req usually takes 1ms or less. Occasionally it takes much longer and sometimes exceeds 5 seconds. DCP clearly does more when poweron takes longer based on its syslog messages. This could be tied to the hotplug state or racing against DPTX commands. TODO: find a way to recover from timeouts. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 5d1d8e4 commit 205104d

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

drivers/gpu/drm/apple/iomfb_template.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -824,15 +824,21 @@ void DCP_FW_NAME(iomfb_poweron)(struct apple_dcp *dcp)
824824
dcp_set_display_device(dcp, false, &handle,
825825
dcp_on_set_parameter, cookie);
826826
}
827-
ret = wait_for_completion_timeout(&cookie->done, msecs_to_jiffies(5000));
827+
ret = wait_for_completion_timeout(&cookie->done, msecs_to_jiffies(10000));
828828

829-
if (ret == 0)
830-
dev_warn(dcp->dev, "wait for power timed out\n");
831-
else if (ret > 0)
832-
dev_info(dcp->dev, "dcp_set_power_state_req returned, %d ms remaining\n", jiffies_to_msecs(ret));
833-
if (ret <= 0)
829+
if (ret == 0) {
830+
dev_warn(dcp->dev, "wait for power timed out, connector will be broken\n");
831+
} else if (ret > 0) {
832+
int msecs = jiffies_to_msecs(ret);
833+
if (msecs > 6000)
834+
dev_info(dcp->dev, "dcp_set_power_state_req returned, %d ms remaining\n", msecs);
835+
else
836+
dev_warn(dcp->dev, "dcp_set_power_state_req returned, %d ms remaining\n", msecs);
837+
} else {
834838
drm_connector_set_link_status_property(&dcp->connector->base,
835839
DRM_MODE_LINK_STATUS_BAD);
840+
dev_warn(dcp->dev, "wait for completion error: %d\n", ret);
841+
}
836842

837843
kref_put(&cookie->refcount, release_wait_cookie);;
838844

0 commit comments

Comments
 (0)