| From c074cd0d33191d5d1ce6962f661d83f9124dc9e9 Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Sun, 21 Jul 2013 21:37:03 +0200 |
| Subject: drm/i915/crt: use native encoder->mode_set callback |
| |
| Also drop the intel_ prefix from the local intel_crtc variable and |
| reorder the upcast macros a bit for more reuse. |
| |
| Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit eebe6f0b3d4207a05000921a5e60b4161f89ca35) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_crt.c | 34 +++++++++++++--------------------- |
| 1 file changed, 13 insertions(+), 21 deletions(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_crt.c |
| +++ b/drivers/gpu/drm/i915/intel_crt.c |
| @@ -52,15 +52,14 @@ struct intel_crt { |
| u32 adpa_reg; |
| }; |
| |
| -static struct intel_crt *intel_attached_crt(struct drm_connector *connector) |
| +static struct intel_crt *intel_encoder_to_crt(struct intel_encoder *encoder) |
| { |
| - return container_of(intel_attached_encoder(connector), |
| - struct intel_crt, base); |
| + return container_of(encoder, struct intel_crt, base); |
| } |
| |
| -static struct intel_crt *intel_encoder_to_crt(struct intel_encoder *encoder) |
| +static struct intel_crt *intel_attached_crt(struct drm_connector *connector) |
| { |
| - return container_of(encoder, struct intel_crt, base); |
| + return intel_encoder_to_crt(intel_attached_encoder(connector)); |
| } |
| |
| static bool intel_crt_get_hw_state(struct intel_encoder *encoder, |
| @@ -238,17 +237,14 @@ static bool intel_crt_compute_config(str |
| return true; |
| } |
| |
| -static void intel_crt_mode_set(struct drm_encoder *encoder, |
| - struct drm_display_mode *mode, |
| - struct drm_display_mode *adjusted_mode) |
| +static void intel_crt_mode_set(struct intel_encoder *encoder) |
| { |
| |
| - struct drm_device *dev = encoder->dev; |
| - struct drm_crtc *crtc = encoder->crtc; |
| - struct intel_crt *crt = |
| - intel_encoder_to_crt(to_intel_encoder(encoder)); |
| - struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| + struct drm_device *dev = encoder->base.dev; |
| + struct intel_crt *crt = intel_encoder_to_crt(encoder); |
| + struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); |
| struct drm_i915_private *dev_priv = dev->dev_private; |
| + struct drm_display_mode *adjusted_mode = &crtc->config.adjusted_mode; |
| u32 adpa; |
| |
| if (HAS_PCH_SPLIT(dev)) |
| @@ -265,14 +261,14 @@ static void intel_crt_mode_set(struct dr |
| if (HAS_PCH_LPT(dev)) |
| ; /* Those bits don't exist here */ |
| else if (HAS_PCH_CPT(dev)) |
| - adpa |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); |
| - else if (intel_crtc->pipe == 0) |
| + adpa |= PORT_TRANS_SEL_CPT(crtc->pipe); |
| + else if (crtc->pipe == 0) |
| adpa |= ADPA_PIPE_A_SELECT; |
| else |
| adpa |= ADPA_PIPE_B_SELECT; |
| |
| if (!HAS_PCH_SPLIT(dev)) |
| - I915_WRITE(BCLRPAT(intel_crtc->pipe), 0); |
| + I915_WRITE(BCLRPAT(crtc->pipe), 0); |
| |
| I915_WRITE(crt->adpa_reg, adpa); |
| } |
| @@ -711,10 +707,6 @@ static void intel_crt_reset(struct drm_c |
| * Routines for controlling stuff on the analog port |
| */ |
| |
| -static const struct drm_encoder_helper_funcs crt_encoder_funcs = { |
| - .mode_set = intel_crt_mode_set, |
| -}; |
| - |
| static const struct drm_connector_funcs intel_crt_connector_funcs = { |
| .reset = intel_crt_reset, |
| .dpms = intel_crt_dpms, |
| @@ -812,6 +804,7 @@ void intel_crt_init(struct drm_device *d |
| crt->adpa_reg = ADPA; |
| |
| crt->base.compute_config = intel_crt_compute_config; |
| + crt->base.mode_set = intel_crt_mode_set; |
| crt->base.disable = intel_disable_crt; |
| crt->base.enable = intel_enable_crt; |
| crt->base.get_config = intel_crt_get_config; |
| @@ -823,7 +816,6 @@ void intel_crt_init(struct drm_device *d |
| crt->base.get_hw_state = intel_crt_get_hw_state; |
| intel_connector->get_hw_state = intel_connector_get_hw_state; |
| |
| - drm_encoder_helper_add(&crt->base.base, &crt_encoder_funcs); |
| drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); |
| |
| drm_sysfs_connector_add(connector); |