diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_combios.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_combios.c | 66 | 
1 files changed, 66 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c index 2cad9fde92f..576f4f6919f 100644 --- a/drivers/gpu/drm/radeon/radeon_combios.c +++ b/drivers/gpu/drm/radeon/radeon_combios.c @@ -1561,6 +1561,11 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)  			   (rdev->pdev->subsystem_device == 0x4150)) {  			/* Mac G5 tower 9600 */  			rdev->mode_info.connector_table = CT_MAC_G5_9600; +		} else if ((rdev->pdev->device == 0x4c66) && +			   (rdev->pdev->subsystem_vendor == 0x1002) && +			   (rdev->pdev->subsystem_device == 0x4c66)) { +			/* SAM440ep RV250 embedded board */ +			rdev->mode_info.connector_table = CT_SAM440EP;  		} else  #endif /* CONFIG_PPC_PMAC */  #ifdef CONFIG_PPC64 @@ -2134,6 +2139,67 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)  					    CONNECTOR_OBJECT_ID_SVIDEO,  					    &hpd);  		break; +	case CT_SAM440EP: +		DRM_INFO("Connector Table: %d (SAM440ep embedded board)\n", +			 rdev->mode_info.connector_table); +		/* LVDS */ +		ddc_i2c = combios_setup_i2c_bus(rdev, DDC_NONE_DETECTED, 0, 0); +		hpd.hpd = RADEON_HPD_NONE; +		radeon_add_legacy_encoder(dev, +					  radeon_get_encoder_enum(dev, +								ATOM_DEVICE_LCD1_SUPPORT, +								0), +					  ATOM_DEVICE_LCD1_SUPPORT); +		radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT, +					    DRM_MODE_CONNECTOR_LVDS, &ddc_i2c, +					    CONNECTOR_OBJECT_ID_LVDS, +					    &hpd); +		/* DVI-I - secondary dac, int tmds */ +		ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); +		hpd.hpd = RADEON_HPD_1; /* ??? */ +		radeon_add_legacy_encoder(dev, +					  radeon_get_encoder_enum(dev, +								ATOM_DEVICE_DFP1_SUPPORT, +								0), +					  ATOM_DEVICE_DFP1_SUPPORT); +		radeon_add_legacy_encoder(dev, +					  radeon_get_encoder_enum(dev, +								ATOM_DEVICE_CRT2_SUPPORT, +								2), +					  ATOM_DEVICE_CRT2_SUPPORT); +		radeon_add_legacy_connector(dev, 1, +					    ATOM_DEVICE_DFP1_SUPPORT | +					    ATOM_DEVICE_CRT2_SUPPORT, +					    DRM_MODE_CONNECTOR_DVII, &ddc_i2c, +					    CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I, +					    &hpd); +		/* VGA - primary dac */ +		ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); +		hpd.hpd = RADEON_HPD_NONE; +		radeon_add_legacy_encoder(dev, +					  radeon_get_encoder_enum(dev, +								ATOM_DEVICE_CRT1_SUPPORT, +								1), +					  ATOM_DEVICE_CRT1_SUPPORT); +		radeon_add_legacy_connector(dev, 2, +					    ATOM_DEVICE_CRT1_SUPPORT, +					    DRM_MODE_CONNECTOR_VGA, &ddc_i2c, +					    CONNECTOR_OBJECT_ID_VGA, +					    &hpd); +		/* TV - TV DAC */ +		ddc_i2c.valid = false; +		hpd.hpd = RADEON_HPD_NONE; +		radeon_add_legacy_encoder(dev, +					  radeon_get_encoder_enum(dev, +								ATOM_DEVICE_TV1_SUPPORT, +								2), +					  ATOM_DEVICE_TV1_SUPPORT); +		radeon_add_legacy_connector(dev, 3, ATOM_DEVICE_TV1_SUPPORT, +					    DRM_MODE_CONNECTOR_SVIDEO, +					    &ddc_i2c, +					    CONNECTOR_OBJECT_ID_SVIDEO, +					    &hpd); +		break;  	default:  		DRM_INFO("Connector table: %d (invalid)\n",  			 rdev->mode_info.connector_table);  |