diff options
Diffstat (limited to 'drivers/gpu/drm/amd/include')
7 files changed, 567 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h index 7f98394338c2..1dc5dd9b7bf7 100644 --- a/drivers/gpu/drm/amd/include/amd_shared.h +++ b/drivers/gpu/drm/amd/include/amd_shared.h @@ -244,7 +244,6 @@ enum DC_FEATURE_MASK {  	DC_DISABLE_LTTPR_DP2_0 = (1 << 6), //0x40, disabled by default  	DC_PSR_ALLOW_SMU_OPT = (1 << 7), //0x80, disabled by default  	DC_PSR_ALLOW_MULTI_DISP_OPT = (1 << 8), //0x100, disabled by default -	DC_REPLAY_MASK = (1 << 9), //0x200, disabled by default for dcn < 3.1.4  };  enum DC_DEBUG_MASK { @@ -255,8 +254,10 @@ enum DC_DEBUG_MASK {  	DC_DISABLE_PSR = 0x10,  	DC_FORCE_SUBVP_MCLK_SWITCH = 0x20,  	DC_DISABLE_MPO = 0x40, -	DC_DISABLE_REPLAY = 0x50,  	DC_ENABLE_DPIA_TRACE = 0x80, +	DC_ENABLE_DML2 = 0x100, +	DC_DISABLE_PSR_SU = 0x200, +	DC_DISABLE_REPLAY = 0x400,  };  enum amd_dpm_forced_level; diff --git a/drivers/gpu/drm/amd/include/amdgpu_reg_state.h b/drivers/gpu/drm/amd/include/amdgpu_reg_state.h new file mode 100644 index 000000000000..be519c8edf49 --- /dev/null +++ b/drivers/gpu/drm/amd/include/amdgpu_reg_state.h @@ -0,0 +1,153 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright 2023 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef __AMDGPU_REG_STATE_H__ +#define __AMDGPU_REG_STATE_H__ + +enum amdgpu_reg_state { +	AMDGPU_REG_STATE_TYPE_INVALID	= 0, +	AMDGPU_REG_STATE_TYPE_XGMI	= 1, +	AMDGPU_REG_STATE_TYPE_WAFL	= 2, +	AMDGPU_REG_STATE_TYPE_PCIE	= 3, +	AMDGPU_REG_STATE_TYPE_USR	= 4, +	AMDGPU_REG_STATE_TYPE_USR_1	= 5 +}; + +enum amdgpu_sysfs_reg_offset { +	AMDGPU_SYS_REG_STATE_XGMI	= 0x0000, +	AMDGPU_SYS_REG_STATE_WAFL	= 0x1000, +	AMDGPU_SYS_REG_STATE_PCIE	= 0x2000, +	AMDGPU_SYS_REG_STATE_USR	= 0x3000, +	AMDGPU_SYS_REG_STATE_USR_1	= 0x4000, +	AMDGPU_SYS_REG_STATE_END	= 0x5000, +}; + +struct amdgpu_reg_state_header { +	uint16_t		structure_size; +	uint8_t			format_revision; +	uint8_t			content_revision; +	uint8_t			state_type; +	uint8_t			num_instances; +	uint16_t		pad; +}; + +enum amdgpu_reg_inst_state { +	AMDGPU_INST_S_OK, +	AMDGPU_INST_S_EDISABLED, +	AMDGPU_INST_S_EACCESS, +}; + +struct amdgpu_smn_reg_data { +	uint64_t addr; +	uint32_t value; +	uint32_t pad; +}; + +struct amdgpu_reg_inst_header { +	uint16_t	instance; +	uint16_t	state; +	uint16_t	num_smn_regs; +	uint16_t	pad; +}; + + +struct amdgpu_regs_xgmi_v1_0 { +	struct amdgpu_reg_inst_header	inst_header; + +	struct amdgpu_smn_reg_data	smn_reg_values[]; +}; + +struct amdgpu_reg_state_xgmi_v1_0 { +	/* common_header.state_type must be AMDGPU_REG_STATE_TYPE_XGMI */ +	struct amdgpu_reg_state_header	common_header; + +	struct amdgpu_regs_xgmi_v1_0	xgmi_state_regs[]; +}; + +struct amdgpu_regs_wafl_v1_0 { +	struct amdgpu_reg_inst_header	inst_header; + +	struct amdgpu_smn_reg_data	smn_reg_values[]; +}; + +struct amdgpu_reg_state_wafl_v1_0 { +	/* common_header.state_type must be AMDGPU_REG_STATE_TYPE_WAFL */ +	struct amdgpu_reg_state_header	common_header; + +	struct amdgpu_regs_wafl_v1_0	wafl_state_regs[]; +}; + +struct amdgpu_regs_pcie_v1_0 { +	struct amdgpu_reg_inst_header	inst_header; + +	uint16_t			device_status; +	uint16_t			link_status; +	uint32_t			sub_bus_number_latency; +	uint32_t			pcie_corr_err_status; +	uint32_t			pcie_uncorr_err_status; + +	struct amdgpu_smn_reg_data	smn_reg_values[]; +}; + +struct amdgpu_reg_state_pcie_v1_0 { +	/* common_header.state_type must be AMDGPU_REG_STATE_TYPE_PCIE */ +	struct amdgpu_reg_state_header	common_header; + +	struct amdgpu_regs_pcie_v1_0	pci_state_regs[]; +}; + +struct amdgpu_regs_usr_v1_0 { +	struct amdgpu_reg_inst_header	inst_header; + +	struct amdgpu_smn_reg_data	smn_reg_values[]; +}; + +struct amdgpu_reg_state_usr_v1_0 { +	/* common_header.state_type must be AMDGPU_REG_STATE_TYPE_USR */ +	struct amdgpu_reg_state_header	common_header; + +	struct amdgpu_regs_usr_v1_0	usr_state_regs[]; +}; + +static inline size_t amdgpu_reginst_size(uint16_t num_inst, size_t inst_size, +					 uint16_t num_regs) +{ +	return num_inst * +	       (inst_size + num_regs * sizeof(struct amdgpu_smn_reg_data)); +} + +#define amdgpu_asic_get_reg_state_supported(adev) \ +	((adev)->asic_funcs->get_reg_state ? 1 : 0) + +#define amdgpu_asic_get_reg_state(adev, state, buf, size)                  \ +	((adev)->asic_funcs->get_reg_state ?                               \ +		 (adev)->asic_funcs->get_reg_state((adev), (state), (buf), \ +						   (size)) :               \ +		 0) + + +int amdgpu_reg_state_sysfs_init(struct amdgpu_device *adev); +void amdgpu_reg_state_sysfs_fini(struct amdgpu_device *adev); + +#endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_5_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_5_0_sh_mask.h index b64664879211..fca72e2ec929 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_5_0_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_5_0_sh_mask.h @@ -6220,12 +6220,20 @@  #define DCCG_GATE_DISABLE_CNTL4__PHYD_REFCLK_ROOT_GATE_DISABLE__SHIFT                                         0x3  #define DCCG_GATE_DISABLE_CNTL4__PHYE_REFCLK_ROOT_GATE_DISABLE__SHIFT                                         0x4  #define DCCG_GATE_DISABLE_CNTL4__HDMICHARCLK0_ROOT_GATE_DISABLE__SHIFT                                        0x11 +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK0_GATE_DISABLE__SHIFT                                              0x17 +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK1_GATE_DISABLE__SHIFT                                              0x18 +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK2_GATE_DISABLE__SHIFT                                              0x19 +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK3_GATE_DISABLE__SHIFT                                              0x1a  #define DCCG_GATE_DISABLE_CNTL4__PHYA_REFCLK_ROOT_GATE_DISABLE_MASK                                           0x00000001L  #define DCCG_GATE_DISABLE_CNTL4__PHYB_REFCLK_ROOT_GATE_DISABLE_MASK                                           0x00000002L  #define DCCG_GATE_DISABLE_CNTL4__PHYC_REFCLK_ROOT_GATE_DISABLE_MASK                                           0x00000004L  #define DCCG_GATE_DISABLE_CNTL4__PHYD_REFCLK_ROOT_GATE_DISABLE_MASK                                           0x00000008L  #define DCCG_GATE_DISABLE_CNTL4__PHYE_REFCLK_ROOT_GATE_DISABLE_MASK                                           0x00000010L  #define DCCG_GATE_DISABLE_CNTL4__HDMICHARCLK0_ROOT_GATE_DISABLE_MASK                                          0x00020000L +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK0_GATE_DISABLE_MASK                                                0x00800000L +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK1_GATE_DISABLE_MASK                                                0x01000000L +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK2_GATE_DISABLE_MASK                                                0x02000000L +#define DCCG_GATE_DISABLE_CNTL4__DPIASYMCLK3_GATE_DISABLE_MASK                                                0x04000000L  #define DPSTREAMCLK_CNTL__DPSTREAMCLK0_SRC_SEL__SHIFT                                                         0x0  #define DPSTREAMCLK_CNTL__DPSTREAMCLK0_EN__SHIFT                                                              0x3  #define DPSTREAMCLK_CNTL__DPSTREAMCLK1_SRC_SEL__SHIFT                                                         0x4 diff --git a/drivers/gpu/drm/amd/include/asic_reg/smuio/smuio_10_0_2_offset.h b/drivers/gpu/drm/amd/include/asic_reg/smuio/smuio_10_0_2_offset.h new file mode 100644 index 000000000000..a4dd372c0541 --- /dev/null +++ b/drivers/gpu/drm/amd/include/asic_reg/smuio/smuio_10_0_2_offset.h @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2023  Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef _smuio_10_0_2_OFFSET_HEADER + +// addressBlock: smuio_smuio_misc_SmuSmuioDec +// base address: 0x5a000 +#define mmSMUIO_MCM_CONFIG                                                                             0x0023 +#define mmSMUIO_MCM_CONFIG_BASE_IDX                                                                    0 +#define mmIP_DISCOVERY_VERSION                                                                         0x0000 +#define mmIP_DISCOVERY_VERSION_BASE_IDX                                                                1 +#define mmIO_SMUIO_PINSTRAP                                                                            0x01b1 +#define mmIO_SMUIO_PINSTRAP_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER0                                                                            0x01b2 +#define mmSCRATCH_REGISTER0_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER1                                                                            0x01b3 +#define mmSCRATCH_REGISTER1_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER2                                                                            0x01b4 +#define mmSCRATCH_REGISTER2_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER3                                                                            0x01b5 +#define mmSCRATCH_REGISTER3_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER4                                                                            0x01b6 +#define mmSCRATCH_REGISTER4_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER5                                                                            0x01b7 +#define mmSCRATCH_REGISTER5_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER6                                                                            0x01b8 +#define mmSCRATCH_REGISTER6_BASE_IDX                                                                   1 +#define mmSCRATCH_REGISTER7                                                                            0x01b9 +#define mmSCRATCH_REGISTER7_BASE_IDX                                                                   1 + + +// addressBlock: smuio_smuio_reset_SmuSmuioDec +// base address: 0x5a300 +#define mmSMUIO_MP_RESET_INTR                                                                          0x00c1 +#define mmSMUIO_MP_RESET_INTR_BASE_IDX                                                                 0 +#define mmSMUIO_SOC_HALT                                                                               0x00c2 +#define mmSMUIO_SOC_HALT_BASE_IDX                                                                      0 +#define mmSMUIO_GFX_MISC_CNTL                                                                          0x00c8 +#define mmSMUIO_GFX_MISC_CNTL_BASE_IDX                                                                 0 + + +// addressBlock: smuio_smuio_ccxctrl_SmuSmuioDec +// base address: 0x5a000 +#define mmPWROK_REFCLK_GAP_CYCLES                                                                      0x0001 +#define mmPWROK_REFCLK_GAP_CYCLES_BASE_IDX                                                             1 +#define mmGOLDEN_TSC_INCREMENT_UPPER                                                                   0x0004 +#define mmGOLDEN_TSC_INCREMENT_UPPER_BASE_IDX                                                          1 +#define mmGOLDEN_TSC_INCREMENT_LOWER                                                                   0x0005 +#define mmGOLDEN_TSC_INCREMENT_LOWER_BASE_IDX                                                          1 +#define mmGOLDEN_TSC_COUNT_UPPER                                                                       0x0025 +#define mmGOLDEN_TSC_COUNT_UPPER_BASE_IDX                                                              1 +#define mmGOLDEN_TSC_COUNT_LOWER                                                                       0x0026 +#define mmGOLDEN_TSC_COUNT_LOWER_BASE_IDX                                                              1 +#define mmGFX_GOLDEN_TSC_SHADOW_UPPER                                                                  0x0029 +#define mmGFX_GOLDEN_TSC_SHADOW_UPPER_BASE_IDX                                                         1 +#define mmGFX_GOLDEN_TSC_SHADOW_LOWER                                                                  0x002a +#define mmGFX_GOLDEN_TSC_SHADOW_LOWER_BASE_IDX                                                         1 +#define mmSOC_GOLDEN_TSC_SHADOW_UPPER                                                                  0x002b +#define mmSOC_GOLDEN_TSC_SHADOW_UPPER_BASE_IDX                                                         1 +#define mmSOC_GOLDEN_TSC_SHADOW_LOWER                                                                  0x002c +#define mmSOC_GOLDEN_TSC_SHADOW_LOWER_BASE_IDX                                                         1 +#define mmSOC_GAP_PWROK                                                                                0x002d +#define mmSOC_GAP_PWROK_BASE_IDX                                                                       1 + +// addressBlock: smuio_smuio_swtimer_SmuSmuioDec +// base address: 0x5ac40 +#define mmPWR_VIRT_RESET_REQ                                                                           0x0110 +#define mmPWR_VIRT_RESET_REQ_BASE_IDX                                                                  1 +#define mmPWR_DISP_TIMER_CONTROL                                                                       0x0111 +#define mmPWR_DISP_TIMER_CONTROL_BASE_IDX                                                              1 +#define mmPWR_DISP_TIMER2_CONTROL                                                                      0x0113 +#define mmPWR_DISP_TIMER2_CONTROL_BASE_IDX                                                             1 +#define mmPWR_DISP_TIMER_GLOBAL_CONTROL                                                                0x0115 +#define mmPWR_DISP_TIMER_GLOBAL_CONTROL_BASE_IDX                                                       1 +#define mmPWR_IH_CONTROL                                                                               0x0116 +#define mmPWR_IH_CONTROL_BASE_IDX                                                                      1 + +// addressBlock: smuio_smuio_svi0_SmuSmuioDec +// base address: 0x6f000 +#define mmSMUSVI0_TEL_PLANE0                                                                           0x520e +#define mmSMUSVI0_TEL_PLANE0_BASE_IDX                                                                  1 +#define mmSMUSVI0_PLANE0_CURRENTVID                                                                    0x5217 +#define mmSMUSVI0_PLANE0_CURRENTVID_BASE_IDX                                                           1 + +#endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/smuio/smuio_10_0_2_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/smuio/smuio_10_0_2_sh_mask.h new file mode 100644 index 000000000000..d10ae61c346b --- /dev/null +++ b/drivers/gpu/drm/amd/include/asic_reg/smuio/smuio_10_0_2_sh_mask.h @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2023  Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef _smuio_10_0_2_SH_MASK_HEADER + +// addressBlock: smuio_smuio_misc_SmuSmuioDec +//SMUIO_MCM_CONFIG +#define SMUIO_MCM_CONFIG__DIE_ID__SHIFT                                                                       0x0 +#define SMUIO_MCM_CONFIG__PKG_TYPE__SHIFT                                                                     0x2 +#define SMUIO_MCM_CONFIG__SOCKET_ID__SHIFT                                                                    0x5 +#define SMUIO_MCM_CONFIG__PKG_SUBTYPE__SHIFT                                                                  0x6 +#define SMUIO_MCM_CONFIG__CONSOLE_K__SHIFT                                                                    0x10 +#define SMUIO_MCM_CONFIG__CONSOLE_A__SHIFT                                                                    0x11 +#define SMUIO_MCM_CONFIG__DIE_ID_MASK                                                                         0x00000003L +#define SMUIO_MCM_CONFIG__PKG_TYPE_MASK                                                                       0x0000001CL +#define SMUIO_MCM_CONFIG__SOCKET_ID_MASK                                                                      0x00000020L +#define SMUIO_MCM_CONFIG__PKG_SUBTYPE_MASK                                                                    0x000000C0L +#define SMUIO_MCM_CONFIG__CONSOLE_K_MASK                                                                      0x00010000L +#define SMUIO_MCM_CONFIG__CONSOLE_A_MASK                                                                      0x00020000L +//IP_DISCOVERY_VERSION +#define IP_DISCOVERY_VERSION__IP_DISCOVERY_VERSION__SHIFT                                                     0x0 +#define IP_DISCOVERY_VERSION__IP_DISCOVERY_VERSION_MASK                                                       0xFFFFFFFFL +//IO_SMUIO_PINSTRAP +#define IO_SMUIO_PINSTRAP__AUD_PORT_CONN__SHIFT                                                               0x0 +#define IO_SMUIO_PINSTRAP__AUD__SHIFT                                                                         0x3 +#define IO_SMUIO_PINSTRAP__AUD_PORT_CONN_MASK                                                                 0x00000007L +#define IO_SMUIO_PINSTRAP__AUD_MASK                                                                           0x00000018L +//SCRATCH_REGISTER0 +#define SCRATCH_REGISTER0__ScratchPad0__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER0__ScratchPad0_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER1 +#define SCRATCH_REGISTER1__ScratchPad1__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER1__ScratchPad1_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER2 +#define SCRATCH_REGISTER2__ScratchPad2__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER2__ScratchPad2_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER3 +#define SCRATCH_REGISTER3__ScratchPad3__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER3__ScratchPad3_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER4 +#define SCRATCH_REGISTER4__ScratchPad4__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER4__ScratchPad4_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER5 +#define SCRATCH_REGISTER5__ScratchPad5__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER5__ScratchPad5_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER6 +#define SCRATCH_REGISTER6__ScratchPad6__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER6__ScratchPad6_MASK                                                                   0xFFFFFFFFL +//SCRATCH_REGISTER7 +#define SCRATCH_REGISTER7__ScratchPad7__SHIFT                                                                 0x0 +#define SCRATCH_REGISTER7__ScratchPad7_MASK                                                                   0xFFFFFFFFL + +// addressBlock: smuio_smuio_reset_SmuSmuioDec +//SMUIO_MP_RESET_INTR +#define SMUIO_MP_RESET_INTR__SMUIO_MP_RESET_INTR__SHIFT                                                       0x0 +#define SMUIO_MP_RESET_INTR__SMUIO_MP_RESET_INTR_MASK                                                         0x00000001L +//SMUIO_SOC_HALT +#define SMUIO_SOC_HALT__WDT_FORCE_PWROK_EN__SHIFT                                                             0x2 +#define SMUIO_SOC_HALT__WDT_FORCE_RESETn_EN__SHIFT                                                            0x3 +#define SMUIO_SOC_HALT__WDT_FORCE_PWROK_EN_MASK                                                               0x00000004L +#define SMUIO_SOC_HALT__WDT_FORCE_RESETn_EN_MASK                                                              0x00000008L +//SMUIO_GFX_MISC_CNTL +#define SMUIO_GFX_MISC_CNTL__SMU_GFX_cold_vs_gfxoff__SHIFT                                                    0x0 +#define SMUIO_GFX_MISC_CNTL__PWR_GFXOFF_STATUS__SHIFT                                                         0x1 +#define SMUIO_GFX_MISC_CNTL__PWR_GFX_DLDO_CLK_SWITCH__SHIFT                                                   0x3 +#define SMUIO_GFX_MISC_CNTL__PWR_GFX_RLC_CGPG_EN__SHIFT                                                       0x4 +#define SMUIO_GFX_MISC_CNTL__SMU_GFX_cold_vs_gfxoff_MASK                                                      0x00000001L +#define SMUIO_GFX_MISC_CNTL__PWR_GFXOFF_STATUS_MASK                                                           0x00000006L +#define SMUIO_GFX_MISC_CNTL__PWR_GFX_DLDO_CLK_SWITCH_MASK                                                     0x00000008L +#define SMUIO_GFX_MISC_CNTL__PWR_GFX_RLC_CGPG_EN_MASK                                                         0x00000010L + +// addressBlock: smuio_smuio_ccxctrl_SmuSmuioDec +//PWROK_REFCLK_GAP_CYCLES +#define PWROK_REFCLK_GAP_CYCLES__Pwrok_PreAssertion_clkgap_cycles__SHIFT                                      0x0 +#define PWROK_REFCLK_GAP_CYCLES__Pwrok_PostAssertion_clkgap_cycles__SHIFT                                     0x8 +#define PWROK_REFCLK_GAP_CYCLES__Pwrok_PreAssertion_clkgap_cycles_MASK                                        0x000000FFL +#define PWROK_REFCLK_GAP_CYCLES__Pwrok_PostAssertion_clkgap_cycles_MASK                                       0x0000FF00L +//GOLDEN_TSC_INCREMENT_UPPER +#define GOLDEN_TSC_INCREMENT_UPPER__GoldenTscIncrementUpper__SHIFT                                            0x0 +#define GOLDEN_TSC_INCREMENT_UPPER__GoldenTscIncrementUpper_MASK                                              0x00FFFFFFL +//GOLDEN_TSC_INCREMENT_LOWER +#define GOLDEN_TSC_INCREMENT_LOWER__GoldenTscIncrementLower__SHIFT                                            0x0 +#define GOLDEN_TSC_INCREMENT_LOWER__GoldenTscIncrementLower_MASK                                              0xFFFFFFFFL +//GOLDEN_TSC_COUNT_UPPER +#define GOLDEN_TSC_COUNT_UPPER__GoldenTscCountUpper__SHIFT                                                    0x0 +#define GOLDEN_TSC_COUNT_UPPER__GoldenTscCountUpper_MASK                                                      0x00FFFFFFL +//GOLDEN_TSC_COUNT_LOWER +#define GOLDEN_TSC_COUNT_LOWER__GoldenTscCountLower__SHIFT                                                    0x0 +#define GOLDEN_TSC_COUNT_LOWER__GoldenTscCountLower_MASK                                                      0xFFFFFFFFL +//GFX_GOLDEN_TSC_SHADOW_UPPER +#define GFX_GOLDEN_TSC_SHADOW_UPPER__GfxGoldenTscShadowUpper__SHIFT                                           0x0 +#define GFX_GOLDEN_TSC_SHADOW_UPPER__GfxGoldenTscShadowUpper_MASK                                             0x00FFFFFFL +//GFX_GOLDEN_TSC_SHADOW_LOWER +#define GFX_GOLDEN_TSC_SHADOW_LOWER__GfxGoldenTscShadowLower__SHIFT                                           0x0 +#define GFX_GOLDEN_TSC_SHADOW_LOWER__GfxGoldenTscShadowLower_MASK                                             0xFFFFFFFFL +//SOC_GOLDEN_TSC_SHADOW_UPPER +#define SOC_GOLDEN_TSC_SHADOW_UPPER__SocGoldenTscShadowUpper__SHIFT                                           0x0 +#define SOC_GOLDEN_TSC_SHADOW_UPPER__SocGoldenTscShadowUpper_MASK                                             0x00FFFFFFL +//SOC_GOLDEN_TSC_SHADOW_LOWER +#define SOC_GOLDEN_TSC_SHADOW_LOWER__SocGoldenTscShadowLower__SHIFT                                           0x0 +#define SOC_GOLDEN_TSC_SHADOW_LOWER__SocGoldenTscShadowLower_MASK                                             0xFFFFFFFFL +//SOC_GAP_PWROK +#define SOC_GAP_PWROK__soc_gap_pwrok__SHIFT                                                                   0x0 +#define SOC_GAP_PWROK__soc_gap_pwrok_MASK                                                                     0x00000001L + +// addressBlock: smuio_smuio_swtimer_SmuSmuioDec +//PWR_VIRT_RESET_REQ +#define PWR_VIRT_RESET_REQ__VF_FLR__SHIFT                                                                     0x0 +#define PWR_VIRT_RESET_REQ__PF_FLR__SHIFT                                                                     0x1f +#define PWR_VIRT_RESET_REQ__VF_FLR_MASK                                                                       0x7FFFFFFFL +#define PWR_VIRT_RESET_REQ__PF_FLR_MASK                                                                       0x80000000L +//PWR_DISP_TIMER_CONTROL +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_COUNT__SHIFT                                                   0x0 +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_ENABLE__SHIFT                                                  0x19 +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_DISABLE__SHIFT                                                 0x1a +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_MASK__SHIFT                                                    0x1b +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_STAT_AK__SHIFT                                                 0x1c +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_TYPE__SHIFT                                                    0x1d +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_MODE__SHIFT                                                    0x1e +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_COUNT_MASK                                                     0x01FFFFFFL +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_ENABLE_MASK                                                    0x02000000L +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_DISABLE_MASK                                                   0x04000000L +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_MASK_MASK                                                      0x08000000L +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_STAT_AK_MASK                                                   0x10000000L +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_TYPE_MASK                                                      0x20000000L +#define PWR_DISP_TIMER_CONTROL__DISP_TIMER_INT_MODE_MASK                                                      0x40000000L +//PWR_DISP_TIMER2_CONTROL +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_COUNT__SHIFT                                                  0x0 +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_ENABLE__SHIFT                                                 0x19 +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_DISABLE__SHIFT                                                0x1a +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_MASK__SHIFT                                                   0x1b +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_STAT_AK__SHIFT                                                0x1c +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_TYPE__SHIFT                                                   0x1d +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_MODE__SHIFT                                                   0x1e +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_COUNT_MASK                                                    0x01FFFFFFL +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_ENABLE_MASK                                                   0x02000000L +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_DISABLE_MASK                                                  0x04000000L +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_MASK_MASK                                                     0x08000000L +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_STAT_AK_MASK                                                  0x10000000L +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_TYPE_MASK                                                     0x20000000L +#define PWR_DISP_TIMER2_CONTROL__DISP_TIMER_INT_MODE_MASK                                                     0x40000000L +//PWR_DISP_TIMER_GLOBAL_CONTROL +#define PWR_DISP_TIMER_GLOBAL_CONTROL__DISP_TIMER_PULSE_WIDTH__SHIFT                                          0x0 +#define PWR_DISP_TIMER_GLOBAL_CONTROL__DISP_TIMER_PULSE_EN__SHIFT                                             0xa +#define PWR_DISP_TIMER_GLOBAL_CONTROL__DISP_TIMER_PULSE_WIDTH_MASK                                            0x000003FFL +#define PWR_DISP_TIMER_GLOBAL_CONTROL__DISP_TIMER_PULSE_EN_MASK                                               0x00000400L +//PWR_IH_CONTROL +#define PWR_IH_CONTROL__MAX_CREDIT__SHIFT                                                                     0x0 +#define PWR_IH_CONTROL__DISP_TIMER_TRIGGER_MASK__SHIFT                                                        0x5 +#define PWR_IH_CONTROL__DISP_TIMER2_TRIGGER_MASK__SHIFT                                                       0x6 +#define PWR_IH_CONTROL__PWR_IH_CLK_GATE_EN__SHIFT                                                             0x1f +#define PWR_IH_CONTROL__MAX_CREDIT_MASK                                                                       0x0000001FL +#define PWR_IH_CONTROL__DISP_TIMER_TRIGGER_MASK_MASK                                                          0x00000020L +#define PWR_IH_CONTROL__DISP_TIMER2_TRIGGER_MASK_MASK                                                         0x00000040L +#define PWR_IH_CONTROL__PWR_IH_CLK_GATE_EN_MASK                                                               0x80000000L + +// addressBlock: smuio_smuio_svi0_SmuSmuioDec +//SMUSVI0_TEL_PLANE0 +#define SMUSVI0_TEL_PLANE0__SVI0_PLANE0_IDDCOR__SHIFT                                                         0x0 +#define SMUSVI0_TEL_PLANE0__SVI0_PLANE0_VDDCOR__SHIFT                                                         0x10 +#define SMUSVI0_TEL_PLANE0__SVI0_PLANE0_IDDCOR_MASK                                                           0x000000FFL +#define SMUSVI0_TEL_PLANE0__SVI0_PLANE0_VDDCOR_MASK                                                           0x01FF0000L +//SMUSVI0_PLANE0_CURRENTVID +#define SMUSVI0_PLANE0_CURRENTVID__CURRENT_SVI0_PLANE0_VID__SHIFT                                             0x18 +#define SMUSVI0_PLANE0_CURRENTVID__CURRENT_SVI0_PLANE0_VID_MASK                                               0xFF000000L + +#endif diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index 0d1209f2cf31..edcb85560ced 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -318,6 +318,7 @@ enum pp_xgmi_plpd_mode {  #define MAX_GFX_CLKS 8  #define MAX_CLKS 4  #define NUM_VCN 4 +#define NUM_JPEG_ENG 32  struct seq_file;  enum amd_pp_clock_type; @@ -421,7 +422,7 @@ struct amd_pm_funcs {  	int (*set_hard_min_dcefclk_by_freq)(void *handle, uint32_t clock);  	int (*set_hard_min_fclk_by_freq)(void *handle, uint32_t clock);  	int (*set_min_deep_sleep_dcefclk)(void *handle, uint32_t clock); -	int (*get_asic_baco_capability)(void *handle, bool *cap); +	bool (*get_asic_baco_capability)(void *handle);  	int (*get_asic_baco_state)(void *handle, int *state);  	int (*set_asic_baco_state)(void *handle, int state);  	int (*get_ppfeature_status)(void *handle, char *buf); @@ -431,6 +432,7 @@ struct amd_pm_funcs {  	int (*set_df_cstate)(void *handle, enum pp_df_cstate state);  	int (*set_xgmi_pstate)(void *handle, uint32_t pstate);  	ssize_t (*get_gpu_metrics)(void *handle, void **table); +	ssize_t (*get_pm_metrics)(void *handle, void *pmmetrics, size_t size);  	int (*set_watermarks_for_clock_ranges)(void *handle,  					       struct pp_smu_wm_range_sets *ranges);  	int (*display_disable_memory_clock_switch)(void *handle, @@ -774,6 +776,85 @@ struct gpu_metrics_v1_4 {  	uint16_t			padding;  }; +struct gpu_metrics_v1_5 { +	struct metrics_table_header	common_header; + +	/* Temperature (Celsius) */ +	uint16_t			temperature_hotspot; +	uint16_t			temperature_mem; +	uint16_t			temperature_vrsoc; + +	/* Power (Watts) */ +	uint16_t			curr_socket_power; + +	/* Utilization (%) */ +	uint16_t			average_gfx_activity; +	uint16_t			average_umc_activity; // memory controller +	uint16_t			vcn_activity[NUM_VCN]; +	uint16_t			jpeg_activity[NUM_JPEG_ENG]; + +	/* Energy (15.259uJ (2^-16) units) */ +	uint64_t			energy_accumulator; + +	/* Driver attached timestamp (in ns) */ +	uint64_t			system_clock_counter; + +	/* Throttle status */ +	uint32_t			throttle_status; + +	/* Clock Lock Status. Each bit corresponds to clock instance */ +	uint32_t			gfxclk_lock_status; + +	/* Link width (number of lanes) and speed (in 0.1 GT/s) */ +	uint16_t			pcie_link_width; +	uint16_t			pcie_link_speed; + +	/* XGMI bus width and bitrate (in Gbps) */ +	uint16_t			xgmi_link_width; +	uint16_t			xgmi_link_speed; + +	/* Utilization Accumulated (%) */ +	uint32_t			gfx_activity_acc; +	uint32_t			mem_activity_acc; + +	/*PCIE accumulated bandwidth (GB/sec) */ +	uint64_t			pcie_bandwidth_acc; + +	/*PCIE instantaneous bandwidth (GB/sec) */ +	uint64_t			pcie_bandwidth_inst; + +	/* PCIE L0 to recovery state transition accumulated count */ +	uint64_t			pcie_l0_to_recov_count_acc; + +	/* PCIE replay accumulated count */ +	uint64_t			pcie_replay_count_acc; + +	/* PCIE replay rollover accumulated count */ +	uint64_t			pcie_replay_rover_count_acc; + +	/* PCIE NAK sent  accumulated count */ +	uint32_t			pcie_nak_sent_count_acc; + +	/* PCIE NAK received accumulated count */ +	uint32_t			pcie_nak_rcvd_count_acc; + +	/* XGMI accumulated data transfer size(KiloBytes) */ +	uint64_t			xgmi_read_data_acc[NUM_XGMI_LINKS]; +	uint64_t			xgmi_write_data_acc[NUM_XGMI_LINKS]; + +	/* PMFW attached timestamp (10ns resolution) */ +	uint64_t			firmware_timestamp; + +	/* Current clocks (Mhz) */ +	uint16_t			current_gfxclk[MAX_GFX_CLKS]; +	uint16_t			current_socclk[MAX_CLKS]; +	uint16_t			current_vclk0[MAX_CLKS]; +	uint16_t			current_dclk0[MAX_CLKS]; +	uint16_t			current_uclk; + +	uint16_t			padding; +}; +  /*   * gpu_metrics_v2_0 is not recommended as it's not naturally aligned.   * Use gpu_metrics_v2_1 or later instead. @@ -1085,6 +1166,10 @@ struct gpu_metrics_v3_0 {  	uint16_t			average_dram_reads;  	/* time filtered DRAM write bandwidth [MB/sec] */  	uint16_t			average_dram_writes; +	/* time filtered IPU read bandwidth [MB/sec] */ +	uint16_t			average_ipu_reads; +	/* time filtered IPU write bandwidth [MB/sec] */ +	uint16_t			average_ipu_writes;  	/* Driver attached timestamp (in ns) */  	uint64_t			system_clock_counter; @@ -1104,6 +1189,8 @@ struct gpu_metrics_v3_0 {  	uint32_t			average_all_core_power;  	/* calculated core power [mW] */  	uint16_t			average_core_power[16]; +	/* time filtered total system power [mW] */ +	uint16_t			average_sys_power;  	/* maximum IRM defined STAPM power limit [mW] */  	uint16_t			stapm_power_limit;  	/* time filtered STAPM power limit [mW] */ @@ -1116,6 +1203,8 @@ struct gpu_metrics_v3_0 {  	uint16_t			average_ipuclk_frequency;  	uint16_t			average_fclk_frequency;  	uint16_t			average_vclk_frequency; +	uint16_t			average_uclk_frequency; +	uint16_t			average_mpipu_frequency;  	/* Current clocks */  	/* target core frequency [MHz] */ @@ -1125,7 +1214,31 @@ struct gpu_metrics_v3_0 {  	/* GFXCLK frequency limit enforced on GFX [MHz] */  	uint16_t			current_gfx_maxfreq; +	/* Throttle Residency (ASIC dependent) */ +	uint32_t			throttle_residency_prochot; +	uint32_t			throttle_residency_spl; +	uint32_t			throttle_residency_fppt; +	uint32_t			throttle_residency_sppt; +	uint32_t			throttle_residency_thm_core; +	uint32_t			throttle_residency_thm_gfx; +	uint32_t			throttle_residency_thm_soc; +  	/* Metrics table alpha filter time constant [us] */  	uint32_t			time_filter_alphavalue;  }; + +struct amdgpu_pmmetrics_header { +	uint16_t structure_size; +	uint16_t pad; +	uint32_t mp1_ip_discovery_version; +	uint32_t pmfw_version; +	uint32_t pmmetrics_version; +}; + +struct amdgpu_pm_metrics { +	struct amdgpu_pmmetrics_header common_header; + +	uint8_t data[]; +}; +  #endif diff --git a/drivers/gpu/drm/amd/include/mes_v11_api_def.h b/drivers/gpu/drm/amd/include/mes_v11_api_def.h index b1db2b190187..ec5b9ab67c5e 100644 --- a/drivers/gpu/drm/amd/include/mes_v11_api_def.h +++ b/drivers/gpu/drm/amd/include/mes_v11_api_def.h @@ -232,6 +232,7 @@ union MESAPI_SET_HW_RESOURCES {  		};  		uint32_t	oversubscription_timer;  		uint64_t        doorbell_info; +		uint64_t        event_intr_history_gpu_mc_ptr;  	};  	uint32_t	max_dwords_in_api[API_FRAME_SIZE_IN_DWORDS]; @@ -571,7 +572,8 @@ struct SET_SHADER_DEBUGGER {  		struct {  			uint32_t single_memop : 1;  /* SQ_DEBUG.single_memop */  			uint32_t single_alu_op : 1; /* SQ_DEBUG.single_alu_op */ -			uint32_t reserved : 30; +			uint32_t reserved : 29; +			uint32_t process_ctx_flush : 1;  		};  		uint32_t u32all;  	} flags; | 
