aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_tv.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-07-21 15:37:02 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-08-04 15:25:22 -0400
commitcd91ef23c426fe5aeee6ca8090551547b3a8795e (patch)
treefacbdc9b46c2b75db5da6fd884eea1f54a0cd78f /drivers/gpu/drm/i915/intel_tv.c
parent8aca63aae07681a0c9a2a0ebcca82ca5f7f6aa08 (diff)
drm/i915/tv: Use native encoder->mode_set callback
Also switch to intel_encoder for the upcast helper while at it. Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_tv.c')
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index b0b446f630f7..f2c6d7909ae2 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -823,16 +823,14 @@ static const struct tv_mode tv_modes[] = {
823 }, 823 },
824}; 824};
825 825
826static struct intel_tv *enc_to_intel_tv(struct drm_encoder *encoder) 826static struct intel_tv *enc_to_tv(struct intel_encoder *encoder)
827{ 827{
828 return container_of(encoder, struct intel_tv, base.base); 828 return container_of(encoder, struct intel_tv, base);
829} 829}
830 830
831static struct intel_tv *intel_attached_tv(struct drm_connector *connector) 831static struct intel_tv *intel_attached_tv(struct drm_connector *connector)
832{ 832{
833 return container_of(intel_attached_encoder(connector), 833 return enc_to_tv(intel_attached_encoder(connector));
834 struct intel_tv,
835 base);
836} 834}
837 835
838static bool 836static bool
@@ -908,7 +906,7 @@ static bool
908intel_tv_compute_config(struct intel_encoder *encoder, 906intel_tv_compute_config(struct intel_encoder *encoder,
909 struct intel_crtc_config *pipe_config) 907 struct intel_crtc_config *pipe_config)
910{ 908{
911 struct intel_tv *intel_tv = enc_to_intel_tv(&encoder->base); 909 struct intel_tv *intel_tv = enc_to_tv(encoder);
912 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); 910 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
913 911
914 if (!tv_mode) 912 if (!tv_mode)
@@ -921,15 +919,12 @@ intel_tv_compute_config(struct intel_encoder *encoder,
921 return true; 919 return true;
922} 920}
923 921
924static void 922static void intel_tv_mode_set(struct intel_encoder *encoder)
925intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
926 struct drm_display_mode *adjusted_mode)
927{ 923{
928 struct drm_device *dev = encoder->dev; 924 struct drm_device *dev = encoder->base.dev;
929 struct drm_i915_private *dev_priv = dev->dev_private; 925 struct drm_i915_private *dev_priv = dev->dev_private;
930 struct drm_crtc *crtc = encoder->crtc; 926 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
931 struct intel_crtc *intel_crtc = to_intel_crtc(crtc); 927 struct intel_tv *intel_tv = enc_to_tv(encoder);
932 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
933 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); 928 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
934 u32 tv_ctl; 929 u32 tv_ctl;
935 u32 hctl1, hctl2, hctl3; 930 u32 hctl1, hctl2, hctl3;
@@ -1487,10 +1482,6 @@ out:
1487 return ret; 1482 return ret;
1488} 1483}
1489 1484
1490static const struct drm_encoder_helper_funcs intel_tv_helper_funcs = {
1491 .mode_set = intel_tv_mode_set,
1492};
1493
1494static const struct drm_connector_funcs intel_tv_connector_funcs = { 1485static const struct drm_connector_funcs intel_tv_connector_funcs = {
1495 .dpms = intel_connector_dpms, 1486 .dpms = intel_connector_dpms,
1496 .detect = intel_tv_detect, 1487 .detect = intel_tv_detect,
@@ -1623,6 +1614,7 @@ intel_tv_init(struct drm_device *dev)
1623 DRM_MODE_ENCODER_TVDAC); 1614 DRM_MODE_ENCODER_TVDAC);
1624 1615
1625 intel_encoder->compute_config = intel_tv_compute_config; 1616 intel_encoder->compute_config = intel_tv_compute_config;
1617 intel_encoder->mode_set = intel_tv_mode_set;
1626 intel_encoder->enable = intel_enable_tv; 1618 intel_encoder->enable = intel_enable_tv;
1627 intel_encoder->disable = intel_disable_tv; 1619 intel_encoder->disable = intel_disable_tv;
1628 intel_encoder->get_hw_state = intel_tv_get_hw_state; 1620 intel_encoder->get_hw_state = intel_tv_get_hw_state;
@@ -1644,7 +1636,6 @@ intel_tv_init(struct drm_device *dev)
1644 1636
1645 intel_tv->tv_format = tv_modes[initial_mode].name; 1637 intel_tv->tv_format = tv_modes[initial_mode].name;
1646 1638
1647 drm_encoder_helper_add(&intel_encoder->base, &intel_tv_helper_funcs);
1648 drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); 1639 drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs);
1649 connector->interlace_allowed = false; 1640 connector->interlace_allowed = false;
1650 connector->doublescan_allowed = false; 1641 connector->doublescan_allowed = false;