aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dp.c
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2013-11-19 12:10:12 -0500
committerDave Airlie <airlied@redhat.com>2014-06-04 19:54:33 -0400
commit51fd371bbaf94018a1223b4e2cf20b9880fd92d4 (patch)
treee86e8ec3ace2fd61111105d39f5eb2d37378e9a8 /drivers/gpu/drm/i915/intel_dp.c
parent4f71d0cb76339a10fd445b0b281acc45c71b6271 (diff)
drm: convert crtc and connection_mutex to ww_mutex (v5)
For atomic, it will be quite necessary to not need to care so much about locking order. And 'state' gives us a convenient place to stash a ww_ctx for any sort of update that needs to grab multiple crtc locks. Because we will want to eventually make locking even more fine grained (giving locks to planes, connectors, etc), split out drm_modeset_lock and drm_modeset_acquire_ctx to track acquired locks. Atomic will use this to keep track of which locks have been acquired in a transaction. v1: original v2: remove a few things not needed until atomic, for now v3: update for v3 of connection_mutex patch.. v4: squash in docbook v5: doc tweaks/fixes Signed-off-by: Rob Clark <robdclark@gmail.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d01bb430b5bc..2d5d9b010073 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1154,7 +1154,7 @@ static void edp_panel_vdd_off_sync(struct intel_dp *intel_dp)
1154 u32 pp; 1154 u32 pp;
1155 u32 pp_stat_reg, pp_ctrl_reg; 1155 u32 pp_stat_reg, pp_ctrl_reg;
1156 1156
1157 WARN_ON(!mutex_is_locked(&dev->mode_config.connection_mutex)); 1157 WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex));
1158 1158
1159 if (!intel_dp->want_panel_vdd && edp_have_panel_vdd(intel_dp)) { 1159 if (!intel_dp->want_panel_vdd && edp_have_panel_vdd(intel_dp)) {
1160 struct intel_digital_port *intel_dig_port = 1160 struct intel_digital_port *intel_dig_port =
@@ -1191,9 +1191,9 @@ static void edp_panel_vdd_work(struct work_struct *__work)
1191 struct intel_dp, panel_vdd_work); 1191 struct intel_dp, panel_vdd_work);
1192 struct drm_device *dev = intel_dp_to_dev(intel_dp); 1192 struct drm_device *dev = intel_dp_to_dev(intel_dp);
1193 1193
1194 mutex_lock(&dev->mode_config.connection_mutex); 1194 drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
1195 edp_panel_vdd_off_sync(intel_dp); 1195 edp_panel_vdd_off_sync(intel_dp);
1196 mutex_unlock(&dev->mode_config.connection_mutex); 1196 drm_modeset_unlock(&dev->mode_config.connection_mutex);
1197} 1197}
1198 1198
1199static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) 1199static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
@@ -3666,9 +3666,9 @@ void intel_dp_encoder_destroy(struct drm_encoder *encoder)
3666 drm_encoder_cleanup(encoder); 3666 drm_encoder_cleanup(encoder);
3667 if (is_edp(intel_dp)) { 3667 if (is_edp(intel_dp)) {
3668 cancel_delayed_work_sync(&intel_dp->panel_vdd_work); 3668 cancel_delayed_work_sync(&intel_dp->panel_vdd_work);
3669 mutex_lock(&dev->mode_config.connection_mutex); 3669 drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
3670 edp_panel_vdd_off_sync(intel_dp); 3670 edp_panel_vdd_off_sync(intel_dp);
3671 mutex_unlock(&dev->mode_config.connection_mutex); 3671 drm_modeset_unlock(&dev->mode_config.connection_mutex);
3672 } 3672 }
3673 kfree(intel_dig_port); 3673 kfree(intel_dig_port);
3674} 3674}
@@ -4247,9 +4247,9 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
4247 drm_dp_aux_unregister(&intel_dp->aux); 4247 drm_dp_aux_unregister(&intel_dp->aux);
4248 if (is_edp(intel_dp)) { 4248 if (is_edp(intel_dp)) {
4249 cancel_delayed_work_sync(&intel_dp->panel_vdd_work); 4249 cancel_delayed_work_sync(&intel_dp->panel_vdd_work);
4250 mutex_lock(&dev->mode_config.connection_mutex); 4250 drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
4251 edp_panel_vdd_off_sync(intel_dp); 4251 edp_panel_vdd_off_sync(intel_dp);
4252 mutex_unlock(&dev->mode_config.connection_mutex); 4252 drm_modeset_unlock(&dev->mode_config.connection_mutex);
4253 } 4253 }
4254 drm_sysfs_connector_remove(connector); 4254 drm_sysfs_connector_remove(connector);
4255 drm_connector_cleanup(connector); 4255 drm_connector_cleanup(connector);