|
@@ -900,9 +900,22 @@ static enum drm_connector_status
|
|
|
nv50_mstc_detect(struct drm_connector *connector, bool force)
|
|
|
{
|
|
|
struct nv50_mstc *mstc = nv50_mstc(connector);
|
|
|
+ enum drm_connector_status conn_status;
|
|
|
+ int ret;
|
|
|
+
|
|
|
if (!mstc->port)
|
|
|
return connector_status_disconnected;
|
|
|
- return drm_dp_mst_detect_port(connector, mstc->port->mgr, mstc->port);
|
|
|
+
|
|
|
+ ret = pm_runtime_get_sync(connector->dev->dev);
|
|
|
+ if (ret < 0 && ret != -EACCES)
|
|
|
+ return connector_status_disconnected;
|
|
|
+
|
|
|
+ conn_status = drm_dp_mst_detect_port(connector, mstc->port->mgr,
|
|
|
+ mstc->port);
|
|
|
+
|
|
|
+ pm_runtime_mark_last_busy(connector->dev->dev);
|
|
|
+ pm_runtime_put_autosuspend(connector->dev->dev);
|
|
|
+ return conn_status;
|
|
|
}
|
|
|
|
|
|
static void
|