Rev 6104 | Rev 6661 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6104 | Rev 6321 | ||
---|---|---|---|
Line 435... | Line 435... | ||
435 | struct radeon_device *rdev = dev->dev_private; |
435 | struct radeon_device *rdev = dev->dev_private; |
436 | *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93); |
436 | *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93); |
437 | } |
437 | } |
Line 438... | Line 438... | ||
438 | 438 | ||
- | 439 | /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ |
|
- | 440 | if (((dev->pdev->device == 0x9802) || |
|
439 | /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ |
441 | (dev->pdev->device == 0x9805) || |
440 | if (((dev->pdev->device == 0x9802) || (dev->pdev->device == 0x9806)) && |
442 | (dev->pdev->device == 0x9806)) && |
441 | (dev->pdev->subsystem_vendor == 0x1734) && |
443 | (dev->pdev->subsystem_vendor == 0x1734) && |
442 | (dev->pdev->subsystem_device == 0x11bd)) { |
444 | (dev->pdev->subsystem_device == 0x11bd)) { |
443 | if (*connector_type == DRM_MODE_CONNECTOR_VGA) { |
445 | if (*connector_type == DRM_MODE_CONNECTOR_VGA) { |
444 | *connector_type = DRM_MODE_CONNECTOR_DVII; |
446 | *connector_type = DRM_MODE_CONNECTOR_DVII; |
445 | *line_mux = 0x3103; |
447 | *line_mux = 0x3103; |
446 | } else if (*connector_type == DRM_MODE_CONNECTOR_DVID) { |
448 | } else if (*connector_type == DRM_MODE_CONNECTOR_DVID) { |
447 | *connector_type = DRM_MODE_CONNECTOR_DVII; |
449 | *connector_type = DRM_MODE_CONNECTOR_DVII; |
448 | } |
450 | } |
Line 449... | Line -... | ||
449 | } |
- | |
450 | - | ||
451 | /* Fujitsu D3003-S2 board lists DVI-I as DVI-I and VGA */ |
- | |
452 | if ((dev->pdev->device == 0x9805) && |
- | |
453 | (dev->pdev->subsystem_vendor == 0x1734) && |
- | |
454 | (dev->pdev->subsystem_device == 0x11bd)) { |
- | |
455 | if (*connector_type == DRM_MODE_CONNECTOR_VGA) |
- | |
456 | return false; |
- | |
457 | } |
451 | } |
458 | 452 | ||
Line 459... | Line 453... | ||
459 | return true; |
453 | return true; |
460 | } |
454 | } |
Line 1110... | Line 1104... | ||
1110 | ATOM_FIRMWARE_INFO_V1_4 info_14; |
1104 | ATOM_FIRMWARE_INFO_V1_4 info_14; |
1111 | ATOM_FIRMWARE_INFO_V2_1 info_21; |
1105 | ATOM_FIRMWARE_INFO_V2_1 info_21; |
1112 | ATOM_FIRMWARE_INFO_V2_2 info_22; |
1106 | ATOM_FIRMWARE_INFO_V2_2 info_22; |
1113 | }; |
1107 | }; |
Line -... | Line 1108... | ||
- | 1108 | ||
- | 1109 | union igp_info { |
|
- | 1110 | struct _ATOM_INTEGRATED_SYSTEM_INFO info; |
|
- | 1111 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2; |
|
- | 1112 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V6 info_6; |
|
- | 1113 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7 info_7; |
|
- | 1114 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8 info_8; |
|
- | 1115 | }; |
|
- | 1116 | ||
- | 1117 | static void radeon_atombios_get_dentist_vco_freq(struct radeon_device *rdev) |
|
- | 1118 | { |
|
- | 1119 | struct radeon_mode_info *mode_info = &rdev->mode_info; |
|
- | 1120 | int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo); |
|
- | 1121 | union igp_info *igp_info; |
|
- | 1122 | u8 frev, crev; |
|
- | 1123 | u16 data_offset; |
|
- | 1124 | ||
- | 1125 | if (atom_parse_data_header(mode_info->atom_context, index, NULL, |
|
- | 1126 | &frev, &crev, &data_offset)) { |
|
- | 1127 | igp_info = (union igp_info *)(mode_info->atom_context->bios + |
|
- | 1128 | data_offset); |
|
- | 1129 | rdev->clock.vco_freq = |
|
- | 1130 | le32_to_cpu(igp_info->info_6.ulDentistVCOFreq); |
|
- | 1131 | } |
|
- | 1132 | } |
|
1114 | 1133 | ||
1115 | bool radeon_atom_get_clock_info(struct drm_device *dev) |
1134 | bool radeon_atom_get_clock_info(struct drm_device *dev) |
1116 | { |
1135 | { |
1117 | struct radeon_device *rdev = dev->dev_private; |
1136 | struct radeon_device *rdev = dev->dev_private; |
1118 | struct radeon_mode_info *mode_info = &rdev->mode_info; |
1137 | struct radeon_mode_info *mode_info = &rdev->mode_info; |
Line 1261... | Line 1280... | ||
1261 | 1280 | ||
1262 | /* not technically a clock, but... */ |
1281 | /* not technically a clock, but... */ |
1263 | rdev->mode_info.firmware_flags = |
1282 | rdev->mode_info.firmware_flags = |
Line -... | Line 1283... | ||
- | 1283 | le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); |
|
- | 1284 | ||
- | 1285 | if (ASIC_IS_DCE8(rdev)) |
|
- | 1286 | rdev->clock.vco_freq = |
|
- | 1287 | le32_to_cpu(firmware_info->info_22.ulGPUPLL_OutputFreq); |
|
- | 1288 | else if (ASIC_IS_DCE5(rdev)) |
|
- | 1289 | rdev->clock.vco_freq = rdev->clock.current_dispclk; |
|
- | 1290 | else if (ASIC_IS_DCE41(rdev)) |
|
- | 1291 | radeon_atombios_get_dentist_vco_freq(rdev); |
|
- | 1292 | else |
|
- | 1293 | rdev->clock.vco_freq = rdev->clock.current_dispclk; |
|
- | 1294 | ||
- | 1295 | if (rdev->clock.vco_freq == 0) |
|
1264 | le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); |
1296 | rdev->clock.vco_freq = 360000; /* 3.6 GHz */ |
1265 | 1297 | ||
Line 1266... | Line 1298... | ||
1266 | return true; |
1298 | return true; |
1267 | } |
1299 | } |
Line 1268... | Line -... | ||
1268 | - | ||
1269 | return false; |
- | |
1270 | } |
- | |
1271 | - | ||
1272 | union igp_info { |
- | |
1273 | struct _ATOM_INTEGRATED_SYSTEM_INFO info; |
- | |
1274 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2; |
- | |
1275 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V6 info_6; |
- | |
1276 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7 info_7; |
1300 | |
1277 | struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8 info_8; |
1301 | return false; |
1278 | }; |
1302 | } |
1279 | 1303 | ||
1280 | bool radeon_atombios_sideport_present(struct radeon_device *rdev) |
1304 | bool radeon_atombios_sideport_present(struct radeon_device *rdev) |