diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_tv.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_tv.c | 154 |
1 files changed, 95 insertions, 59 deletions
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c index 9ca917931afb..d7d39b2327df 100644 --- a/drivers/gpu/drm/i915/intel_tv.c +++ b/drivers/gpu/drm/i915/intel_tv.c | |||
@@ -921,8 +921,8 @@ intel_tv_save(struct drm_connector *connector) | |||
921 | { | 921 | { |
922 | struct drm_device *dev = connector->dev; | 922 | struct drm_device *dev = connector->dev; |
923 | struct drm_i915_private *dev_priv = dev->dev_private; | 923 | struct drm_i915_private *dev_priv = dev->dev_private; |
924 | struct intel_output *intel_output = to_intel_output(connector); | 924 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
925 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 925 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
926 | int i; | 926 | int i; |
927 | 927 | ||
928 | tv_priv->save_TV_H_CTL_1 = I915_READ(TV_H_CTL_1); | 928 | tv_priv->save_TV_H_CTL_1 = I915_READ(TV_H_CTL_1); |
@@ -971,8 +971,8 @@ intel_tv_restore(struct drm_connector *connector) | |||
971 | { | 971 | { |
972 | struct drm_device *dev = connector->dev; | 972 | struct drm_device *dev = connector->dev; |
973 | struct drm_i915_private *dev_priv = dev->dev_private; | 973 | struct drm_i915_private *dev_priv = dev->dev_private; |
974 | struct intel_output *intel_output = to_intel_output(connector); | 974 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
975 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 975 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
976 | struct drm_crtc *crtc = connector->encoder->crtc; | 976 | struct drm_crtc *crtc = connector->encoder->crtc; |
977 | struct intel_crtc *intel_crtc; | 977 | struct intel_crtc *intel_crtc; |
978 | int i; | 978 | int i; |
@@ -1068,9 +1068,9 @@ intel_tv_mode_lookup (char *tv_format) | |||
1068 | } | 1068 | } |
1069 | 1069 | ||
1070 | static const struct tv_mode * | 1070 | static const struct tv_mode * |
1071 | intel_tv_mode_find (struct intel_output *intel_output) | 1071 | intel_tv_mode_find (struct intel_encoder *intel_encoder) |
1072 | { | 1072 | { |
1073 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1073 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
1074 | 1074 | ||
1075 | return intel_tv_mode_lookup(tv_priv->tv_format); | 1075 | return intel_tv_mode_lookup(tv_priv->tv_format); |
1076 | } | 1076 | } |
@@ -1078,8 +1078,8 @@ intel_tv_mode_find (struct intel_output *intel_output) | |||
1078 | static enum drm_mode_status | 1078 | static enum drm_mode_status |
1079 | intel_tv_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) | 1079 | intel_tv_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) |
1080 | { | 1080 | { |
1081 | struct intel_output *intel_output = to_intel_output(connector); | 1081 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1082 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1082 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
1083 | 1083 | ||
1084 | /* Ensure TV refresh is close to desired refresh */ | 1084 | /* Ensure TV refresh is close to desired refresh */ |
1085 | if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) | 1085 | if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) |
@@ -1095,8 +1095,8 @@ intel_tv_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
1095 | { | 1095 | { |
1096 | struct drm_device *dev = encoder->dev; | 1096 | struct drm_device *dev = encoder->dev; |
1097 | struct drm_mode_config *drm_config = &dev->mode_config; | 1097 | struct drm_mode_config *drm_config = &dev->mode_config; |
1098 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 1098 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
1099 | const struct tv_mode *tv_mode = intel_tv_mode_find (intel_output); | 1099 | const struct tv_mode *tv_mode = intel_tv_mode_find (intel_encoder); |
1100 | struct drm_encoder *other_encoder; | 1100 | struct drm_encoder *other_encoder; |
1101 | 1101 | ||
1102 | if (!tv_mode) | 1102 | if (!tv_mode) |
@@ -1121,9 +1121,9 @@ intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
1121 | struct drm_i915_private *dev_priv = dev->dev_private; | 1121 | struct drm_i915_private *dev_priv = dev->dev_private; |
1122 | struct drm_crtc *crtc = encoder->crtc; | 1122 | struct drm_crtc *crtc = encoder->crtc; |
1123 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 1123 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
1124 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 1124 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
1125 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1125 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
1126 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1126 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
1127 | u32 tv_ctl; | 1127 | u32 tv_ctl; |
1128 | u32 hctl1, hctl2, hctl3; | 1128 | u32 hctl1, hctl2, hctl3; |
1129 | u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; | 1129 | u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; |
@@ -1213,20 +1213,17 @@ intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
1213 | tv_ctl |= TV_TRILEVEL_SYNC; | 1213 | tv_ctl |= TV_TRILEVEL_SYNC; |
1214 | if (tv_mode->pal_burst) | 1214 | if (tv_mode->pal_burst) |
1215 | tv_ctl |= TV_PAL_BURST; | 1215 | tv_ctl |= TV_PAL_BURST; |
1216 | |||
1216 | scctl1 = 0; | 1217 | scctl1 = 0; |
1217 | /* dda1 implies valid video levels */ | 1218 | if (tv_mode->dda1_inc) |
1218 | if (tv_mode->dda1_inc) { | ||
1219 | scctl1 |= TV_SC_DDA1_EN; | 1219 | scctl1 |= TV_SC_DDA1_EN; |
1220 | } | ||
1221 | |||
1222 | if (tv_mode->dda2_inc) | 1220 | if (tv_mode->dda2_inc) |
1223 | scctl1 |= TV_SC_DDA2_EN; | 1221 | scctl1 |= TV_SC_DDA2_EN; |
1224 | |||
1225 | if (tv_mode->dda3_inc) | 1222 | if (tv_mode->dda3_inc) |
1226 | scctl1 |= TV_SC_DDA3_EN; | 1223 | scctl1 |= TV_SC_DDA3_EN; |
1227 | |||
1228 | scctl1 |= tv_mode->sc_reset; | 1224 | scctl1 |= tv_mode->sc_reset; |
1229 | scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; | 1225 | if (video_levels) |
1226 | scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; | ||
1230 | scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT; | 1227 | scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT; |
1231 | 1228 | ||
1232 | scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT | | 1229 | scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT | |
@@ -1363,9 +1360,9 @@ static const struct drm_display_mode reported_modes[] = { | |||
1363 | * \return false if TV is disconnected. | 1360 | * \return false if TV is disconnected. |
1364 | */ | 1361 | */ |
1365 | static int | 1362 | static int |
1366 | intel_tv_detect_type (struct drm_crtc *crtc, struct intel_output *intel_output) | 1363 | intel_tv_detect_type (struct drm_crtc *crtc, struct intel_encoder *intel_encoder) |
1367 | { | 1364 | { |
1368 | struct drm_encoder *encoder = &intel_output->enc; | 1365 | struct drm_encoder *encoder = &intel_encoder->enc; |
1369 | struct drm_device *dev = encoder->dev; | 1366 | struct drm_device *dev = encoder->dev; |
1370 | struct drm_i915_private *dev_priv = dev->dev_private; | 1367 | struct drm_i915_private *dev_priv = dev->dev_private; |
1371 | unsigned long irqflags; | 1368 | unsigned long irqflags; |
@@ -1416,16 +1413,16 @@ intel_tv_detect_type (struct drm_crtc *crtc, struct intel_output *intel_output) | |||
1416 | * 0 0 0 Component | 1413 | * 0 0 0 Component |
1417 | */ | 1414 | */ |
1418 | if ((tv_dac & TVDAC_SENSE_MASK) == (TVDAC_B_SENSE | TVDAC_C_SENSE)) { | 1415 | if ((tv_dac & TVDAC_SENSE_MASK) == (TVDAC_B_SENSE | TVDAC_C_SENSE)) { |
1419 | DRM_DEBUG("Detected Composite TV connection\n"); | 1416 | DRM_DEBUG_KMS("Detected Composite TV connection\n"); |
1420 | type = DRM_MODE_CONNECTOR_Composite; | 1417 | type = DRM_MODE_CONNECTOR_Composite; |
1421 | } else if ((tv_dac & (TVDAC_A_SENSE|TVDAC_B_SENSE)) == TVDAC_A_SENSE) { | 1418 | } else if ((tv_dac & (TVDAC_A_SENSE|TVDAC_B_SENSE)) == TVDAC_A_SENSE) { |
1422 | DRM_DEBUG("Detected S-Video TV connection\n"); | 1419 | DRM_DEBUG_KMS("Detected S-Video TV connection\n"); |
1423 | type = DRM_MODE_CONNECTOR_SVIDEO; | 1420 | type = DRM_MODE_CONNECTOR_SVIDEO; |
1424 | } else if ((tv_dac & TVDAC_SENSE_MASK) == 0) { | 1421 | } else if ((tv_dac & TVDAC_SENSE_MASK) == 0) { |
1425 | DRM_DEBUG("Detected Component TV connection\n"); | 1422 | DRM_DEBUG_KMS("Detected Component TV connection\n"); |
1426 | type = DRM_MODE_CONNECTOR_Component; | 1423 | type = DRM_MODE_CONNECTOR_Component; |
1427 | } else { | 1424 | } else { |
1428 | DRM_DEBUG("No TV connection detected\n"); | 1425 | DRM_DEBUG_KMS("No TV connection detected\n"); |
1429 | type = -1; | 1426 | type = -1; |
1430 | } | 1427 | } |
1431 | 1428 | ||
@@ -1444,9 +1441,9 @@ intel_tv_detect_type (struct drm_crtc *crtc, struct intel_output *intel_output) | |||
1444 | */ | 1441 | */ |
1445 | static void intel_tv_find_better_format(struct drm_connector *connector) | 1442 | static void intel_tv_find_better_format(struct drm_connector *connector) |
1446 | { | 1443 | { |
1447 | struct intel_output *intel_output = to_intel_output(connector); | 1444 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1448 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1445 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
1449 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1446 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
1450 | int i; | 1447 | int i; |
1451 | 1448 | ||
1452 | if ((tv_priv->type == DRM_MODE_CONNECTOR_Component) == | 1449 | if ((tv_priv->type == DRM_MODE_CONNECTOR_Component) == |
@@ -1478,9 +1475,9 @@ intel_tv_detect(struct drm_connector *connector) | |||
1478 | { | 1475 | { |
1479 | struct drm_crtc *crtc; | 1476 | struct drm_crtc *crtc; |
1480 | struct drm_display_mode mode; | 1477 | struct drm_display_mode mode; |
1481 | struct intel_output *intel_output = to_intel_output(connector); | 1478 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1482 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1479 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
1483 | struct drm_encoder *encoder = &intel_output->enc; | 1480 | struct drm_encoder *encoder = &intel_encoder->enc; |
1484 | int dpms_mode; | 1481 | int dpms_mode; |
1485 | int type = tv_priv->type; | 1482 | int type = tv_priv->type; |
1486 | 1483 | ||
@@ -1488,12 +1485,12 @@ intel_tv_detect(struct drm_connector *connector) | |||
1488 | drm_mode_set_crtcinfo(&mode, CRTC_INTERLACE_HALVE_V); | 1485 | drm_mode_set_crtcinfo(&mode, CRTC_INTERLACE_HALVE_V); |
1489 | 1486 | ||
1490 | if (encoder->crtc && encoder->crtc->enabled) { | 1487 | if (encoder->crtc && encoder->crtc->enabled) { |
1491 | type = intel_tv_detect_type(encoder->crtc, intel_output); | 1488 | type = intel_tv_detect_type(encoder->crtc, intel_encoder); |
1492 | } else { | 1489 | } else { |
1493 | crtc = intel_get_load_detect_pipe(intel_output, &mode, &dpms_mode); | 1490 | crtc = intel_get_load_detect_pipe(intel_encoder, &mode, &dpms_mode); |
1494 | if (crtc) { | 1491 | if (crtc) { |
1495 | type = intel_tv_detect_type(crtc, intel_output); | 1492 | type = intel_tv_detect_type(crtc, intel_encoder); |
1496 | intel_release_load_detect_pipe(intel_output, dpms_mode); | 1493 | intel_release_load_detect_pipe(intel_encoder, dpms_mode); |
1497 | } else | 1494 | } else |
1498 | type = -1; | 1495 | type = -1; |
1499 | } | 1496 | } |
@@ -1528,8 +1525,8 @@ static void | |||
1528 | intel_tv_chose_preferred_modes(struct drm_connector *connector, | 1525 | intel_tv_chose_preferred_modes(struct drm_connector *connector, |
1529 | struct drm_display_mode *mode_ptr) | 1526 | struct drm_display_mode *mode_ptr) |
1530 | { | 1527 | { |
1531 | struct intel_output *intel_output = to_intel_output(connector); | 1528 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1532 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1529 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
1533 | 1530 | ||
1534 | if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) | 1531 | if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) |
1535 | mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; | 1532 | mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; |
@@ -1553,8 +1550,8 @@ static int | |||
1553 | intel_tv_get_modes(struct drm_connector *connector) | 1550 | intel_tv_get_modes(struct drm_connector *connector) |
1554 | { | 1551 | { |
1555 | struct drm_display_mode *mode_ptr; | 1552 | struct drm_display_mode *mode_ptr; |
1556 | struct intel_output *intel_output = to_intel_output(connector); | 1553 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1557 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1554 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
1558 | int j, count = 0; | 1555 | int j, count = 0; |
1559 | u64 tmp; | 1556 | u64 tmp; |
1560 | 1557 | ||
@@ -1607,11 +1604,11 @@ intel_tv_get_modes(struct drm_connector *connector) | |||
1607 | static void | 1604 | static void |
1608 | intel_tv_destroy (struct drm_connector *connector) | 1605 | intel_tv_destroy (struct drm_connector *connector) |
1609 | { | 1606 | { |
1610 | struct intel_output *intel_output = to_intel_output(connector); | 1607 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1611 | 1608 | ||
1612 | drm_sysfs_connector_remove(connector); | 1609 | drm_sysfs_connector_remove(connector); |
1613 | drm_connector_cleanup(connector); | 1610 | drm_connector_cleanup(connector); |
1614 | kfree(intel_output); | 1611 | kfree(intel_encoder); |
1615 | } | 1612 | } |
1616 | 1613 | ||
1617 | 1614 | ||
@@ -1620,9 +1617,9 @@ intel_tv_set_property(struct drm_connector *connector, struct drm_property *prop | |||
1620 | uint64_t val) | 1617 | uint64_t val) |
1621 | { | 1618 | { |
1622 | struct drm_device *dev = connector->dev; | 1619 | struct drm_device *dev = connector->dev; |
1623 | struct intel_output *intel_output = to_intel_output(connector); | 1620 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
1624 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1621 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
1625 | struct drm_encoder *encoder = &intel_output->enc; | 1622 | struct drm_encoder *encoder = &intel_encoder->enc; |
1626 | struct drm_crtc *crtc = encoder->crtc; | 1623 | struct drm_crtc *crtc = encoder->crtc; |
1627 | int ret = 0; | 1624 | int ret = 0; |
1628 | bool changed = false; | 1625 | bool changed = false; |
@@ -1702,13 +1699,48 @@ static const struct drm_encoder_funcs intel_tv_enc_funcs = { | |||
1702 | .destroy = intel_tv_enc_destroy, | 1699 | .destroy = intel_tv_enc_destroy, |
1703 | }; | 1700 | }; |
1704 | 1701 | ||
1702 | /* | ||
1703 | * Enumerate the child dev array parsed from VBT to check whether | ||
1704 | * the integrated TV is present. | ||
1705 | * If it is present, return 1. | ||
1706 | * If it is not present, return false. | ||
1707 | * If no child dev is parsed from VBT, it assumes that the TV is present. | ||
1708 | */ | ||
1709 | static int tv_is_present_in_vbt(struct drm_device *dev) | ||
1710 | { | ||
1711 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1712 | struct child_device_config *p_child; | ||
1713 | int i, ret; | ||
1714 | |||
1715 | if (!dev_priv->child_dev_num) | ||
1716 | return 1; | ||
1717 | |||
1718 | ret = 0; | ||
1719 | for (i = 0; i < dev_priv->child_dev_num; i++) { | ||
1720 | p_child = dev_priv->child_dev + i; | ||
1721 | /* | ||
1722 | * If the device type is not TV, continue. | ||
1723 | */ | ||
1724 | if (p_child->device_type != DEVICE_TYPE_INT_TV && | ||
1725 | p_child->device_type != DEVICE_TYPE_TV) | ||
1726 | continue; | ||
1727 | /* Only when the addin_offset is non-zero, it is regarded | ||
1728 | * as present. | ||
1729 | */ | ||
1730 | if (p_child->addin_offset) { | ||
1731 | ret = 1; | ||
1732 | break; | ||
1733 | } | ||
1734 | } | ||
1735 | return ret; | ||
1736 | } | ||
1705 | 1737 | ||
1706 | void | 1738 | void |
1707 | intel_tv_init(struct drm_device *dev) | 1739 | intel_tv_init(struct drm_device *dev) |
1708 | { | 1740 | { |
1709 | struct drm_i915_private *dev_priv = dev->dev_private; | 1741 | struct drm_i915_private *dev_priv = dev->dev_private; |
1710 | struct drm_connector *connector; | 1742 | struct drm_connector *connector; |
1711 | struct intel_output *intel_output; | 1743 | struct intel_encoder *intel_encoder; |
1712 | struct intel_tv_priv *tv_priv; | 1744 | struct intel_tv_priv *tv_priv; |
1713 | u32 tv_dac_on, tv_dac_off, save_tv_dac; | 1745 | u32 tv_dac_on, tv_dac_off, save_tv_dac; |
1714 | char **tv_format_names; | 1746 | char **tv_format_names; |
@@ -1717,6 +1749,10 @@ intel_tv_init(struct drm_device *dev) | |||
1717 | if ((I915_READ(TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED) | 1749 | if ((I915_READ(TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED) |
1718 | return; | 1750 | return; |
1719 | 1751 | ||
1752 | if (!tv_is_present_in_vbt(dev)) { | ||
1753 | DRM_DEBUG_KMS("Integrated TV is not present.\n"); | ||
1754 | return; | ||
1755 | } | ||
1720 | /* Even if we have an encoder we may not have a connector */ | 1756 | /* Even if we have an encoder we may not have a connector */ |
1721 | if (!dev_priv->int_tv_support) | 1757 | if (!dev_priv->int_tv_support) |
1722 | return; | 1758 | return; |
@@ -1744,28 +1780,28 @@ intel_tv_init(struct drm_device *dev) | |||
1744 | (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) | 1780 | (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) |
1745 | return; | 1781 | return; |
1746 | 1782 | ||
1747 | intel_output = kzalloc(sizeof(struct intel_output) + | 1783 | intel_encoder = kzalloc(sizeof(struct intel_encoder) + |
1748 | sizeof(struct intel_tv_priv), GFP_KERNEL); | 1784 | sizeof(struct intel_tv_priv), GFP_KERNEL); |
1749 | if (!intel_output) { | 1785 | if (!intel_encoder) { |
1750 | return; | 1786 | return; |
1751 | } | 1787 | } |
1752 | 1788 | ||
1753 | connector = &intel_output->base; | 1789 | connector = &intel_encoder->base; |
1754 | 1790 | ||
1755 | drm_connector_init(dev, connector, &intel_tv_connector_funcs, | 1791 | drm_connector_init(dev, connector, &intel_tv_connector_funcs, |
1756 | DRM_MODE_CONNECTOR_SVIDEO); | 1792 | DRM_MODE_CONNECTOR_SVIDEO); |
1757 | 1793 | ||
1758 | drm_encoder_init(dev, &intel_output->enc, &intel_tv_enc_funcs, | 1794 | drm_encoder_init(dev, &intel_encoder->enc, &intel_tv_enc_funcs, |
1759 | DRM_MODE_ENCODER_TVDAC); | 1795 | DRM_MODE_ENCODER_TVDAC); |
1760 | 1796 | ||
1761 | drm_mode_connector_attach_encoder(&intel_output->base, &intel_output->enc); | 1797 | drm_mode_connector_attach_encoder(&intel_encoder->base, &intel_encoder->enc); |
1762 | tv_priv = (struct intel_tv_priv *)(intel_output + 1); | 1798 | tv_priv = (struct intel_tv_priv *)(intel_encoder + 1); |
1763 | intel_output->type = INTEL_OUTPUT_TVOUT; | 1799 | intel_encoder->type = INTEL_OUTPUT_TVOUT; |
1764 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 1800 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
1765 | intel_output->clone_mask = (1 << INTEL_TV_CLONE_BIT); | 1801 | intel_encoder->clone_mask = (1 << INTEL_TV_CLONE_BIT); |
1766 | intel_output->enc.possible_crtcs = ((1 << 0) | (1 << 1)); | 1802 | intel_encoder->enc.possible_crtcs = ((1 << 0) | (1 << 1)); |
1767 | intel_output->enc.possible_clones = (1 << INTEL_OUTPUT_TVOUT); | 1803 | intel_encoder->enc.possible_clones = (1 << INTEL_OUTPUT_TVOUT); |
1768 | intel_output->dev_priv = tv_priv; | 1804 | intel_encoder->dev_priv = tv_priv; |
1769 | tv_priv->type = DRM_MODE_CONNECTOR_Unknown; | 1805 | tv_priv->type = DRM_MODE_CONNECTOR_Unknown; |
1770 | 1806 | ||
1771 | /* BIOS margin values */ | 1807 | /* BIOS margin values */ |
@@ -1776,7 +1812,7 @@ intel_tv_init(struct drm_device *dev) | |||
1776 | 1812 | ||
1777 | tv_priv->tv_format = kstrdup(tv_modes[initial_mode].name, GFP_KERNEL); | 1813 | tv_priv->tv_format = kstrdup(tv_modes[initial_mode].name, GFP_KERNEL); |
1778 | 1814 | ||
1779 | drm_encoder_helper_add(&intel_output->enc, &intel_tv_helper_funcs); | 1815 | drm_encoder_helper_add(&intel_encoder->enc, &intel_tv_helper_funcs); |
1780 | drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); | 1816 | drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); |
1781 | connector->interlace_allowed = false; | 1817 | connector->interlace_allowed = false; |
1782 | connector->doublescan_allowed = false; | 1818 | connector->doublescan_allowed = false; |