diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-06-18 07:59:02 -0400 |
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-06-19 03:58:52 -0400 |
| commit | 77c70c56670875207d7ffd3c83cba7357ff4ff2e (patch) | |
| tree | a4a28cce4097072448be2cd91aa31cc2ed161cf5 | |
| parent | 14d8ec544f2351a5da33e233b75f44cf6a5bea8e (diff) | |
drm/i915: Drop unecessary complexity from psr_inactivate
It's not needed and further more will get in the way of a sane
locking scheme - psr_exit _can't_ take modeset locks due to lock
inversion, and at least once dp mst hits the connector list
is no longer static.
But since we track all state in dev_priv->psr there is no need
at all.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 912e9c4de58f..74e194d66bba 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
| @@ -1910,29 +1910,11 @@ static void intel_edp_psr_work(struct work_struct *work) | |||
| 1910 | static void intel_edp_psr_inactivate(struct drm_device *dev) | 1910 | static void intel_edp_psr_inactivate(struct drm_device *dev) |
| 1911 | { | 1911 | { |
| 1912 | struct drm_i915_private *dev_priv = dev->dev_private; | 1912 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1913 | struct intel_connector *connector; | ||
| 1914 | struct intel_encoder *encoder; | ||
| 1915 | struct intel_crtc *intel_crtc; | ||
| 1916 | struct intel_dp *intel_dp = NULL; | ||
| 1917 | |||
| 1918 | list_for_each_entry(connector, &dev->mode_config.connector_list, | ||
| 1919 | base.head) { | ||
| 1920 | 1913 | ||
| 1921 | if (connector->base.dpms != DRM_MODE_DPMS_ON) | 1914 | dev_priv->psr.active = false; |
| 1922 | continue; | ||
| 1923 | |||
| 1924 | encoder = to_intel_encoder(connector->base.encoder); | ||
| 1925 | if (encoder->type == INTEL_OUTPUT_EDP) { | ||
| 1926 | 1915 | ||
| 1927 | intel_dp = enc_to_intel_dp(&encoder->base); | 1916 | I915_WRITE(EDP_PSR_CTL(dev), I915_READ(EDP_PSR_CTL(dev)) |
| 1928 | intel_crtc = to_intel_crtc(encoder->base.crtc); | 1917 | & ~EDP_PSR_ENABLE); |
| 1929 | |||
| 1930 | dev_priv->psr.active = false; | ||
| 1931 | |||
| 1932 | I915_WRITE(EDP_PSR_CTL(dev), I915_READ(EDP_PSR_CTL(dev)) | ||
| 1933 | & ~EDP_PSR_ENABLE); | ||
| 1934 | } | ||
| 1935 | } | ||
| 1936 | } | 1918 | } |
| 1937 | 1919 | ||
| 1938 | void intel_edp_psr_exit(struct drm_device *dev, bool schedule_back) | 1920 | void intel_edp_psr_exit(struct drm_device *dev, bool schedule_back) |
