Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / intel_dp_mst.c
index 5890500a3a8b6640e587070e89d805b06c99baf7..77920f1a3da1ac6e6498f047f2b9dfc39015ea23 100644 (file)
@@ -166,6 +166,8 @@ static void intel_mst_post_disable_dp(struct intel_encoder *encoder,
        struct intel_connector *connector =
                to_intel_connector(old_conn_state->connector);
 
+       intel_ddi_disable_pipe_clock(old_crtc_state);
+
        /* this can fail */
        drm_dp_check_act_status(&intel_dp->mst_mgr);
        /* and this can also fail */
@@ -241,17 +243,16 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder,
                                       connector->port,
                                       pipe_config->pbn,
                                       pipe_config->dp_m_n.tu);
-       if (ret == false) {
+       if (!ret)
                DRM_ERROR("failed to allocate vcpi\n");
-               return;
-       }
-
 
        intel_dp->active_mst_links++;
        temp = I915_READ(DP_TP_STATUS(port));
        I915_WRITE(DP_TP_STATUS(port), temp);
 
        ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr);
+
+       intel_ddi_enable_pipe_clock(pipe_config);
 }
 
 static void intel_mst_enable_dp(struct intel_encoder *encoder,
@@ -263,7 +264,6 @@ static void intel_mst_enable_dp(struct intel_encoder *encoder,
        struct intel_dp *intel_dp = &intel_dig_port->dp;
        struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
        enum port port = intel_dig_port->base.port;
-       int ret;
 
        DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
 
@@ -274,9 +274,9 @@ static void intel_mst_enable_dp(struct intel_encoder *encoder,
                                    1))
                DRM_ERROR("Timed out waiting for ACT sent\n");
 
-       ret = drm_dp_check_act_status(&intel_dp->mst_mgr);
+       drm_dp_check_act_status(&intel_dp->mst_mgr);
 
-       ret = drm_dp_update_payload_part2(&intel_dp->mst_mgr);
+       drm_dp_update_payload_part2(&intel_dp->mst_mgr);
        if (pipe_config->has_audio)
                intel_audio_codec_enable(encoder, pipe_config, conn_state);
 }
@@ -403,20 +403,10 @@ static struct drm_encoder *intel_mst_atomic_best_encoder(struct drm_connector *c
        return &intel_dp->mst_encoders[crtc->pipe]->base.base;
 }
 
-static struct drm_encoder *intel_mst_best_encoder(struct drm_connector *connector)
-{
-       struct intel_connector *intel_connector = to_intel_connector(connector);
-       struct intel_dp *intel_dp = intel_connector->mst_port;
-       if (!intel_dp)
-               return NULL;
-       return &intel_dp->mst_encoders[0]->base.base;
-}
-
 static const struct drm_connector_helper_funcs intel_dp_mst_connector_helper_funcs = {
        .get_modes = intel_dp_mst_get_modes,
        .mode_valid = intel_dp_mst_mode_valid,
        .atomic_best_encoder = intel_mst_atomic_best_encoder,
-       .best_encoder = intel_mst_best_encoder,
        .atomic_check = intel_dp_mst_atomic_check,
 };
 
@@ -476,8 +466,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
                struct drm_encoder *enc =
                        &intel_dp->mst_encoders[pipe]->base.base;
 
-               ret = drm_mode_connector_attach_encoder(&intel_connector->base,
-                                                       enc);
+               ret = drm_connector_attach_encoder(&intel_connector->base, enc);
                if (ret)
                        goto err;
        }
@@ -485,7 +474,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
        drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0);
        drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0);
 
-       ret = drm_mode_connector_set_path_property(connector, pathprop);
+       ret = drm_connector_set_path_property(connector, pathprop);
        if (ret)
                goto err;
 
@@ -524,7 +513,7 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
        intel_connector->mst_port = NULL;
        drm_modeset_unlock(&connector->dev->mode_config.connection_mutex);
 
-       drm_connector_unreference(connector);
+       drm_connector_put(connector);
 }
 
 static void intel_dp_mst_hotplug(struct drm_dp_mst_topology_mgr *mgr)