|
@@ -49,7 +49,8 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
uint32_t connector_id,
|
|
|
uint32_t supported_device,
|
|
|
int connector_type,
|
|
|
- struct radeon_i2c_bus_rec *i2c_bus);
|
|
|
+ struct radeon_i2c_bus_rec *i2c_bus,
|
|
|
+ uint16_t connector_object_id);
|
|
|
|
|
|
/* from radeon_legacy_encoder.c */
|
|
|
extern void
|
|
@@ -1176,7 +1177,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 0,
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_VGA,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
} else if (rdev->flags & RADEON_IS_MOBILITY) {
|
|
|
/* LVDS */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_LCD_GPIO_MASK);
|
|
@@ -1188,7 +1190,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 0,
|
|
|
ATOM_DEVICE_LCD1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_LVDS,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_LVDS);
|
|
|
|
|
|
/* VGA - primary dac */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
|
|
@@ -1200,7 +1203,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 1,
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_VGA,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
} else {
|
|
|
/* DVI-I - tv dac, int tmds */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_DVI_DDC);
|
|
@@ -1218,7 +1222,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_DFP1_SUPPORT |
|
|
|
ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_DVII,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
|
|
|
|
|
|
/* VGA - primary dac */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
|
|
@@ -1230,7 +1235,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 1,
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_VGA,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
}
|
|
|
|
|
|
if (rdev->family != CHIP_R100 && rdev->family != CHIP_R200) {
|
|
@@ -1243,7 +1249,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 2,
|
|
|
ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
}
|
|
|
break;
|
|
|
case CT_IBOOK:
|
|
@@ -1257,7 +1264,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
0),
|
|
|
ATOM_DEVICE_LCD1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_LVDS, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_LVDS);
|
|
|
/* VGA - TV DAC */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1266,7 +1274,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
2),
|
|
|
ATOM_DEVICE_CRT2_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_VGA, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1275,7 +1284,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_POWERBOOK_EXTERNAL:
|
|
|
DRM_INFO("Connector Table: %d (powerbook external tmds)\n",
|
|
@@ -1288,7 +1298,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
0),
|
|
|
ATOM_DEVICE_LCD1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_LVDS, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_LVDS);
|
|
|
/* DVI-I - primary dac, ext tmds */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1301,10 +1312,12 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
1),
|
|
|
ATOM_DEVICE_CRT1_SUPPORT);
|
|
|
+ /* XXX some are SL */
|
|
|
radeon_add_legacy_connector(dev, 1,
|
|
|
ATOM_DEVICE_DFP2_SUPPORT |
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_DVII, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1313,7 +1326,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_POWERBOOK_INTERNAL:
|
|
|
DRM_INFO("Connector Table: %d (powerbook internal tmds)\n",
|
|
@@ -1326,7 +1340,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
0),
|
|
|
ATOM_DEVICE_LCD1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_LVDS, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_LVDS);
|
|
|
/* DVI-I - primary dac, int tmds */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1342,7 +1357,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 1,
|
|
|
ATOM_DEVICE_DFP1_SUPPORT |
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_DVII, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1351,7 +1367,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_POWERBOOK_VGA:
|
|
|
DRM_INFO("Connector Table: %d (powerbook vga)\n",
|
|
@@ -1364,7 +1381,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
0),
|
|
|
ATOM_DEVICE_LCD1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_LVDS, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_LVDS);
|
|
|
/* VGA - primary dac */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1373,7 +1391,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
1),
|
|
|
ATOM_DEVICE_CRT1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_VGA, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1382,7 +1401,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_MINI_EXTERNAL:
|
|
|
DRM_INFO("Connector Table: %d (mini external tmds)\n",
|
|
@@ -1399,10 +1419,12 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
2),
|
|
|
ATOM_DEVICE_CRT2_SUPPORT);
|
|
|
+ /* XXX are any DL? */
|
|
|
radeon_add_legacy_connector(dev, 0,
|
|
|
ATOM_DEVICE_DFP2_SUPPORT |
|
|
|
ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_DVII, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1411,7 +1433,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_MINI_INTERNAL:
|
|
|
DRM_INFO("Connector Table: %d (mini internal tmds)\n",
|
|
@@ -1431,7 +1454,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 0,
|
|
|
ATOM_DEVICE_DFP1_SUPPORT |
|
|
|
ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_DVII, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1440,7 +1464,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_IMAC_G5_ISIGHT:
|
|
|
DRM_INFO("Connector Table: %d (imac g5 isight)\n",
|
|
@@ -1453,7 +1478,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
0),
|
|
|
ATOM_DEVICE_DFP1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_DFP1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_DVID, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_DVID, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D);
|
|
|
/* VGA - tv dac */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_DVI_DDC);
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1462,7 +1488,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
2),
|
|
|
ATOM_DEVICE_CRT2_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_VGA, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1471,7 +1498,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
case CT_EMAC:
|
|
|
DRM_INFO("Connector Table: %d (emac)\n",
|
|
@@ -1484,7 +1512,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
1),
|
|
|
ATOM_DEVICE_CRT1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_VGA, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
/* VGA - tv dac */
|
|
|
ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_CRT2_DDC);
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1493,7 +1522,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
2),
|
|
|
ATOM_DEVICE_CRT2_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT,
|
|
|
- DRM_MODE_CONNECTOR_VGA, &ddc_i2c);
|
|
|
+ DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
/* TV - TV DAC */
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id(dev,
|
|
@@ -1502,7 +1532,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT);
|
|
|
radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
default:
|
|
|
DRM_INFO("Connector table: %d (invalid)\n",
|
|
@@ -1596,11 +1627,46 @@ static bool radeon_apply_legacy_tv_quirks(struct drm_device *dev)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+static uint16_t combios_check_dl_dvi(struct drm_device *dev, int is_dvi_d)
|
|
|
+{
|
|
|
+ struct radeon_device *rdev = dev->dev_private;
|
|
|
+ uint32_t ext_tmds_info;
|
|
|
+
|
|
|
+ if (rdev->flags & RADEON_IS_IGP) {
|
|
|
+ if (is_dvi_d)
|
|
|
+ return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D;
|
|
|
+ else
|
|
|
+ return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
|
|
|
+ }
|
|
|
+ ext_tmds_info = combios_get_table_offset(dev, COMBIOS_EXT_TMDS_INFO_TABLE);
|
|
|
+ if (ext_tmds_info) {
|
|
|
+ uint8_t rev = RBIOS8(ext_tmds_info);
|
|
|
+ uint8_t flags = RBIOS8(ext_tmds_info + 4 + 5);
|
|
|
+ if (rev >= 3) {
|
|
|
+ if (is_dvi_d)
|
|
|
+ return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D;
|
|
|
+ else
|
|
|
+ return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I;
|
|
|
+ } else {
|
|
|
+ if (flags & 1) {
|
|
|
+ if (is_dvi_d)
|
|
|
+ return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D;
|
|
|
+ else
|
|
|
+ return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (is_dvi_d)
|
|
|
+ return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D;
|
|
|
+ else
|
|
|
+ return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
|
|
|
+}
|
|
|
+
|
|
|
bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
{
|
|
|
struct radeon_device *rdev = dev->dev_private;
|
|
|
uint32_t conn_info, entry, devices;
|
|
|
- uint16_t tmp;
|
|
|
+ uint16_t tmp, connector_object_id;
|
|
|
enum radeon_combios_ddc ddc_type;
|
|
|
enum radeon_combios_connector connector;
|
|
|
int i = 0;
|
|
@@ -1660,7 +1726,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, i, devices,
|
|
|
legacy_connector_convert
|
|
|
[connector],
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D);
|
|
|
break;
|
|
|
case CONNECTOR_CRT_LEGACY:
|
|
|
if (tmp & 0x1) {
|
|
@@ -1685,7 +1752,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
devices,
|
|
|
legacy_connector_convert
|
|
|
[connector],
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
break;
|
|
|
case CONNECTOR_DVI_I_LEGACY:
|
|
|
devices = 0;
|
|
@@ -1714,6 +1782,7 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
ATOM_DEVICE_DFP2_SUPPORT,
|
|
|
0),
|
|
|
ATOM_DEVICE_DFP2_SUPPORT);
|
|
|
+ connector_object_id = combios_check_dl_dvi(dev, 0);
|
|
|
} else {
|
|
|
devices |= ATOM_DEVICE_DFP1_SUPPORT;
|
|
|
radeon_add_legacy_encoder(dev,
|
|
@@ -1722,19 +1791,24 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
ATOM_DEVICE_DFP1_SUPPORT,
|
|
|
0),
|
|
|
ATOM_DEVICE_DFP1_SUPPORT);
|
|
|
+ connector_object_id = CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
|
|
|
}
|
|
|
radeon_add_legacy_connector(dev,
|
|
|
i,
|
|
|
devices,
|
|
|
legacy_connector_convert
|
|
|
[connector],
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ connector_object_id);
|
|
|
break;
|
|
|
case CONNECTOR_DVI_D_LEGACY:
|
|
|
- if ((tmp >> 4) & 0x1)
|
|
|
+ if ((tmp >> 4) & 0x1) {
|
|
|
devices = ATOM_DEVICE_DFP2_SUPPORT;
|
|
|
- else
|
|
|
+ connector_object_id = combios_check_dl_dvi(dev, 1);
|
|
|
+ } else {
|
|
|
devices = ATOM_DEVICE_DFP1_SUPPORT;
|
|
|
+ connector_object_id = CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
|
|
|
+ }
|
|
|
radeon_add_legacy_encoder(dev,
|
|
|
radeon_get_encoder_id
|
|
|
(dev, devices, 0),
|
|
@@ -1742,7 +1816,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, i, devices,
|
|
|
legacy_connector_convert
|
|
|
[connector],
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ connector_object_id);
|
|
|
break;
|
|
|
case CONNECTOR_CTV_LEGACY:
|
|
|
case CONNECTOR_STV_LEGACY:
|
|
@@ -1756,7 +1831,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
ATOM_DEVICE_TV1_SUPPORT,
|
|
|
legacy_connector_convert
|
|
|
[connector],
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
break;
|
|
|
default:
|
|
|
DRM_ERROR("Unknown connector type: %d\n",
|
|
@@ -1788,7 +1864,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
ATOM_DEVICE_CRT1_SUPPORT |
|
|
|
ATOM_DEVICE_DFP1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_DVII,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
|
|
|
} else {
|
|
|
uint16_t crt_info =
|
|
|
combios_get_table_offset(dev, COMBIOS_CRT_INFO_TABLE);
|
|
@@ -1804,7 +1881,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
0,
|
|
|
ATOM_DEVICE_CRT1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_VGA,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_VGA);
|
|
|
} else {
|
|
|
DRM_DEBUG("No connector info found\n");
|
|
|
return false;
|
|
@@ -1903,7 +1981,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
5,
|
|
|
ATOM_DEVICE_LCD1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_LVDS,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_LVDS);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1923,7 +2002,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
|
|
|
radeon_add_legacy_connector(dev, 6,
|
|
|
ATOM_DEVICE_TV1_SUPPORT,
|
|
|
DRM_MODE_CONNECTOR_SVIDEO,
|
|
|
- &ddc_i2c);
|
|
|
+ &ddc_i2c,
|
|
|
+ CONNECTOR_OBJECT_ID_SVIDEO);
|
|
|
}
|
|
|
}
|
|
|
}
|