]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/tegra: sor: Avoid timeouts on unplug events
authorThierry Reding <treding@nvidia.com>
Thu, 25 Jul 2019 13:41:36 +0000 (15:41 +0200)
committerThierry Reding <treding@nvidia.com>
Mon, 28 Oct 2019 10:18:56 +0000 (11:18 +0100)
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 <treding@nvidia.com>
drivers/gpu/drm/tegra/sor.c

index 63831c37ad3577d85609bf5d326dd10f6c541e1d..b81e6d39aa32d5bc97dd59e4e6547c5eb4539c46 100644 (file)
@@ -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)