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

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/display: fix some non-initialized register mask and setting

[why]
fix some non-initialized register mask and update golden setting

Reviewed-by: Duncan Ma <duncan.ma@amd.com>
Acked-by: Stylon Wang <stylon.wang@amd.com>
Signed-off-by: Charlene Liu <charlene.liu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Charlene Liu and committed by
Alex Deucher
a6db1993 c06ef68a

+65 -18
+42 -14
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
··· 53 53 #define mmCLK1_CLK3_DFS_CNTL 0x16E72 54 54 #define mmCLK1_CLK4_DFS_CNTL 0x16E75 55 55 56 + #define mmCLK1_CLK0_CURRENT_CNT 0x16EE7 57 + #define mmCLK1_CLK1_CURRENT_CNT 0x16EE8 58 + #define mmCLK1_CLK2_CURRENT_CNT 0x16EE9 59 + #define mmCLK1_CLK3_CURRENT_CNT 0x16EEA 60 + #define mmCLK1_CLK4_CURRENT_CNT 0x16EEB 61 + 62 + #define mmCLK4_CLK0_CURRENT_CNT 0x1B0C9 63 + 56 64 #define CLK1_CLK_PLL_REQ__FbMult_int_MASK 0x000001ffUL 57 65 #define CLK1_CLK_PLL_REQ__PllSpineDiv_MASK 0x0000f000UL 58 66 #define CLK1_CLK_PLL_REQ__FbMult_frac_MASK 0xffff0000UL ··· 460 452 461 453 static void dcn32_auto_dpm_test_log(struct dc_clocks *new_clocks, struct clk_mgr_internal *clk_mgr) 462 454 { 455 + unsigned int dispclk_khz_reg = REG_READ(CLK1_CLK0_CURRENT_CNT); // DISPCLK 456 + unsigned int dppclk_khz_reg = REG_READ(CLK1_CLK1_CURRENT_CNT); // DPPCLK 457 + unsigned int dprefclk_khz_reg = REG_READ(CLK1_CLK2_CURRENT_CNT); // DPREFCLK 458 + unsigned int dcfclk_khz_reg = REG_READ(CLK1_CLK3_CURRENT_CNT); // DCFCLK 459 + unsigned int dtbclk_khz_reg = REG_READ(CLK1_CLK4_CURRENT_CNT); // DTBCLK 460 + unsigned int fclk_khz_reg = REG_READ(CLK4_CLK0_CURRENT_CNT); // FCLK 461 + 462 + // Overrides for these clocks in case there is no p_state change support 463 + int dramclk_khz_override = new_clocks->dramclk_khz; 464 + int fclk_khz_override = new_clocks->fclk_khz; 465 + 466 + int num_fclk_levels = clk_mgr->base.bw_params->clk_table.num_entries_per_clk.num_fclk_levels - 1; 467 + 468 + if (!new_clocks->p_state_change_support) { 469 + dramclk_khz_override = clk_mgr->base.bw_params->max_memclk_mhz * 1000; 470 + } 471 + if (!new_clocks->fclk_p_state_change_support) { 472 + fclk_khz_override = clk_mgr->base.bw_params->clk_table.entries[num_fclk_levels].fclk_mhz * 1000; 473 + } 474 + 463 475 //////////////////////////////////////////////////////////////////////////// 464 476 // IMPORTANT: When adding more clocks to these logs, do NOT put a newline 465 477 // anywhere other than at the very end of the string. ··· 494 466 new_clocks->dcfclk_khz > 0 && 495 467 new_clocks->dppclk_khz > 0) { 496 468 497 - if (new_clocks->p_state_change_support) { 498 - DC_LOG_AUTO_DPM_TEST("AutoDPMTest: dramclk_khz:%d - fclk_khz:%d - " 499 - "dcfclk_khz:%d - dppclk_khz:%d\n", 500 - new_clocks->dramclk_khz, 501 - new_clocks->fclk_khz, 502 - new_clocks->dcfclk_khz, 503 - new_clocks->dppclk_khz); 504 - } else { 505 - DC_LOG_AUTO_DPM_TEST("AutoDPMTest: dramclk_khz:1249000 - fclk_khz:%d - " 506 - "dcfclk_khz:%d - dppclk_khz:%d\n", 507 - new_clocks->fclk_khz, 508 - new_clocks->dcfclk_khz, 509 - new_clocks->dppclk_khz); 510 - } 469 + DC_LOG_AUTO_DPM_TEST("AutoDPMTest: dramclk:%d - fclk:%d - " 470 + "dcfclk:%d - dppclk:%d - dispclk_hw:%d - " 471 + "dppclk_hw:%d - dprefclk_hw:%d - dcfclk_hw:%d - " 472 + "dtbclk_hw:%d - fclk_hw:%d\n", 473 + dramclk_khz_override, 474 + fclk_khz_override, 475 + new_clocks->dcfclk_khz, 476 + new_clocks->dppclk_khz, 477 + dispclk_khz_reg, 478 + dppclk_khz_reg, 479 + dprefclk_khz_reg, 480 + dcfclk_khz_reg, 481 + dtbclk_khz_reg, 482 + fclk_khz_reg); 511 483 } 512 484 } 513 485
+4 -1
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.h
··· 577 577 type DIG_FIFO_READ_START_LEVEL;\ 578 578 type DIG_FIFO_ENABLE;\ 579 579 type DIG_FIFO_RESET;\ 580 - type DIG_FIFO_RESET_DONE 580 + type DIG_FIFO_RESET_DONE;\ 581 + type PIXEL_ENCODING_TYPE;\ 582 + type UNCOMPRESSED_PIXEL_FORMAT;\ 583 + type UNCOMPRESSED_COMPONENT_DEPTH 581 584 582 585 #define SE_REG_FIELD_LIST_DCN3_5_COMMON(type) \ 583 586 type DIG_FE_CLK_EN;\
+4 -2
drivers/gpu/drm/amd/display/dc/inc/hw/clk_mgr.h
··· 45 45 46 46 struct dcn3_clk_internal { 47 47 int dummy; 48 - /*TODO: 48 + // TODO: 49 49 uint32_t CLK1_CLK0_CURRENT_CNT; //dispclk 50 50 uint32_t CLK1_CLK1_CURRENT_CNT; //dppclk 51 51 uint32_t CLK1_CLK2_CURRENT_CNT; //dprefclk 52 52 uint32_t CLK1_CLK3_CURRENT_CNT; //dcfclk 53 + uint32_t CLK1_CLK4_CURRENT_CNT; 53 54 uint32_t CLK1_CLK3_DS_CNTL; //dcf_deep_sleep_divider 54 55 uint32_t CLK1_CLK3_ALLOW_DS; //dcf_deep_sleep_allow 55 56 ··· 58 57 uint32_t CLK1_CLK1_BYPASS_CNTL; //dppclk bypass 59 58 uint32_t CLK1_CLK2_BYPASS_CNTL; //dprefclk bypass 60 59 uint32_t CLK1_CLK3_BYPASS_CNTL; //dcfclk bypass 61 - */ 60 + 61 + uint32_t CLK4_CLK0_CURRENT_CNT; //fclk 62 62 }; 63 63 64 64 struct dcn301_clk_internal {
+15 -1
drivers/gpu/drm/amd/display/dc/inc/hw/clk_mgr_internal.h
··· 163 163 CLK_SR_DCN32(CLK1_CLK1_DFS_CNTL), \ 164 164 CLK_SR_DCN32(CLK1_CLK2_DFS_CNTL), \ 165 165 CLK_SR_DCN32(CLK1_CLK3_DFS_CNTL), \ 166 - CLK_SR_DCN32(CLK1_CLK4_DFS_CNTL) 166 + CLK_SR_DCN32(CLK1_CLK4_DFS_CNTL), \ 167 + CLK_SR_DCN32(CLK1_CLK0_CURRENT_CNT), \ 168 + CLK_SR_DCN32(CLK1_CLK1_CURRENT_CNT), \ 169 + CLK_SR_DCN32(CLK1_CLK2_CURRENT_CNT), \ 170 + CLK_SR_DCN32(CLK1_CLK3_CURRENT_CNT), \ 171 + CLK_SR_DCN32(CLK1_CLK4_CURRENT_CNT), \ 172 + CLK_SR_DCN32(CLK4_CLK0_CURRENT_CNT) 167 173 168 174 #define CLK_COMMON_MASK_SH_LIST_DCN32(mask_sh) \ 169 175 CLK_COMMON_MASK_SH_LIST_DCN20_BASE(mask_sh),\ ··· 228 222 uint32_t CLK4_CLK2_CURRENT_CNT; 229 223 uint32_t CLK4_CLK_PLL_REQ; 230 224 225 + uint32_t CLK4_CLK0_CURRENT_CNT; 226 + 231 227 uint32_t CLK3_CLK2_DFS_CNTL; 232 228 uint32_t CLK3_CLK_PLL_REQ; 233 229 ··· 242 234 uint32_t CLK1_CLK2_DFS_CNTL; 243 235 uint32_t CLK1_CLK3_DFS_CNTL; 244 236 uint32_t CLK1_CLK4_DFS_CNTL; 237 + 238 + uint32_t CLK1_CLK0_CURRENT_CNT; 239 + uint32_t CLK1_CLK1_CURRENT_CNT; 240 + uint32_t CLK1_CLK2_CURRENT_CNT; 241 + uint32_t CLK1_CLK3_CURRENT_CNT; 242 + uint32_t CLK1_CLK4_CURRENT_CNT; 245 243 246 244 uint32_t CLK0_CLK0_DFS_CNTL; 247 245 uint32_t CLK0_CLK1_DFS_CNTL;