437,7 → 437,9 |
} |
|
/* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ |
if (((dev->pdev->device == 0x9802) || (dev->pdev->device == 0x9806)) && |
if (((dev->pdev->device == 0x9802) || |
(dev->pdev->device == 0x9805) || |
(dev->pdev->device == 0x9806)) && |
(dev->pdev->subsystem_vendor == 0x1734) && |
(dev->pdev->subsystem_device == 0x11bd)) { |
if (*connector_type == DRM_MODE_CONNECTOR_VGA) { |
448,14 → 450,6 |
} |
} |
|
/* Fujitsu D3003-S2 board lists DVI-I as DVI-I and VGA */ |
if ((dev->pdev->device == 0x9805) && |
(dev->pdev->subsystem_vendor == 0x1734) && |
(dev->pdev->subsystem_device == 0x11bd)) { |
if (*connector_type == DRM_MODE_CONNECTOR_VGA) |
return false; |
} |
|
return true; |
} |
|
1112,6 → 1106,31 |
ATOM_FIRMWARE_INFO_V2_2 info_22; |
}; |
|
union igp_info { |
struct _ATOM_INTEGRATED_SYSTEM_INFO info; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V6 info_6; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7 info_7; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8 info_8; |
}; |
|
static void radeon_atombios_get_dentist_vco_freq(struct radeon_device *rdev) |
{ |
struct radeon_mode_info *mode_info = &rdev->mode_info; |
int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo); |
union igp_info *igp_info; |
u8 frev, crev; |
u16 data_offset; |
|
if (atom_parse_data_header(mode_info->atom_context, index, NULL, |
&frev, &crev, &data_offset)) { |
igp_info = (union igp_info *)(mode_info->atom_context->bios + |
data_offset); |
rdev->clock.vco_freq = |
le32_to_cpu(igp_info->info_6.ulDentistVCOFreq); |
} |
} |
|
bool radeon_atom_get_clock_info(struct drm_device *dev) |
{ |
struct radeon_device *rdev = dev->dev_private; |
1263,6 → 1282,19 |
rdev->mode_info.firmware_flags = |
le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); |
|
if (ASIC_IS_DCE8(rdev)) |
rdev->clock.vco_freq = |
le32_to_cpu(firmware_info->info_22.ulGPUPLL_OutputFreq); |
else if (ASIC_IS_DCE5(rdev)) |
rdev->clock.vco_freq = rdev->clock.current_dispclk; |
else if (ASIC_IS_DCE41(rdev)) |
radeon_atombios_get_dentist_vco_freq(rdev); |
else |
rdev->clock.vco_freq = rdev->clock.current_dispclk; |
|
if (rdev->clock.vco_freq == 0) |
rdev->clock.vco_freq = 360000; /* 3.6 GHz */ |
|
return true; |
} |
|
1269,14 → 1301,6 |
return false; |
} |
|
union igp_info { |
struct _ATOM_INTEGRATED_SYSTEM_INFO info; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V6 info_6; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7 info_7; |
struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8 info_8; |
}; |
|
bool radeon_atombios_sideport_present(struct radeon_device *rdev) |
{ |
struct radeon_mode_info *mode_info = &rdev->mode_info; |