diff options
author | Lyude <cpaul@redhat.com> | 2016-06-21 17:03:41 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-07-14 16:06:11 -0400 |
commit | 28cf71ce3e206db1c3f30b3da31e7b48b2269e4c (patch) | |
tree | f199e0e6c892f55c49ea83724c930aa13afbcb43 | |
parent | fb7404e81555b670e44fed6a95c277fe0214f540 (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.c | 10 |
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 | ||
720 | static void intel_crt_reset(struct drm_connector *connector) | 720 | static 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 | ||
745 | static const struct drm_connector_funcs intel_crt_connector_funcs = { | 745 | static 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 | ||
764 | static const struct drm_encoder_funcs intel_crt_enc_funcs = { | 763 | static 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 | } |