| From 4d3d1edf776cc509e3f4b434768645edba82930e Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Sun, 21 Jul 2013 21:37:00 +0200 |
| Subject: drm/i915/dvo: use native encoder ->mode_set callback |
| |
| Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 79fde3011fe03f4cef31e55eff607180e1c7c5fd) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_dvo.c | 28 +++++++++++----------------- |
| 1 file changed, 11 insertions(+), 17 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c |
| index 51eadc944d9a..406303b509c1 100644 |
| --- a/drivers/gpu/drm/i915/intel_dvo.c |
| +++ b/drivers/gpu/drm/i915/intel_dvo.c |
| @@ -107,8 +107,7 @@ static struct intel_dvo *enc_to_dvo(struct intel_encoder *encoder) |
| |
| static struct intel_dvo *intel_attached_dvo(struct drm_connector *connector) |
| { |
| - return container_of(intel_attached_encoder(connector), |
| - struct intel_dvo, base); |
| + return enc_to_dvo(intel_attached_encoder(connector)); |
| } |
| |
| static bool intel_dvo_connector_get_hw_state(struct intel_connector *connector) |
| @@ -274,15 +273,14 @@ static bool intel_dvo_compute_config(struct intel_encoder *encoder, |
| return true; |
| } |
| |
| -static void intel_dvo_mode_set(struct drm_encoder *encoder, |
| - struct drm_display_mode *mode, |
| - struct drm_display_mode *adjusted_mode) |
| +static void intel_dvo_mode_set(struct intel_encoder *encoder) |
| { |
| - struct drm_device *dev = encoder->dev; |
| + struct drm_device *dev = encoder->base.dev; |
| struct drm_i915_private *dev_priv = dev->dev_private; |
| - struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
| - struct intel_dvo *intel_dvo = enc_to_dvo(to_intel_encoder(encoder)); |
| - int pipe = intel_crtc->pipe; |
| + struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); |
| + struct drm_display_mode *adjusted_mode = &crtc->config.adjusted_mode; |
| + struct intel_dvo *intel_dvo = enc_to_dvo(encoder); |
| + int pipe = crtc->pipe; |
| u32 dvo_val; |
| u32 dvo_reg = intel_dvo->dev.dvo_reg, dvo_srcdim_reg; |
| |
| @@ -299,7 +297,9 @@ static void intel_dvo_mode_set(struct drm_encoder *encoder, |
| break; |
| } |
| |
| - intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev, mode, adjusted_mode); |
| + intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev, |
| + &crtc->config.requested_mode, |
| + adjusted_mode); |
| |
| /* Save the data order, since I don't know what it should be set to. */ |
| dvo_val = I915_READ(dvo_reg) & |
| @@ -373,10 +373,6 @@ static void intel_dvo_destroy(struct drm_connector *connector) |
| kfree(connector); |
| } |
| |
| -static const struct drm_encoder_helper_funcs intel_dvo_helper_funcs = { |
| - .mode_set = intel_dvo_mode_set, |
| -}; |
| - |
| static const struct drm_connector_funcs intel_dvo_connector_funcs = { |
| .dpms = intel_dvo_dpms, |
| .detect = intel_dvo_detect, |
| @@ -472,6 +468,7 @@ void intel_dvo_init(struct drm_device *dev) |
| intel_encoder->get_hw_state = intel_dvo_get_hw_state; |
| intel_encoder->get_config = intel_dvo_get_config; |
| intel_encoder->compute_config = intel_dvo_compute_config; |
| + intel_encoder->mode_set = intel_dvo_mode_set; |
| intel_connector->get_hw_state = intel_dvo_connector_get_hw_state; |
| |
| /* Now, try to find a controller */ |
| @@ -538,9 +535,6 @@ void intel_dvo_init(struct drm_device *dev) |
| connector->interlace_allowed = false; |
| connector->doublescan_allowed = false; |
| |
| - drm_encoder_helper_add(&intel_encoder->base, |
| - &intel_dvo_helper_funcs); |
| - |
| intel_connector_attach_encoder(intel_connector, intel_encoder); |
| if (dvo->type == INTEL_DVO_CHIP_LVDS) { |
| /* For our LVDS chipsets, we should hopefully be able |
| -- |
| 1.8.5.rc3 |
| |