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

drm/amd/display: cleaning up smu_if to add future flexibility

This commit cleans up code that uses old variables and adds some SMU
interfaces for future flexibility.

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

authored by

Martin Leung and committed by
Alex Deucher
80fb7a40 214d72f6

+78 -16
+9 -10
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr_smu_msg.c
··· 27 27 28 28 #include "clk_mgr_internal.h" 29 29 #include "reg_helper.h" 30 + #include "dalsmc.h" 31 + #include "smu13_driver_if.h" 30 32 31 33 #define mmDAL_MSG_REG 0x1628A 32 34 #define mmDAL_ARG_REG 0x16273 ··· 40 38 mm ## reg_name 41 39 42 40 #include "logger_types.h" 43 - #include "dalsmc.h" 44 - #include "smu13_driver_if.h" 45 41 46 42 #define smu_print(str, ...) {DC_LOG_SMU(str, ##__VA_ARGS__); } 47 43 ··· 100 100 DALSMC_MSG_SetFclkSwitchAllow, enable ? FCLK_PSTATE_SUPPORTED : FCLK_PSTATE_NOTSUPPORTED, NULL); 101 101 } 102 102 103 - void dcn32_smu_transfer_wm_table_dram_2_smu(struct clk_mgr_internal *clk_mgr) 104 - { 105 - smu_print("SMU Transfer WM table DRAM 2 SMU\n"); 106 - 107 - dcn32_smu_send_msg_with_param(clk_mgr, 108 - DALSMC_MSG_TransferTableDram2Smu, TABLE_WATERMARKS, NULL); 109 - } 110 - 111 103 void dcn32_smu_send_cab_for_uclk_message(struct clk_mgr_internal *clk_mgr, unsigned int num_ways) 112 104 { 113 105 smu_print("Numways for SubVP : %d\n", num_ways); ··· 107 115 dcn32_smu_send_msg_with_param(clk_mgr, DALSMC_MSG_SetCabForUclkPstate, num_ways, NULL); 108 116 } 109 117 118 + void dcn32_smu_transfer_wm_table_dram_2_smu(struct clk_mgr_internal *clk_mgr) 119 + { 120 + smu_print("SMU Transfer WM table DRAM 2 SMU\n"); 121 + 122 + dcn32_smu_send_msg_with_param(clk_mgr, 123 + DALSMC_MSG_TransferTableDram2Smu, TABLE_WATERMARKS, NULL); 124 + }
+2 -5
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr_smu_msg.h
··· 37 37 #define DALSMC_Result_OK 0x1 38 38 39 39 void 40 - dcn32_smu_send_fclk_pstate_message(struct clk_mgr_internal *clk_mgr, 41 - bool enable); 42 - 40 + dcn32_smu_send_fclk_pstate_message(struct clk_mgr_internal *clk_mgr, bool enable); 43 41 void dcn32_smu_transfer_wm_table_dram_2_smu(struct clk_mgr_internal *clk_mgr); 44 - 45 42 void dcn32_smu_send_cab_for_uclk_message(struct clk_mgr_internal *clk_mgr, unsigned int num_ways); 46 - 43 + void dcn32_smu_transfer_wm_table_dram_2_smu(struct clk_mgr_internal *clk_mgr); 47 44 48 45 #endif /* __DCN32_CLK_MGR_SMU_MSG_H_ */
+63
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_smu13_driver_if.h
··· 1 + // This is a stripped-down version of the smu13_driver_if.h file for the relevant DAL interfaces. 2 + 3 + #define SMU13_DRIVER_IF_VERSION 0x18 4 + 5 + //Only Clks that have DPM descriptors are listed here 6 + typedef enum { 7 + PPCLK_GFXCLK = 0, 8 + PPCLK_SOCCLK, 9 + PPCLK_UCLK, 10 + PPCLK_FCLK, 11 + PPCLK_DCLK_0, 12 + PPCLK_VCLK_0, 13 + PPCLK_DCLK_1, 14 + PPCLK_VCLK_1, 15 + PPCLK_DISPCLK, 16 + PPCLK_DPPCLK, 17 + PPCLK_DPREFCLK, 18 + PPCLK_DCFCLK, 19 + PPCLK_DTBCLK, 20 + PPCLK_COUNT, 21 + } PPCLK_e; 22 + 23 + typedef struct { 24 + uint8_t WmSetting; 25 + uint8_t Flags; 26 + uint8_t Padding[2]; 27 + 28 + } WatermarkRowGeneric_t; 29 + 30 + #define NUM_WM_RANGES 4 31 + 32 + typedef enum { 33 + WATERMARKS_CLOCK_RANGE = 0, 34 + WATERMARKS_DUMMY_PSTATE, 35 + WATERMARKS_MALL, 36 + WATERMARKS_COUNT, 37 + } WATERMARKS_FLAGS_e; 38 + 39 + typedef struct { 40 + // Watermarks 41 + WatermarkRowGeneric_t WatermarkRow[NUM_WM_RANGES]; 42 + } Watermarks_t; 43 + 44 + typedef struct { 45 + Watermarks_t Watermarks; 46 + uint32_t Spare[16]; 47 + 48 + uint32_t MmHubPadding[8]; // SMU internal use 49 + } WatermarksExternal_t; 50 + 51 + // Table types 52 + #define TABLE_PMFW_PPTABLE 0 53 + #define TABLE_COMBO_PPTABLE 1 54 + #define TABLE_WATERMARKS 2 55 + #define TABLE_AVFS_PSM_DEBUG 3 56 + #define TABLE_PMSTATUSLOG 4 57 + #define TABLE_SMU_METRICS 5 58 + #define TABLE_DRIVER_SMU_CONFIG 6 59 + #define TABLE_ACTIVITY_MONITOR_COEFF 7 60 + #define TABLE_OVERDRIVE 8 61 + #define TABLE_I2C_COMMANDS 9 62 + #define TABLE_DRIVER_INFO 10 63 + #define TABLE_COUNT 11
+4 -1
drivers/gpu/drm/amd/display/dmub/src/dmub_dcn32.c
··· 39 39 40 40 const struct dmub_srv_dcn32_regs dmub_srv_dcn32_regs = { 41 41 #define DMUB_SR(reg) REG_OFFSET_EXP(reg), 42 - { DMUB_DCN32_REGS() }, 42 + { 43 + DMUB_DCN32_REGS() 44 + DMCUB_INTERNAL_REGS() 45 + }, 43 46 #undef DMUB_SR 44 47 45 48 #define DMUB_SF(reg, field) FD_MASK(reg, field),