aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLyude <cpaul@redhat.com>2016-06-21 17:03:41 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-07-14 16:06:11 -0400
commit28cf71ce3e206db1c3f30b3da31e7b48b2269e4c (patch)
treef199e0e6c892f55c49ea83724c930aa13afbcb43
parentfb7404e81555b670e44fed6a95c277fe0214f540 (diff)
drm/i915/vlv: Make intel_crt_reset() per-encoder
This lets call intel_crt_reset() in contexts where IRQs are disabled and as such, can't hold the locks required to work with the connectors. Cc: stable@vger.kernel.org Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Lyude <cpaul@redhat.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 5819d524d917..9cd88293c960 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -717,11 +717,11 @@ static int intel_crt_set_property(struct drm_connector *connector,
717 return 0; 717 return 0;
718} 718}
719 719
720static void intel_crt_reset(struct drm_connector *connector) 720static void intel_crt_reset(struct drm_encoder *encoder)
721{ 721{
722 struct drm_device *dev = connector->dev; 722 struct drm_device *dev = encoder->dev;
723 struct drm_i915_private *dev_priv = to_i915(dev); 723 struct drm_i915_private *dev_priv = to_i915(dev);
724 struct intel_crt *crt = intel_attached_crt(connector); 724 struct intel_crt *crt = intel_encoder_to_crt(to_intel_encoder(encoder));
725 725
726 if (INTEL_INFO(dev)->gen >= 5) { 726 if (INTEL_INFO(dev)->gen >= 5) {
727 u32 adpa; 727 u32 adpa;
@@ -743,7 +743,6 @@ static void intel_crt_reset(struct drm_connector *connector)
743 */ 743 */
744 744
745static const struct drm_connector_funcs intel_crt_connector_funcs = { 745static const struct drm_connector_funcs intel_crt_connector_funcs = {
746 .reset = intel_crt_reset,
747 .dpms = drm_atomic_helper_connector_dpms, 746 .dpms = drm_atomic_helper_connector_dpms,
748 .detect = intel_crt_detect, 747 .detect = intel_crt_detect,
749 .fill_modes = drm_helper_probe_single_connector_modes, 748 .fill_modes = drm_helper_probe_single_connector_modes,
@@ -762,6 +761,7 @@ static const struct drm_connector_helper_funcs intel_crt_connector_helper_funcs
762}; 761};
763 762
764static const struct drm_encoder_funcs intel_crt_enc_funcs = { 763static const struct drm_encoder_funcs intel_crt_enc_funcs = {
764 .reset = intel_crt_reset,
765 .destroy = intel_encoder_destroy, 765 .destroy = intel_encoder_destroy,
766}; 766};
767 767
@@ -904,5 +904,5 @@ void intel_crt_init(struct drm_device *dev)
904 dev_priv->fdi_rx_config = I915_READ(FDI_RX_CTL(PIPE_A)) & fdi_config; 904 dev_priv->fdi_rx_config = I915_READ(FDI_RX_CTL(PIPE_A)) & fdi_config;
905 } 905 }
906 906
907 intel_crt_reset(connector); 907 intel_crt_reset(&crt->base.base);
908} 908}