|
@@ -4038,6 +4038,7 @@ static int ni_parse_power_table(struct radeon_device *rdev)
|
|
|
(power_state->v1.ucNonClockStateIndex *
|
|
|
power_info->pplib.ucNonClockSize));
|
|
|
if (power_info->pplib.ucStateEntrySize - 1) {
|
|
|
+ u8 *idx;
|
|
|
ps = kzalloc(sizeof(struct ni_ps), GFP_KERNEL);
|
|
|
if (ps == NULL) {
|
|
|
kfree(rdev->pm.dpm.ps);
|
|
@@ -4047,12 +4048,12 @@ static int ni_parse_power_table(struct radeon_device *rdev)
|
|
|
ni_parse_pplib_non_clock_info(rdev, &rdev->pm.dpm.ps[i],
|
|
|
non_clock_info,
|
|
|
power_info->pplib.ucNonClockSize);
|
|
|
+ idx = (u8 *)&power_state->v1.ucClockStateIndices[0];
|
|
|
for (j = 0; j < (power_info->pplib.ucStateEntrySize - 1); j++) {
|
|
|
clock_info = (union pplib_clock_info *)
|
|
|
(mode_info->atom_context->bios + data_offset +
|
|
|
le16_to_cpu(power_info->pplib.usClockInfoArrayOffset) +
|
|
|
- (power_state->v1.ucClockStateIndices[j] *
|
|
|
- power_info->pplib.ucClockInfoSize));
|
|
|
+ (idx[j] * power_info->pplib.ucClockInfoSize));
|
|
|
ni_parse_pplib_clock_info(rdev,
|
|
|
&rdev->pm.dpm.ps[i], j,
|
|
|
clock_info);
|