diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2013-06-07 11:41:05 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-06-26 16:11:36 -0400 |
commit | bc19f59704ac33ea31b4fceb9d16ebec26dc3dd9 (patch) | |
tree | a8252091840ed8d7f26a9e957bae7ef6d4390bf8 /drivers/gpu/drm/radeon/radeon_atombios.c | |
parent | 511502071471956e7aa3e05fb3840a46080be905 (diff) |
drm/radeon: update power state parsing for CI
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_atombios.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_atombios.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index cb3273b26d4d..88a55afae4c2 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | |||
@@ -1945,6 +1945,7 @@ union pplib_clock_info { | |||
1945 | struct _ATOM_PPLIB_EVERGREEN_CLOCK_INFO evergreen; | 1945 | struct _ATOM_PPLIB_EVERGREEN_CLOCK_INFO evergreen; |
1946 | struct _ATOM_PPLIB_SUMO_CLOCK_INFO sumo; | 1946 | struct _ATOM_PPLIB_SUMO_CLOCK_INFO sumo; |
1947 | struct _ATOM_PPLIB_SI_CLOCK_INFO si; | 1947 | struct _ATOM_PPLIB_SI_CLOCK_INFO si; |
1948 | struct _ATOM_PPLIB_CI_CLOCK_INFO ci; | ||
1948 | }; | 1949 | }; |
1949 | 1950 | ||
1950 | union pplib_power_state { | 1951 | union pplib_power_state { |
@@ -2353,6 +2354,15 @@ static bool radeon_atombios_parse_pplib_clock_info(struct radeon_device *rdev, | |||
2353 | sclk |= clock_info->rs780.ucLowEngineClockHigh << 16; | 2354 | sclk |= clock_info->rs780.ucLowEngineClockHigh << 16; |
2354 | rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; | 2355 | rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; |
2355 | } | 2356 | } |
2357 | } else if (rdev->family >= CHIP_BONAIRE) { | ||
2358 | sclk = le16_to_cpu(clock_info->ci.usEngineClockLow); | ||
2359 | sclk |= clock_info->ci.ucEngineClockHigh << 16; | ||
2360 | mclk = le16_to_cpu(clock_info->ci.usMemoryClockLow); | ||
2361 | mclk |= clock_info->ci.ucMemoryClockHigh << 16; | ||
2362 | rdev->pm.power_state[state_index].clock_info[mode_index].mclk = mclk; | ||
2363 | rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; | ||
2364 | rdev->pm.power_state[state_index].clock_info[mode_index].voltage.type = | ||
2365 | VOLTAGE_NONE; | ||
2356 | } else if (rdev->family >= CHIP_TAHITI) { | 2366 | } else if (rdev->family >= CHIP_TAHITI) { |
2357 | sclk = le16_to_cpu(clock_info->si.usEngineClockLow); | 2367 | sclk = le16_to_cpu(clock_info->si.usEngineClockLow); |
2358 | sclk |= clock_info->si.ucEngineClockHigh << 16; | 2368 | sclk |= clock_info->si.ucEngineClockHigh << 16; |