diff options
-rw-r--r-- | drivers/gpu/drm/radeon/kv_dpm.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/kv_dpm.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/kv_smc.c | 8 |
3 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/kv_dpm.c b/drivers/gpu/drm/radeon/kv_dpm.c index c87d1945a6f3..92bb998cc611 100644 --- a/drivers/gpu/drm/radeon/kv_dpm.c +++ b/drivers/gpu/drm/radeon/kv_dpm.c | |||
@@ -1214,6 +1214,12 @@ int kv_dpm_enable(struct radeon_device *rdev) | |||
1214 | radeon_irq_set(rdev); | 1214 | radeon_irq_set(rdev); |
1215 | } | 1215 | } |
1216 | 1216 | ||
1217 | ret = kv_smc_bapm_enable(rdev, false); | ||
1218 | if (ret) { | ||
1219 | DRM_ERROR("kv_smc_bapm_enable failed\n"); | ||
1220 | return ret; | ||
1221 | } | ||
1222 | |||
1217 | /* powerdown unused blocks for now */ | 1223 | /* powerdown unused blocks for now */ |
1218 | kv_dpm_powergate_acp(rdev, true); | 1224 | kv_dpm_powergate_acp(rdev, true); |
1219 | kv_dpm_powergate_samu(rdev, true); | 1225 | kv_dpm_powergate_samu(rdev, true); |
@@ -1237,6 +1243,8 @@ void kv_dpm_disable(struct radeon_device *rdev) | |||
1237 | RADEON_CG_BLOCK_BIF | | 1243 | RADEON_CG_BLOCK_BIF | |
1238 | RADEON_CG_BLOCK_HDP), false); | 1244 | RADEON_CG_BLOCK_HDP), false); |
1239 | 1245 | ||
1246 | kv_smc_bapm_enable(rdev, false); | ||
1247 | |||
1240 | /* powerup blocks */ | 1248 | /* powerup blocks */ |
1241 | kv_dpm_powergate_acp(rdev, false); | 1249 | kv_dpm_powergate_acp(rdev, false); |
1242 | kv_dpm_powergate_samu(rdev, false); | 1250 | kv_dpm_powergate_samu(rdev, false); |
diff --git a/drivers/gpu/drm/radeon/kv_dpm.h b/drivers/gpu/drm/radeon/kv_dpm.h index 32bb079572d7..8cef7525d7a8 100644 --- a/drivers/gpu/drm/radeon/kv_dpm.h +++ b/drivers/gpu/drm/radeon/kv_dpm.h | |||
@@ -192,6 +192,7 @@ int kv_send_msg_to_smc_with_parameter(struct radeon_device *rdev, | |||
192 | int kv_read_smc_sram_dword(struct radeon_device *rdev, u32 smc_address, | 192 | int kv_read_smc_sram_dword(struct radeon_device *rdev, u32 smc_address, |
193 | u32 *value, u32 limit); | 193 | u32 *value, u32 limit); |
194 | int kv_smc_dpm_enable(struct radeon_device *rdev, bool enable); | 194 | int kv_smc_dpm_enable(struct radeon_device *rdev, bool enable); |
195 | int kv_smc_bapm_enable(struct radeon_device *rdev, bool enable); | ||
195 | int kv_copy_bytes_to_smc(struct radeon_device *rdev, | 196 | int kv_copy_bytes_to_smc(struct radeon_device *rdev, |
196 | u32 smc_start_address, | 197 | u32 smc_start_address, |
197 | const u8 *src, u32 byte_count, u32 limit); | 198 | const u8 *src, u32 byte_count, u32 limit); |
diff --git a/drivers/gpu/drm/radeon/kv_smc.c b/drivers/gpu/drm/radeon/kv_smc.c index 34a226d7e34a..0000b59a6d05 100644 --- a/drivers/gpu/drm/radeon/kv_smc.c +++ b/drivers/gpu/drm/radeon/kv_smc.c | |||
@@ -107,6 +107,14 @@ int kv_smc_dpm_enable(struct radeon_device *rdev, bool enable) | |||
107 | return kv_notify_message_to_smu(rdev, PPSMC_MSG_DPM_Disable); | 107 | return kv_notify_message_to_smu(rdev, PPSMC_MSG_DPM_Disable); |
108 | } | 108 | } |
109 | 109 | ||
110 | int kv_smc_bapm_enable(struct radeon_device *rdev, bool enable) | ||
111 | { | ||
112 | if (enable) | ||
113 | return kv_notify_message_to_smu(rdev, PPSMC_MSG_EnableBAPM); | ||
114 | else | ||
115 | return kv_notify_message_to_smu(rdev, PPSMC_MSG_DisableBAPM); | ||
116 | } | ||
117 | |||
110 | int kv_copy_bytes_to_smc(struct radeon_device *rdev, | 118 | int kv_copy_bytes_to_smc(struct radeon_device *rdev, |
111 | u32 smc_start_address, | 119 | u32 smc_start_address, |
112 | const u8 *src, u32 byte_count, u32 limit) | 120 | const u8 *src, u32 byte_count, u32 limit) |