|
|
|
@ -85,6 +85,18 @@ static struct radeon_i2c_bus_rec radeon_lookup_i2c_gpio(struct radeon_device *rd |
|
|
|
|
for (i = 0; i < num_indices; i++) { |
|
|
|
|
gpio = &i2c_info->asGPIO_Info[i]; |
|
|
|
|
|
|
|
|
|
/* r4xx mask is technically not used by the hw, so patch in the legacy mask bits */ |
|
|
|
|
if ((rdev->family == CHIP_R420) || |
|
|
|
|
(rdev->family == CHIP_R423) || |
|
|
|
|
(rdev->family == CHIP_RV410)) { |
|
|
|
|
if ((le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x0018) || |
|
|
|
|
(le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x0019) || |
|
|
|
|
(le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x001a)) { |
|
|
|
|
gpio->ucClkMaskShift = 0x19; |
|
|
|
|
gpio->ucDataMaskShift = 0x18; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* some evergreen boards have bad data for this entry */ |
|
|
|
|
if (ASIC_IS_DCE4(rdev)) { |
|
|
|
|
if ((i == 7) && |
|
|
|
@ -1996,14 +2008,14 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev) |
|
|
|
|
return state_index; |
|
|
|
|
/* last mode is usually default, array is low to high */ |
|
|
|
|
for (i = 0; i < num_modes; i++) { |
|
|
|
|
rdev->pm.power_state[state_index].clock_info = |
|
|
|
|
kzalloc(sizeof(struct radeon_pm_clock_info) * 1, GFP_KERNEL); |
|
|
|
|
if (!rdev->pm.power_state[state_index].clock_info) |
|
|
|
|
return state_index; |
|
|
|
|
rdev->pm.power_state[state_index].num_clock_modes = 1; |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].voltage.type = VOLTAGE_NONE; |
|
|
|
|
switch (frev) { |
|
|
|
|
case 1: |
|
|
|
|
rdev->pm.power_state[state_index].clock_info = |
|
|
|
|
kzalloc(sizeof(struct radeon_pm_clock_info) * 1, GFP_KERNEL); |
|
|
|
|
if (!rdev->pm.power_state[state_index].clock_info) |
|
|
|
|
return state_index; |
|
|
|
|
rdev->pm.power_state[state_index].num_clock_modes = 1; |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].mclk = |
|
|
|
|
le16_to_cpu(power_info->info.asPowerPlayInfo[i].usMemoryClock); |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].sclk = |
|
|
|
@ -2039,11 +2051,6 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev) |
|
|
|
|
state_index++; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
rdev->pm.power_state[state_index].clock_info = |
|
|
|
|
kzalloc(sizeof(struct radeon_pm_clock_info) * 1, GFP_KERNEL); |
|
|
|
|
if (!rdev->pm.power_state[state_index].clock_info) |
|
|
|
|
return state_index; |
|
|
|
|
rdev->pm.power_state[state_index].num_clock_modes = 1; |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].mclk = |
|
|
|
|
le32_to_cpu(power_info->info_2.asPowerPlayInfo[i].ulMemoryClock); |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].sclk = |
|
|
|
@ -2080,11 +2087,6 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev) |
|
|
|
|
state_index++; |
|
|
|
|
break; |
|
|
|
|
case 3: |
|
|
|
|
rdev->pm.power_state[state_index].clock_info = |
|
|
|
|
kzalloc(sizeof(struct radeon_pm_clock_info) * 1, GFP_KERNEL); |
|
|
|
|
if (!rdev->pm.power_state[state_index].clock_info) |
|
|
|
|
return state_index; |
|
|
|
|
rdev->pm.power_state[state_index].num_clock_modes = 1; |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].mclk = |
|
|
|
|
le32_to_cpu(power_info->info_3.asPowerPlayInfo[i].ulMemoryClock); |
|
|
|
|
rdev->pm.power_state[state_index].clock_info[0].sclk = |
|
|
|
|