aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_tv.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-08-04 08:50:23 -0400
committerEric Anholt <eric@anholt.net>2010-08-09 14:24:28 -0400
commitea5b213ad4b161463e76b63dbb115ea20e2200f0 (patch)
treeb6d07b00b479fcc3849e0fdc4c98f498aa3645bf /drivers/gpu/drm/i915/intel_tv.c
parent94113cecaea5067a0f7e1135abbd92cf2c297d42 (diff)
drm/i915: Subclass intel_encoder.
Subclass intel_encoder to reduce the pointer dance through intel_encoder->dev_priv. 10 files changed, 896 insertions(+), 997 deletions(-) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_tv.c')
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c150
1 files changed, 71 insertions, 79 deletions
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index cc3726a4a1cb..1bd6e8795011 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -44,7 +44,9 @@ enum tv_margin {
44}; 44};
45 45
46/** Private structure for the integrated TV support */ 46/** Private structure for the integrated TV support */
47struct intel_tv_priv { 47struct intel_tv {
48 struct intel_encoder base;
49
48 int type; 50 int type;
49 char *tv_format; 51 char *tv_format;
50 int margin[4]; 52 int margin[4];
@@ -896,6 +898,11 @@ static const struct tv_mode tv_modes[] = {
896 }, 898 },
897}; 899};
898 900
901static struct intel_tv *enc_to_intel_tv(struct drm_encoder *encoder)
902{
903 return container_of(enc_to_intel_encoder(encoder), struct intel_tv, base);
904}
905
899static void 906static void
900intel_tv_dpms(struct drm_encoder *encoder, int mode) 907intel_tv_dpms(struct drm_encoder *encoder, int mode)
901{ 908{
@@ -929,19 +936,17 @@ intel_tv_mode_lookup (char *tv_format)
929} 936}
930 937
931static const struct tv_mode * 938static const struct tv_mode *
932intel_tv_mode_find (struct intel_encoder *intel_encoder) 939intel_tv_mode_find (struct intel_tv *intel_tv)
933{ 940{
934 struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; 941 return intel_tv_mode_lookup(intel_tv->tv_format);
935
936 return intel_tv_mode_lookup(tv_priv->tv_format);
937} 942}
938 943
939static enum drm_mode_status 944static enum drm_mode_status
940intel_tv_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) 945intel_tv_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode)
941{ 946{
942 struct drm_encoder *encoder = intel_attached_encoder(connector); 947 struct drm_encoder *encoder = intel_attached_encoder(connector);
943 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 948 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
944 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); 949 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
945 950
946 /* Ensure TV refresh is close to desired refresh */ 951 /* Ensure TV refresh is close to desired refresh */
947 if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) 952 if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000)
@@ -957,8 +962,8 @@ intel_tv_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
957{ 962{
958 struct drm_device *dev = encoder->dev; 963 struct drm_device *dev = encoder->dev;
959 struct drm_mode_config *drm_config = &dev->mode_config; 964 struct drm_mode_config *drm_config = &dev->mode_config;
960 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 965 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
961 const struct tv_mode *tv_mode = intel_tv_mode_find (intel_encoder); 966 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
962 struct drm_encoder *other_encoder; 967 struct drm_encoder *other_encoder;
963 968
964 if (!tv_mode) 969 if (!tv_mode)
@@ -983,9 +988,8 @@ intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
983 struct drm_i915_private *dev_priv = dev->dev_private; 988 struct drm_i915_private *dev_priv = dev->dev_private;
984 struct drm_crtc *crtc = encoder->crtc; 989 struct drm_crtc *crtc = encoder->crtc;
985 struct intel_crtc *intel_crtc = to_intel_crtc(crtc); 990 struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
986 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 991 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
987 struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; 992 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
988 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder);
989 u32 tv_ctl; 993 u32 tv_ctl;
990 u32 hctl1, hctl2, hctl3; 994 u32 hctl1, hctl2, hctl3;
991 u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; 995 u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7;
@@ -1001,7 +1005,7 @@ intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
1001 tv_ctl = I915_READ(TV_CTL); 1005 tv_ctl = I915_READ(TV_CTL);
1002 tv_ctl &= TV_CTL_SAVE; 1006 tv_ctl &= TV_CTL_SAVE;
1003 1007
1004 switch (tv_priv->type) { 1008 switch (intel_tv->type) {
1005 default: 1009 default:
1006 case DRM_MODE_CONNECTOR_Unknown: 1010 case DRM_MODE_CONNECTOR_Unknown:
1007 case DRM_MODE_CONNECTOR_Composite: 1011 case DRM_MODE_CONNECTOR_Composite:
@@ -1168,12 +1172,12 @@ intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
1168 else 1172 else
1169 ysize = 2*tv_mode->nbr_end + 1; 1173 ysize = 2*tv_mode->nbr_end + 1;
1170 1174
1171 xpos += tv_priv->margin[TV_MARGIN_LEFT]; 1175 xpos += intel_tv->margin[TV_MARGIN_LEFT];
1172 ypos += tv_priv->margin[TV_MARGIN_TOP]; 1176 ypos += intel_tv->margin[TV_MARGIN_TOP];
1173 xsize -= (tv_priv->margin[TV_MARGIN_LEFT] + 1177 xsize -= (intel_tv->margin[TV_MARGIN_LEFT] +
1174 tv_priv->margin[TV_MARGIN_RIGHT]); 1178 intel_tv->margin[TV_MARGIN_RIGHT]);
1175 ysize -= (tv_priv->margin[TV_MARGIN_TOP] + 1179 ysize -= (intel_tv->margin[TV_MARGIN_TOP] +
1176 tv_priv->margin[TV_MARGIN_BOTTOM]); 1180 intel_tv->margin[TV_MARGIN_BOTTOM]);
1177 I915_WRITE(TV_WIN_POS, (xpos<<16)|ypos); 1181 I915_WRITE(TV_WIN_POS, (xpos<<16)|ypos);
1178 I915_WRITE(TV_WIN_SIZE, (xsize<<16)|ysize); 1182 I915_WRITE(TV_WIN_SIZE, (xsize<<16)|ysize);
1179 1183
@@ -1222,9 +1226,9 @@ static const struct drm_display_mode reported_modes[] = {
1222 * \return false if TV is disconnected. 1226 * \return false if TV is disconnected.
1223 */ 1227 */
1224static int 1228static int
1225intel_tv_detect_type (struct drm_crtc *crtc, struct intel_encoder *intel_encoder) 1229intel_tv_detect_type (struct intel_tv *intel_tv)
1226{ 1230{
1227 struct drm_encoder *encoder = &intel_encoder->enc; 1231 struct drm_encoder *encoder = &intel_tv->base.enc;
1228 struct drm_device *dev = encoder->dev; 1232 struct drm_device *dev = encoder->dev;
1229 struct drm_i915_private *dev_priv = dev->dev_private; 1233 struct drm_i915_private *dev_priv = dev->dev_private;
1230 unsigned long irqflags; 1234 unsigned long irqflags;
@@ -1304,12 +1308,11 @@ intel_tv_detect_type (struct drm_crtc *crtc, struct intel_encoder *intel_encoder
1304static void intel_tv_find_better_format(struct drm_connector *connector) 1308static void intel_tv_find_better_format(struct drm_connector *connector)
1305{ 1309{
1306 struct drm_encoder *encoder = intel_attached_encoder(connector); 1310 struct drm_encoder *encoder = intel_attached_encoder(connector);
1307 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 1311 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
1308 struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; 1312 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
1309 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder);
1310 int i; 1313 int i;
1311 1314
1312 if ((tv_priv->type == DRM_MODE_CONNECTOR_Component) == 1315 if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) ==
1313 tv_mode->component_only) 1316 tv_mode->component_only)
1314 return; 1317 return;
1315 1318
@@ -1317,12 +1320,12 @@ static void intel_tv_find_better_format(struct drm_connector *connector)
1317 for (i = 0; i < sizeof(tv_modes) / sizeof(*tv_modes); i++) { 1320 for (i = 0; i < sizeof(tv_modes) / sizeof(*tv_modes); i++) {
1318 tv_mode = tv_modes + i; 1321 tv_mode = tv_modes + i;
1319 1322
1320 if ((tv_priv->type == DRM_MODE_CONNECTOR_Component) == 1323 if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) ==
1321 tv_mode->component_only) 1324 tv_mode->component_only)
1322 break; 1325 break;
1323 } 1326 }
1324 1327
1325 tv_priv->tv_format = tv_mode->name; 1328 intel_tv->tv_format = tv_mode->name;
1326 drm_connector_property_set_value(connector, 1329 drm_connector_property_set_value(connector,
1327 connector->dev->mode_config.tv_mode_property, i); 1330 connector->dev->mode_config.tv_mode_property, i);
1328} 1331}
@@ -1336,31 +1339,31 @@ static void intel_tv_find_better_format(struct drm_connector *connector)
1336static enum drm_connector_status 1339static enum drm_connector_status
1337intel_tv_detect(struct drm_connector *connector) 1340intel_tv_detect(struct drm_connector *connector)
1338{ 1341{
1339 struct drm_crtc *crtc;
1340 struct drm_display_mode mode; 1342 struct drm_display_mode mode;
1341 struct drm_encoder *encoder = intel_attached_encoder(connector); 1343 struct drm_encoder *encoder = intel_attached_encoder(connector);
1342 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 1344 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
1343 struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; 1345 int type;
1344 int dpms_mode;
1345 int type = tv_priv->type;
1346 1346
1347 mode = reported_modes[0]; 1347 mode = reported_modes[0];
1348 drm_mode_set_crtcinfo(&mode, CRTC_INTERLACE_HALVE_V); 1348 drm_mode_set_crtcinfo(&mode, CRTC_INTERLACE_HALVE_V);
1349 1349
1350 if (encoder->crtc && encoder->crtc->enabled) { 1350 if (encoder->crtc && encoder->crtc->enabled) {
1351 type = intel_tv_detect_type(encoder->crtc, intel_encoder); 1351 type = intel_tv_detect_type(intel_tv);
1352 } else { 1352 } else {
1353 crtc = intel_get_load_detect_pipe(intel_encoder, connector, 1353 struct drm_crtc *crtc;
1354 int dpms_mode;
1355
1356 crtc = intel_get_load_detect_pipe(&intel_tv->base, connector,
1354 &mode, &dpms_mode); 1357 &mode, &dpms_mode);
1355 if (crtc) { 1358 if (crtc) {
1356 type = intel_tv_detect_type(crtc, intel_encoder); 1359 type = intel_tv_detect_type(intel_tv);
1357 intel_release_load_detect_pipe(intel_encoder, connector, 1360 intel_release_load_detect_pipe(&intel_tv->base, connector,
1358 dpms_mode); 1361 dpms_mode);
1359 } else 1362 } else
1360 type = -1; 1363 type = -1;
1361 } 1364 }
1362 1365
1363 tv_priv->type = type; 1366 intel_tv->type = type;
1364 1367
1365 if (type < 0) 1368 if (type < 0)
1366 return connector_status_disconnected; 1369 return connector_status_disconnected;
@@ -1391,8 +1394,8 @@ intel_tv_chose_preferred_modes(struct drm_connector *connector,
1391 struct drm_display_mode *mode_ptr) 1394 struct drm_display_mode *mode_ptr)
1392{ 1395{
1393 struct drm_encoder *encoder = intel_attached_encoder(connector); 1396 struct drm_encoder *encoder = intel_attached_encoder(connector);
1394 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 1397 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
1395 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); 1398 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
1396 1399
1397 if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) 1400 if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480)
1398 mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; 1401 mode_ptr->type |= DRM_MODE_TYPE_PREFERRED;
@@ -1417,8 +1420,8 @@ intel_tv_get_modes(struct drm_connector *connector)
1417{ 1420{
1418 struct drm_display_mode *mode_ptr; 1421 struct drm_display_mode *mode_ptr;
1419 struct drm_encoder *encoder = intel_attached_encoder(connector); 1422 struct drm_encoder *encoder = intel_attached_encoder(connector);
1420 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 1423 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
1421 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); 1424 const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
1422 int j, count = 0; 1425 int j, count = 0;
1423 u64 tmp; 1426 u64 tmp;
1424 1427
@@ -1483,8 +1486,7 @@ intel_tv_set_property(struct drm_connector *connector, struct drm_property *prop
1483{ 1486{
1484 struct drm_device *dev = connector->dev; 1487 struct drm_device *dev = connector->dev;
1485 struct drm_encoder *encoder = intel_attached_encoder(connector); 1488 struct drm_encoder *encoder = intel_attached_encoder(connector);
1486 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); 1489 struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
1487 struct intel_tv_priv *tv_priv = intel_encoder->dev_priv;
1488 struct drm_crtc *crtc = encoder->crtc; 1490 struct drm_crtc *crtc = encoder->crtc;
1489 int ret = 0; 1491 int ret = 0;
1490 bool changed = false; 1492 bool changed = false;
@@ -1494,30 +1496,30 @@ intel_tv_set_property(struct drm_connector *connector, struct drm_property *prop
1494 goto out; 1496 goto out;
1495 1497
1496 if (property == dev->mode_config.tv_left_margin_property && 1498 if (property == dev->mode_config.tv_left_margin_property &&
1497 tv_priv->margin[TV_MARGIN_LEFT] != val) { 1499 intel_tv->margin[TV_MARGIN_LEFT] != val) {
1498 tv_priv->margin[TV_MARGIN_LEFT] = val; 1500 intel_tv->margin[TV_MARGIN_LEFT] = val;
1499 changed = true; 1501 changed = true;
1500 } else if (property == dev->mode_config.tv_right_margin_property && 1502 } else if (property == dev->mode_config.tv_right_margin_property &&
1501 tv_priv->margin[TV_MARGIN_RIGHT] != val) { 1503 intel_tv->margin[TV_MARGIN_RIGHT] != val) {
1502 tv_priv->margin[TV_MARGIN_RIGHT] = val; 1504 intel_tv->margin[TV_MARGIN_RIGHT] = val;
1503 changed = true; 1505 changed = true;
1504 } else if (property == dev->mode_config.tv_top_margin_property && 1506 } else if (property == dev->mode_config.tv_top_margin_property &&
1505 tv_priv->margin[TV_MARGIN_TOP] != val) { 1507 intel_tv->margin[TV_MARGIN_TOP] != val) {
1506 tv_priv->margin[TV_MARGIN_TOP] = val; 1508 intel_tv->margin[TV_MARGIN_TOP] = val;
1507 changed = true; 1509 changed = true;
1508 } else if (property == dev->mode_config.tv_bottom_margin_property && 1510 } else if (property == dev->mode_config.tv_bottom_margin_property &&
1509 tv_priv->margin[TV_MARGIN_BOTTOM] != val) { 1511 intel_tv->margin[TV_MARGIN_BOTTOM] != val) {
1510 tv_priv->margin[TV_MARGIN_BOTTOM] = val; 1512 intel_tv->margin[TV_MARGIN_BOTTOM] = val;
1511 changed = true; 1513 changed = true;
1512 } else if (property == dev->mode_config.tv_mode_property) { 1514 } else if (property == dev->mode_config.tv_mode_property) {
1513 if (val >= ARRAY_SIZE(tv_modes)) { 1515 if (val >= ARRAY_SIZE(tv_modes)) {
1514 ret = -EINVAL; 1516 ret = -EINVAL;
1515 goto out; 1517 goto out;
1516 } 1518 }
1517 if (!strcmp(tv_priv->tv_format, tv_modes[val].name)) 1519 if (!strcmp(intel_tv->tv_format, tv_modes[val].name))
1518 goto out; 1520 goto out;
1519 1521
1520 tv_priv->tv_format = tv_modes[val].name; 1522 intel_tv->tv_format = tv_modes[val].name;
1521 changed = true; 1523 changed = true;
1522 } else { 1524 } else {
1523 ret = -EINVAL; 1525 ret = -EINVAL;
@@ -1553,16 +1555,8 @@ static const struct drm_connector_helper_funcs intel_tv_connector_helper_funcs =
1553 .best_encoder = intel_attached_encoder, 1555 .best_encoder = intel_attached_encoder,
1554}; 1556};
1555 1557
1556static void intel_tv_enc_destroy(struct drm_encoder *encoder)
1557{
1558 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);
1559
1560 drm_encoder_cleanup(encoder);
1561 kfree(intel_encoder);
1562}
1563
1564static const struct drm_encoder_funcs intel_tv_enc_funcs = { 1558static const struct drm_encoder_funcs intel_tv_enc_funcs = {
1565 .destroy = intel_tv_enc_destroy, 1559 .destroy = intel_encoder_destroy,
1566}; 1560};
1567 1561
1568/* 1562/*
@@ -1606,9 +1600,9 @@ intel_tv_init(struct drm_device *dev)
1606{ 1600{
1607 struct drm_i915_private *dev_priv = dev->dev_private; 1601 struct drm_i915_private *dev_priv = dev->dev_private;
1608 struct drm_connector *connector; 1602 struct drm_connector *connector;
1603 struct intel_tv *intel_tv;
1609 struct intel_encoder *intel_encoder; 1604 struct intel_encoder *intel_encoder;
1610 struct intel_connector *intel_connector; 1605 struct intel_connector *intel_connector;
1611 struct intel_tv_priv *tv_priv;
1612 u32 tv_dac_on, tv_dac_off, save_tv_dac; 1606 u32 tv_dac_on, tv_dac_off, save_tv_dac;
1613 char **tv_format_names; 1607 char **tv_format_names;
1614 int i, initial_mode = 0; 1608 int i, initial_mode = 0;
@@ -1647,18 +1641,18 @@ intel_tv_init(struct drm_device *dev)
1647 (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) 1641 (tv_dac_off & TVDAC_STATE_CHG_EN) != 0)
1648 return; 1642 return;
1649 1643
1650 intel_encoder = kzalloc(sizeof(struct intel_encoder) + 1644 intel_tv = kzalloc(sizeof(struct intel_tv), GFP_KERNEL);
1651 sizeof(struct intel_tv_priv), GFP_KERNEL); 1645 if (!intel_tv) {
1652 if (!intel_encoder) {
1653 return; 1646 return;
1654 } 1647 }
1655 1648
1656 intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); 1649 intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL);
1657 if (!intel_connector) { 1650 if (!intel_connector) {
1658 kfree(intel_encoder); 1651 kfree(intel_tv);
1659 return; 1652 return;
1660 } 1653 }
1661 1654
1655 intel_encoder = &intel_tv->base;
1662 connector = &intel_connector->base; 1656 connector = &intel_connector->base;
1663 1657
1664 drm_connector_init(dev, connector, &intel_tv_connector_funcs, 1658 drm_connector_init(dev, connector, &intel_tv_connector_funcs,
@@ -1668,22 +1662,20 @@ intel_tv_init(struct drm_device *dev)
1668 DRM_MODE_ENCODER_TVDAC); 1662 DRM_MODE_ENCODER_TVDAC);
1669 1663
1670 drm_mode_connector_attach_encoder(&intel_connector->base, &intel_encoder->enc); 1664 drm_mode_connector_attach_encoder(&intel_connector->base, &intel_encoder->enc);
1671 tv_priv = (struct intel_tv_priv *)(intel_encoder + 1);
1672 intel_encoder->type = INTEL_OUTPUT_TVOUT; 1665 intel_encoder->type = INTEL_OUTPUT_TVOUT;
1673 intel_encoder->crtc_mask = (1 << 0) | (1 << 1); 1666 intel_encoder->crtc_mask = (1 << 0) | (1 << 1);
1674 intel_encoder->clone_mask = (1 << INTEL_TV_CLONE_BIT); 1667 intel_encoder->clone_mask = (1 << INTEL_TV_CLONE_BIT);
1675 intel_encoder->enc.possible_crtcs = ((1 << 0) | (1 << 1)); 1668 intel_encoder->enc.possible_crtcs = ((1 << 0) | (1 << 1));
1676 intel_encoder->enc.possible_clones = (1 << INTEL_OUTPUT_TVOUT); 1669 intel_encoder->enc.possible_clones = (1 << INTEL_OUTPUT_TVOUT);
1677 intel_encoder->dev_priv = tv_priv; 1670 intel_tv->type = DRM_MODE_CONNECTOR_Unknown;
1678 tv_priv->type = DRM_MODE_CONNECTOR_Unknown;
1679 1671
1680 /* BIOS margin values */ 1672 /* BIOS margin values */
1681 tv_priv->margin[TV_MARGIN_LEFT] = 54; 1673 intel_tv->margin[TV_MARGIN_LEFT] = 54;
1682 tv_priv->margin[TV_MARGIN_TOP] = 36; 1674 intel_tv->margin[TV_MARGIN_TOP] = 36;
1683 tv_priv->margin[TV_MARGIN_RIGHT] = 46; 1675 intel_tv->margin[TV_MARGIN_RIGHT] = 46;
1684 tv_priv->margin[TV_MARGIN_BOTTOM] = 37; 1676 intel_tv->margin[TV_MARGIN_BOTTOM] = 37;
1685 1677
1686 tv_priv->tv_format = kstrdup(tv_modes[initial_mode].name, GFP_KERNEL); 1678 intel_tv->tv_format = kstrdup(tv_modes[initial_mode].name, GFP_KERNEL);
1687 1679
1688 drm_encoder_helper_add(&intel_encoder->enc, &intel_tv_helper_funcs); 1680 drm_encoder_helper_add(&intel_encoder->enc, &intel_tv_helper_funcs);
1689 drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); 1681 drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs);
@@ -1703,16 +1695,16 @@ intel_tv_init(struct drm_device *dev)
1703 initial_mode); 1695 initial_mode);
1704 drm_connector_attach_property(connector, 1696 drm_connector_attach_property(connector,
1705 dev->mode_config.tv_left_margin_property, 1697 dev->mode_config.tv_left_margin_property,
1706 tv_priv->margin[TV_MARGIN_LEFT]); 1698 intel_tv->margin[TV_MARGIN_LEFT]);
1707 drm_connector_attach_property(connector, 1699 drm_connector_attach_property(connector,
1708 dev->mode_config.tv_top_margin_property, 1700 dev->mode_config.tv_top_margin_property,
1709 tv_priv->margin[TV_MARGIN_TOP]); 1701 intel_tv->margin[TV_MARGIN_TOP]);
1710 drm_connector_attach_property(connector, 1702 drm_connector_attach_property(connector,
1711 dev->mode_config.tv_right_margin_property, 1703 dev->mode_config.tv_right_margin_property,
1712 tv_priv->margin[TV_MARGIN_RIGHT]); 1704 intel_tv->margin[TV_MARGIN_RIGHT]);
1713 drm_connector_attach_property(connector, 1705 drm_connector_attach_property(connector,
1714 dev->mode_config.tv_bottom_margin_property, 1706 dev->mode_config.tv_bottom_margin_property,
1715 tv_priv->margin[TV_MARGIN_BOTTOM]); 1707 intel_tv->margin[TV_MARGIN_BOTTOM]);
1716out: 1708out:
1717 drm_sysfs_connector_add(connector); 1709 drm_sysfs_connector_add(connector);
1718} 1710}