From 7367615414efb0a10c9e94bc9e5a39497286d6ad Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Thu, 25 Jul 2019 15:41:36 +0200 Subject: [PATCH] drm/tegra: sor: Avoid timeouts on unplug events When the SOR is disabled in DP mode as part of an unplug event, do not attempt to power the DP link down. Powering down the link requires the DPAUX to transmit AUX messages which only works if there's a connected sink. Signed-off-by: Thierry Reding --- drivers/gpu/drm/tegra/sor.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c index 63831c37ad357..b81e6d39aa32d 100644 --- a/drivers/gpu/drm/tegra/sor.c +++ b/drivers/gpu/drm/tegra/sor.c @@ -2663,9 +2663,16 @@ static void tegra_sor_dp_disable(struct drm_encoder *encoder) if (output->panel) drm_panel_disable(output->panel); - err = drm_dp_link_power_down(sor->aux, &sor->link); - if (err < 0) - dev_err(sor->dev, "failed to power down link: %d\n", err); + /* + * Do not attempt to power down a DP link if we're not connected since + * the AUX transactions would just be timing out. + */ + if (output->connector.status != connector_status_disconnected) { + err = drm_dp_link_power_down(sor->aux, &sor->link); + if (err < 0) + dev_err(sor->dev, "failed to power down link: %d\n", + err); + } err = tegra_sor_detach(sor); if (err < 0) -- 2.39.5