Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: add query to fetch the max engine clock (v2)

This is needed for reporting the max GPU engine clock
in OpenCL. This just reports the max possible engine
clock, it does not take into account current conditions
that may limit that clock.

v2: fix query number for merge with 3.13

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+15 -8
+7
drivers/gpu/drm/radeon/radeon_kms.c
··· 470 470 DRM_DEBUG_KMS("BACKEND_ENABLED_MASK is si+ only!\n"); 471 471 } 472 472 break; 473 + case RADEON_INFO_MAX_SCLK: 474 + if ((rdev->pm.pm_method == PM_METHOD_DPM) && 475 + rdev->pm.dpm_enabled) 476 + *value = rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.sclk * 10; 477 + else 478 + *value = rdev->pm.default_sclk * 10; 479 + break; 473 480 default: 474 481 DRM_DEBUG_KMS("Invalid request %d\n", info->request); 475 482 return -EINVAL;
+6 -8
drivers/gpu/drm/radeon/rv770_dpm.c
··· 2251 2251 pl->vddci = vddci; 2252 2252 } 2253 2253 2254 - if (rdev->family >= CHIP_BARTS) { 2255 - if ((rps->class & ATOM_PPLIB_CLASSIFICATION_UI_MASK) == 2256 - ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE) { 2257 - rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.sclk = pl->sclk; 2258 - rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.mclk = pl->mclk; 2259 - rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.vddc = pl->vddc; 2260 - rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.vddci = pl->vddci; 2261 - } 2254 + if ((rps->class & ATOM_PPLIB_CLASSIFICATION_UI_MASK) == 2255 + ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE) { 2256 + rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.sclk = pl->sclk; 2257 + rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.mclk = pl->mclk; 2258 + rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.vddc = pl->vddc; 2259 + rdev->pm.dpm.dyn_state.max_clock_voltage_on_ac.vddci = pl->vddci; 2262 2260 } 2263 2261 } 2264 2262
+2
include/uapi/drm/radeon_drm.h
··· 985 985 #define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY 0x18 986 986 /* query the number of render backends */ 987 987 #define RADEON_INFO_SI_BACKEND_ENABLED_MASK 0x19 988 + /* max engine clock - needed for OpenCL */ 989 + #define RADEON_INFO_MAX_SCLK 0x1a 988 990 989 991 990 992 struct drm_radeon_info {