diff options
Diffstat (limited to 'drivers/gpu/drm/amd/include')
17 files changed, 578 insertions, 34 deletions
| diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h index e98c84ef206f..10dc481ecbc4 100644 --- a/drivers/gpu/drm/amd/include/amd_shared.h +++ b/drivers/gpu/drm/amd/include/amd_shared.h @@ -47,6 +47,40 @@ enum amd_apu_flags {  	AMD_APU_IS_RENOIR = 0x00000008UL,  }; +/** +* DOC: IP Blocks +* +* GPUs are composed of IP (intellectual property) blocks. These +* IP blocks provide various functionalities: display, graphics, +* video decode, etc. The IP blocks that comprise a particular GPU +* are listed in the GPU's respective SoC file. amdgpu_device.c +* acquires the list of IP blocks for the GPU in use on initialization. +* It can then operate on this list to perform standard driver operations +* such as: init, fini, suspend, resume, etc. +*  +* +* IP block implementations are named using the following convention: +* <functionality>_v<version> (E.g.: gfx_v6_0). +*/ + +/** +* enum amd_ip_block_type - Used to classify IP blocks by functionality. +* +* @AMD_IP_BLOCK_TYPE_COMMON: GPU Family +* @AMD_IP_BLOCK_TYPE_GMC: Graphics Memory Controller +* @AMD_IP_BLOCK_TYPE_IH: Interrupt Handler +* @AMD_IP_BLOCK_TYPE_SMC: System Management Controller +* @AMD_IP_BLOCK_TYPE_PSP: Platform Security Processor +* @AMD_IP_BLOCK_TYPE_DCE: Display and Compositing Engine +* @AMD_IP_BLOCK_TYPE_GFX: Graphics and Compute Engine +* @AMD_IP_BLOCK_TYPE_SDMA: System DMA Engine +* @AMD_IP_BLOCK_TYPE_UVD: Unified Video Decoder +* @AMD_IP_BLOCK_TYPE_VCE: Video Compression Engine +* @AMD_IP_BLOCK_TYPE_ACP: Audio Co-Processor +* @AMD_IP_BLOCK_TYPE_VCN: Video Core/Codec Next +* @AMD_IP_BLOCK_TYPE_MES: Micro-Engine Scheduler +* @AMD_IP_BLOCK_TYPE_JPEG: JPEG Engine +*/  enum amd_ip_block_type {  	AMD_IP_BLOCK_TYPE_COMMON,  	AMD_IP_BLOCK_TYPE_GMC, @@ -128,6 +162,34 @@ enum amd_powergating_state {  #define AMD_PG_SUPPORT_ATHUB			(1 << 16)  #define AMD_PG_SUPPORT_JPEG			(1 << 17) +/** + * enum PP_FEATURE_MASK - Used to mask power play features. + * + * @PP_SCLK_DPM_MASK: Dynamic adjustment of the system (graphics) clock. + * @PP_MCLK_DPM_MASK: Dynamic adjustment of the memory clock. + * @PP_PCIE_DPM_MASK: Dynamic adjustment of PCIE clocks and lanes. + * @PP_SCLK_DEEP_SLEEP_MASK: System (graphics) clock deep sleep. + * @PP_POWER_CONTAINMENT_MASK: Power containment. + * @PP_UVD_HANDSHAKE_MASK: Unified video decoder handshake. + * @PP_SMC_VOLTAGE_CONTROL_MASK: Dynamic voltage control. + * @PP_VBI_TIME_SUPPORT_MASK: Vertical blank interval support. + * @PP_ULV_MASK: Ultra low voltage. + * @PP_ENABLE_GFX_CG_THRU_SMU: SMU control of GFX engine clockgating. + * @PP_CLOCK_STRETCH_MASK: Clock stretching. + * @PP_OD_FUZZY_FAN_CONTROL_MASK: Overdrive fuzzy fan control. + * @PP_SOCCLK_DPM_MASK: Dynamic adjustment of the SoC clock. + * @PP_DCEFCLK_DPM_MASK: Dynamic adjustment of the Display Controller Engine Fabric clock. + * @PP_OVERDRIVE_MASK: Over- and under-clocking support. + * @PP_GFXOFF_MASK: Dynamic graphics engine power control. + * @PP_ACG_MASK: Adaptive clock generator. + * @PP_STUTTER_MODE: Stutter mode. + * @PP_AVFS_MASK: Adaptive voltage and frequency scaling. + * + * To override these settings on boot, append amdgpu.ppfeaturemask=<mask> to + * the kernel's command line parameters. This is usually done through a system's + * boot loader (E.g. GRUB). If manually loading the driver, pass + * ppfeaturemask=<mask> as a modprobe parameter. + */  enum PP_FEATURE_MASK {  	PP_SCLK_DPM_MASK = 0x1,  	PP_MCLK_DPM_MASK = 0x2, @@ -165,56 +227,59 @@ enum DC_DEBUG_MASK {  };  enum amd_dpm_forced_level; +  /**   * struct amd_ip_funcs - general hooks for managing amdgpu IP Blocks + * @name: Name of IP block + * @early_init: sets up early driver state (pre sw_init), + *              does not configure hw - Optional + * @late_init: sets up late driver/hw state (post hw_init) - Optional + * @sw_init: sets up driver state, does not configure hw + * @sw_fini: tears down driver state, does not configure hw + * @hw_init: sets up the hw state + * @hw_fini: tears down the hw state + * @late_fini: final cleanup + * @suspend: handles IP specific hw/sw changes for suspend + * @resume: handles IP specific hw/sw changes for resume + * @is_idle: returns current IP block idle status + * @wait_for_idle: poll for idle + * @check_soft_reset: check soft reset the IP block + * @pre_soft_reset: pre soft reset the IP block + * @soft_reset: soft reset the IP block + * @post_soft_reset: post soft reset the IP block + * @set_clockgating_state: enable/disable cg for the IP block + * @set_powergating_state: enable/disable pg for the IP block + * @get_clockgating_state: get current clockgating status + * @enable_umd_pstate: enable UMD powerstate + * + * These hooks provide an interface for controlling the operational state + * of IP blocks. After acquiring a list of IP blocks for the GPU in use, + * the driver can make chip-wide state changes by walking this list and + * making calls to hooks from each IP block. This list is ordered to ensure + * that the driver initializes the IP blocks in a safe sequence.   */  struct amd_ip_funcs { -	/** @name: Name of IP block */  	char *name; -	/** -	 * @early_init: -	 * -	 * sets up early driver state (pre sw_init), -	 * does not configure hw - Optional -	 */  	int (*early_init)(void *handle); -	/** @late_init: sets up late driver/hw state (post hw_init) - Optional */  	int (*late_init)(void *handle); -	/** @sw_init: sets up driver state, does not configure hw */  	int (*sw_init)(void *handle); -	/** @sw_fini: tears down driver state, does not configure hw */  	int (*sw_fini)(void *handle); -	/** @hw_init: sets up the hw state */  	int (*hw_init)(void *handle); -	/** @hw_fini: tears down the hw state */  	int (*hw_fini)(void *handle); -	/** @late_fini: final cleanup */  	void (*late_fini)(void *handle); -	/** @suspend: handles IP specific hw/sw changes for suspend */  	int (*suspend)(void *handle); -	/** @resume: handles IP specific hw/sw changes for resume */  	int (*resume)(void *handle); -	/** @is_idle: returns current IP block idle status */  	bool (*is_idle)(void *handle); -	/** @wait_for_idle: poll for idle */  	int (*wait_for_idle)(void *handle); -	/** @check_soft_reset: check soft reset the IP block */  	bool (*check_soft_reset)(void *handle); -	/** @pre_soft_reset: pre soft reset the IP block */  	int (*pre_soft_reset)(void *handle); -	/** @soft_reset: soft reset the IP block */  	int (*soft_reset)(void *handle); -	/** @post_soft_reset: post soft reset the IP block */  	int (*post_soft_reset)(void *handle); -	/** @set_clockgating_state: enable/disable cg for the IP block */  	int (*set_clockgating_state)(void *handle,  				     enum amd_clockgating_state state); -	/** @set_powergating_state: enable/disable pg for the IP block */  	int (*set_powergating_state)(void *handle,  				     enum amd_powergating_state state); -	/** @get_clockgating_state: get current clockgating status */  	void (*get_clockgating_state)(void *handle, u32 *flags); -	/** @enable_umd_pstate: enable UMD powerstate */  	int (*enable_umd_pstate)(void *handle, enum amd_dpm_forced_level *level);  }; diff --git a/drivers/gpu/drm/amd/include/asic_reg/dce/dce_12_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/dce/dce_12_0_offset.h index 27bb8c1ab858..b6f74bf4af02 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dce/dce_12_0_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dce/dce_12_0_offset.h @@ -7376,8 +7376,6 @@  #define mmCRTC4_CRTC_DRR_CONTROL                                                                       0x0f3e  #define mmCRTC4_CRTC_DRR_CONTROL_BASE_IDX                                                              2 -#define mmDCHUBBUB_SDPIF_MMIO_CNTRL_0                                                                  0x395d -#define mmDCHUBBUB_SDPIF_MMIO_CNTRL_0_BASE_IDX                                                         2  // addressBlock: dce_dc_fmt4_dispdec  // base address: 0x2000 diff --git a/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_d.h b/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_d.h index ae798f768853..9de01ae574c0 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_d.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_d.h @@ -4444,14 +4444,90 @@  /* Registers that spilled out of sid.h */  #define mmDATA_FORMAT                              0x1AC0 +#define mmLB0_DATA_FORMAT                               0x1AC0 +#define mmLB1_DATA_FORMAT                               0x1DC0 +#define mmLB2_DATA_FORMAT                               0x40C0 +#define mmLB3_DATA_FORMAT                               0x43C0 +#define mmLB4_DATA_FORMAT                               0x46C0 +#define mmLB5_DATA_FORMAT                               0x49C0  #define mmDESKTOP_HEIGHT                           0x1AC1 +#define mmLB0_DESKTOP_HEIGHT                            0x1AC1 +#define mmLB1_DESKTOP_HEIGHT                            0x1DC1 +#define mmLB2_DESKTOP_HEIGHT                            0x40C1 +#define mmLB3_DESKTOP_HEIGHT                            0x43C1 +#define mmLB4_DESKTOP_HEIGHT                            0x46C1 +#define mmLB5_DESKTOP_HEIGHT                            0x49C1  #define mmDC_LB_MEMORY_SPLIT                       0x1AC3 +#define mmLB0_DC_LB_MEMORY_SPLIT                        0x1AC3 +#define mmLB1_DC_LB_MEMORY_SPLIT                        0x1DC3 +#define mmLB2_DC_LB_MEMORY_SPLIT                        0x40C3 +#define mmLB3_DC_LB_MEMORY_SPLIT                        0x43C3 +#define mmLB4_DC_LB_MEMORY_SPLIT                        0x46C3 +#define mmLB5_DC_LB_MEMORY_SPLIT                        0x49C3 +#define mmDC_LB_MEM_SIZE                                0x1AC4 +#define mmLB0_DC_LB_MEM_SIZE                            0x1AC4 +#define mmLB1_DC_LB_MEM_SIZE                            0x1DC4 +#define mmLB2_DC_LB_MEM_SIZE                            0x40C4 +#define mmLB3_DC_LB_MEM_SIZE                            0x43C4 +#define mmLB4_DC_LB_MEM_SIZE                            0x46C4 +#define mmLB5_DC_LB_MEM_SIZE                            0x49C4  #define mmPRIORITY_A_CNT                           0x1AC6 +#define mmLB0_PRIORITY_A_CNT                            0x1AC6 +#define mmLB1_PRIORITY_A_CNT                            0x1DC6 +#define mmLB2_PRIORITY_A_CNT                            0x40C6 +#define mmLB3_PRIORITY_A_CNT                            0x43C6 +#define mmLB4_PRIORITY_A_CNT                            0x46C6 +#define mmLB5_PRIORITY_A_CNT                            0x49C6  #define mmPRIORITY_B_CNT                           0x1AC7 +#define mmLB0_PRIORITY_B_CNT                            0x1AC7 +#define mmLB1_PRIORITY_B_CNT                            0x1DC7 +#define mmLB2_PRIORITY_B_CNT                            0x40C7 +#define mmLB3_PRIORITY_B_CNT                            0x43C7 +#define mmLB4_PRIORITY_B_CNT                            0x46C7 +#define mmLB5_PRIORITY_B_CNT                            0x49C7  #define mmDPG_PIPE_ARBITRATION_CONTROL3            0x1B32 +#define mmDMIF_PG0_DPG_PIPE_ARBITRATION_CONTROL3        0x1B32 +#define mmDMIF_PG1_DPG_PIPE_ARBITRATION_CONTROL3        0x1E32 +#define mmDMIF_PG2_DPG_PIPE_ARBITRATION_CONTROL3        0x4132 +#define mmDMIF_PG3_DPG_PIPE_ARBITRATION_CONTROL3        0x4432 +#define mmDMIF_PG4_DPG_PIPE_ARBITRATION_CONTROL3        0x4732 +#define mmDMIF_PG5_DPG_PIPE_ARBITRATION_CONTROL3        0x4A32  #define mmINT_MASK                                 0x1AD0 +#define mmLB0_INT_MASK                                  0x1AD0 +#define mmLB1_INT_MASK                                  0x1DD0 +#define mmLB2_INT_MASK                                  0x40D0 +#define mmLB3_INT_MASK                                  0x43D0 +#define mmLB4_INT_MASK                                  0x46D0 +#define mmLB5_INT_MASK                                  0x49D0  #define mmVLINE_STATUS                             0x1AEE +#define mmLB0_VLINE_STATUS                              0x1AEE +#define mmLB1_VLINE_STATUS                              0x1DEE +#define mmLB2_VLINE_STATUS                              0x40EE +#define mmLB3_VLINE_STATUS                              0x43EE +#define mmLB4_VLINE_STATUS                              0x46EE +#define mmLB5_VLINE_STATUS                              0x49EE  #define mmVBLANK_STATUS                            0x1AEF +#define mmLB0_VBLANK_STATUS                             0x1AEF +#define mmLB1_VBLANK_STATUS                             0x1DEF +#define mmLB2_VBLANK_STATUS                             0x40EF +#define mmLB3_VBLANK_STATUS                             0x43EF +#define mmLB4_VBLANK_STATUS                             0x46EF +#define mmLB5_VBLANK_STATUS                             0x49EF +#define mmSCL_HORZ_FILTER_INIT_RGB_LUMA            0x1B4C +#define mmSCL0_SCL_HORZ_FILTER_INIT_RGB_LUMA            0x1B4C +#define mmSCL1_SCL_HORZ_FILTER_INIT_RGB_LUMA            0x1E4C +#define mmSCL2_SCL_HORZ_FILTER_INIT_RGB_LUMA            0x414C +#define mmSCL3_SCL_HORZ_FILTER_INIT_RGB_LUMA            0x444C +#define mmSCL4_SCL_HORZ_FILTER_INIT_RGB_LUMA            0x474C +#define mmSCL5_SCL_HORZ_FILTER_INIT_RGB_LUMA            0x4A4C + +#define mmSCL_HORZ_FILTER_INIT_CHROMA              0x1B4D +#define mmSCL0_SCL_HORZ_FILTER_INIT_CHROMA              0x1B4D +#define mmSCL1_SCL_HORZ_FILTER_INIT_CHROMA              0x1E4D +#define mmSCL2_SCL_HORZ_FILTER_INIT_CHROMA              0x414D +#define mmSCL3_SCL_HORZ_FILTER_INIT_CHROMA              0x444D +#define mmSCL4_SCL_HORZ_FILTER_INIT_CHROMA              0x474D +#define mmSCL5_SCL_HORZ_FILTER_INIT_CHROMA              0x4A4D  #endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_sh_mask.h index abe05bc80752..41c4a46ce357 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_sh_mask.h @@ -2076,6 +2076,8 @@  #define CRTC_CONTROL__CRTC_START_POINT_CNTL__SHIFT 0x0000000c  #define CRTC_CONTROL__CRTC_SYNC_RESET_SEL_MASK 0x00000010L  #define CRTC_CONTROL__CRTC_SYNC_RESET_SEL__SHIFT 0x00000004 +#define CRTC_CONTROL__CRTC_PREFETCH_EN_MASK                0x10000000L +#define	CRTC_CONTROL__CRTC_PREFETCH_EN__SHIFT              0x0000001c  #define CRTC_COUNT_CONTROL__CRTC_HORZ_COUNT_BY2_EN_MASK 0x00000001L  #define CRTC_COUNT_CONTROL__CRTC_HORZ_COUNT_BY2_EN__SHIFT 0x00000000  #define CRTC_COUNT_CONTROL__CRTC_HORZ_REPETITION_COUNT_MASK 0x0000001eL @@ -6364,6 +6366,8 @@  #define DPG_PIPE_ARBITRATION_CONTROL2__TIME_WEIGHT__SHIFT 0x00000000  #define DPG_PIPE_ARBITRATION_CONTROL2__URGENCY_WEIGHT_MASK 0xffff0000L  #define DPG_PIPE_ARBITRATION_CONTROL2__URGENCY_WEIGHT__SHIFT 0x00000010 +#define DPG_PIPE_ARBITRATION_CONTROL3__URGENCY_WATERMARK_MASK_MASK 0x00030000L +#define	DPG_PIPE_ARBITRATION_CONTROL3__URGENCY_WATERMARK_MASK__SHIFT 0x00000010  #define DPG_PIPE_DPM_CONTROL__DPM_ENABLE_MASK 0x00000001L  #define DPG_PIPE_DPM_CONTROL__DPM_ENABLE__SHIFT 0x00000000  #define DPG_PIPE_DPM_CONTROL__MCLK_CHANGE_ENABLE_MASK 0x00000010L @@ -6384,6 +6388,8 @@  #define DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_NOT_SELF_REFRESH_DURING_REQUEST__SHIFT 0x00000008  #define DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_URGENT_DURING_REQUEST_MASK 0x00000010L  #define DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_URGENT_DURING_REQUEST__SHIFT 0x00000004 +#define DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_WATERMARK_MASK_MASK 0x00003000L +#define	DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_WATERMARK_MASK__SHIFT 0x0000000c  #define DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_WATERMARK_MASK 0xffff0000L  #define DPG_PIPE_NB_PSTATE_CHANGE_CONTROL__NB_PSTATE_CHANGE_WATERMARK__SHIFT 0x00000010  #define DPG_PIPE_STUTTER_CONTROL_NONLPTCH__STUTTER_ENABLE_NONLPTCH_MASK 0x00000001L @@ -6406,6 +6412,8 @@  #define DPG_PIPE_STUTTER_CONTROL_NONLPTCH__STUTTER_WM_HIGH_FORCE_ON_NONLPTCH__SHIFT 0x00000008  #define DPG_PIPE_STUTTER_CONTROL__STUTTER_ENABLE_MASK 0x00000001L  #define DPG_PIPE_STUTTER_CONTROL__STUTTER_ENABLE__SHIFT 0x00000000 +#define DPG_PIPE_STUTTER_CONTROL__STUTTER_EXIT_SELF_REFRESH_WATERMARK_MASK_MASK 0x00003000L +#define	DPG_PIPE_STUTTER_CONTROL__STUTTER_EXIT_SELF_REFRESH_WATERMARK_MASK__SHIFT 0x0000000c  #define DPG_PIPE_STUTTER_CONTROL__STUTTER_EXIT_SELF_REFRESH_WATERMARK_MASK 0xffff0000L  #define DPG_PIPE_STUTTER_CONTROL__STUTTER_EXIT_SELF_REFRESH_WATERMARK__SHIFT 0x00000010  #define DPG_PIPE_STUTTER_CONTROL__STUTTER_IGNORE_CURSOR_MASK 0x00000010L @@ -7256,6 +7264,8 @@  #define GRPH_CONTROL__GRPH_FORMAT__SHIFT 0x00000008  #define GRPH_CONTROL__GRPH_MACRO_TILE_ASPECT_MASK 0x000c0000L  #define GRPH_CONTROL__GRPH_MACRO_TILE_ASPECT__SHIFT 0x00000012 +#define GRPH_CONTROL__GRPH_ARRAY_MODE_MASK                 0x00f00000L +#define	GRPH_CONTROL__GRPH_ARRAY_MODE__SHIFT               0x00000014  #define GRPH_CONTROL__GRPH_NUM_BANKS_MASK 0x0000000cL  #define GRPH_CONTROL__GRPH_NUM_BANKS__SHIFT 0x00000002  #define GRPH_CONTROL__GRPH_PIPE_CONFIG_MASK 0x1f000000L @@ -9835,4 +9845,98 @@  #define XDMA_TEST_DEBUG_INDEX__XDMA_TEST_DEBUG_WRITE_EN_MASK 0x00000100L  #define XDMA_TEST_DEBUG_INDEX__XDMA_TEST_DEBUG_WRITE_EN__SHIFT 0x00000008 +// DATA_FORMAT +#define DATA_FORMAT__INTERLEAVE_EN_MASK                    0x00000001L +#define	DATA_FORMAT__INTERLEAVE_EN__SHIFT                  0x00000000 +#define DATA_FORMAT__RESET_REQ_AT_EOL_MASK                 0x00000010L +#define	DATA_FORMAT__RESET_REQ_AT_EOL__SHIFT               0x00000004 +#define DATA_FORMAT__PREFETCH_MASK                         0x00001000L +#define	DATA_FORMAT__PREFETCH__SHIFT                       0x0000000c +#define DATA_FORMAT__SOF_READ_PT_MASK                      0x001f0000L +#define	DATA_FORMAT__SOF_READ_PT__SHIFT                    0x00000010 +#define DATA_FORMAT__REQUEST_MODE_MASK                     0x03000000L +#define	DATA_FORMAT__REQUEST_MODE__SHIFT                   0x00000018 +#define DATA_FORMAT__ALLOW_REQ_MODE_1_2_MASK               0x10000000L +#define	DATA_FORMAT__ALLOW_REQ_MODE_1_2__SHIFT             0x0000001c + + +// DC_LB_MEMORY_SPLIT +#define DC_LB_MEMORY_SPLIT__LB_NUM_PARTITIONS_MASK         0x000f0000L +#define	DC_LB_MEMORY_SPLIT__LB_NUM_PARTITIONS__SHIFT       0x00000010 +#define DC_LB_MEMORY_SPLIT__DC_LB_MEMORY_CONFIG_MASK       0x00300000L +#define	DC_LB_MEMORY_SPLIT__DC_LB_MEMORY_CONFIG__SHIFT     0x00000014 + +// DC_LB_MEM_SIZE +#define DC_LB_MEM_SIZE__DC_LB_MEM_SIZE_MASK                0x000007ffL +#define	DC_LB_MEM_SIZE__DC_LB_MEM_SIZE__SHIFT              0x00000000 + +// SCL_TAP_CONTROL +#define SCL_TAP_CONTROL__SCL_V_NUM_OF_TAPS_MASK            0x00000007L +#define	SCL_TAP_CONTROL__SCL_V_NUM_OF_TAPS__SHIFT          0x00000000 +#define SCL_TAP_CONTROL__SCL_H_NUM_OF_TAPS_MASK            0x00000f00L +#define	SCL_TAP_CONTROL__SCL_H_NUM_OF_TAPS__SHIFT          0x00000008 + +// INT_MASK +#define INT_MASK__VBLANK_INT_MASK                          0x00000001L +#define	INT_MASK__VBLANK_INT__SHIFT                        0x00000000 +#define INT_MASK__VLINE_INT_MASK                           0x00000010L +#define	INT_MASK__VLINE_INT__SHIFT                         0x00000004 + +// PRIORITY_A_CNT +#define PRIORITY_A_CNT__PRIORITY_MARK_A_MASK               0x00007fffL +#define	PRIORITY_A_CNT__PRIORITY_MARK_A__SHIFT             0x00000000 +#define PRIORITY_A_CNT__PRIORITY_A_OFF_MASK                0x00010000L +#define	PRIORITY_A_CNT__PRIORITY_A_OFF__SHIFT              0x00000010 +#define PRIORITY_A_CNT__PRIORITY_A_ALWAYS_ON_MASK          0x00100000L +#define	PRIORITY_A_CNT__PRIORITY_A_ALWAYS_ON__SHIFT        0x00000014 +#define PRIORITY_A_CNT__PRIORITY_A_FORCE_MASK_MASK         0x01000000L +#define	PRIORITY_A_CNT__PRIORITY_A_FORCE_MASK__SHIFT       0x00000018 + +// PRIORITY_B_CNT +#define PRIORITY_B_CNT__PRIORITY_MARK_B_MASK               0x00007fffL +#define	PRIORITY_B_CNT__PRIORITY_MARK_B__SHIFT             0x00000000 +#define PRIORITY_B_CNT__PRIORITY_B_OFF_MASK                0x00010000L +#define	PRIORITY_B_CNT__PRIORITY_B_OFF__SHIFT              0x00000010 +#define PRIORITY_B_CNT__PRIORITY_B_ALWAYS_ON_MASK          0x00100000L +#define	PRIORITY_B_CNT__PRIORITY_B_ALWAYS_ON__SHIFT        0x00000014 +#define PRIORITY_B_CNT__PRIORITY_B_FORCE_MASK_MASK         0x01000000L +#define	PRIORITY_B_CNT__PRIORITY_B_FORCE_MASK__SHIFT       0x00000018 + +// VLINE_STATUS +#define VLINE_STATUS__VLINE_OCCURRED_MASK                  0x00000001L +#define	VLINE_STATUS__VLINE_OCCURRED__SHIFT                0x00000000 +#define VLINE_STATUS__VLINE_ACK_MASK                       0x00000010L +#define	VLINE_STATUS__VLINE_ACK__SHIFT                     0x00000004 +#define VLINE_STATUS__VLINE_STAT_MASK                      0x00001000L +#define	VLINE_STATUS__VLINE_STAT__SHIFT                    0x0000000c +#define VLINE_STATUS__VLINE_INTERRUPT_MASK                 0x00010000L +#define	VLINE_STATUS__VLINE_INTERRUPT__SHIFT               0x00000010 +#define VLINE_STATUS__VLINE_INTERRUPT_TYPE_MASK            0x00020000L +#define	VLINE_STATUS__VLINE_INTERRUPT_TYPE__SHIFT          0x00000011 + +// VBLANK_STATUS +#define VBLANK_STATUS__VBLANK_OCCURRED_MASK                0x00000001L +#define	VBLANK_STATUS__VBLANK_OCCURRED__SHIFT              0x00000000 +#define VBLANK_STATUS__VBLANK_ACK_MASK                     0x00000010L +#define	VBLANK_STATUS__VBLANK_ACK__SHIFT                   0x00000004 +#define VBLANK_STATUS__VBLANK_STAT_MASK                    0x00001000L +#define	VBLANK_STATUS__VBLANK_STAT__SHIFT                  0x0000000c +#define VBLANK_STATUS__VBLANK_INTERRUPT_MASK               0x00010000L +#define	VBLANK_STATUS__VBLANK_INTERRUPT__SHIFT             0x00000010 +#define VBLANK_STATUS__VBLANK_INTERRUPT_TYPE_MASK          0x00020000L +#define	VBLANK_STATUS__VBLANK_INTERRUPT_TYPE__SHIFT        0x00000011 + +// SCL_HORZ_FILTER_INIT_RGB_LUMA +#define SCL_HORZ_FILTER_INIT_RGB_LUMA__SCL_H_INIT_FRAC_RGB_Y_MASK 0x0000ffffL +#define	SCL_HORZ_FILTER_INIT_RGB_LUMA__SCL_H_INIT_FRAC_RGB_Y__SHIFT 0x00000000 +#define SCL_HORZ_FILTER_INIT_RGB_LUMA__SCL_H_INIT_INT_RGB_Y_MASK 0x000f0000L +#define	SCL_HORZ_FILTER_INIT_RGB_LUMA__SCL_H_INIT_INT_RGB_Y__SHIFT 0x00000010 + +// SCL_HORZ_FILTER_INIT_CHROMA +#define SCL_HORZ_FILTER_INIT_CHROMA__SCL_H_INIT_FRAC_CBCR_MASK 0x0000ffffL +#define	SCL_HORZ_FILTER_INIT_CHROMA__SCL_H_INIT_FRAC_CBCR__SHIFT 0x00000000 +#define SCL_HORZ_FILTER_INIT_CHROMA__SCL_H_INIT_INT_CBCR_MASK 0x00070000L +#define	SCL_HORZ_FILTER_INIT_CHROMA__SCL_H_INIT_INT_CBCR__SHIFT 0x00000010 + +  #endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_offset.h index cf166b591bc5..cf166b591bc5 100755..100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_offset.h diff --git a/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_sh_mask.h index 0e0319e98c07..ea683f452bb3 100755..100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dcn/dcn_3_0_0_sh_mask.h @@ -50271,6 +50271,10 @@  #define DSC_TOP0_DSC_TOP_CONTROL__DSC_CLOCK_EN_MASK                                                           0x00000001L  #define DSC_TOP0_DSC_TOP_CONTROL__DSC_DISPCLK_R_GATE_DIS_MASK                                                 0x00000010L  #define DSC_TOP0_DSC_TOP_CONTROL__DSC_DSCCLK_R_GATE_DIS_MASK                                                  0x00000100L +//DSC_TOP0_DSC_DEBUG_CONTROL +#define DSC_TOP0_DSC_DEBUG_CONTROL__DSC_DBG_EN__SHIFT                                                         0x0 +#define DSC_TOP0_DSC_DEBUG_CONTROL__DSC_DBG_EN_MASK                                                           0x00000001L +  // addressBlock: dce_dc_dsc0_dispdec_dsccif_dispdec  //DSCCIF0_DSCCIF_CONFIG0 @@ -50789,6 +50793,9 @@  #define DSC_TOP1_DSC_TOP_CONTROL__DSC_CLOCK_EN_MASK                                                           0x00000001L  #define DSC_TOP1_DSC_TOP_CONTROL__DSC_DISPCLK_R_GATE_DIS_MASK                                                 0x00000010L  #define DSC_TOP1_DSC_TOP_CONTROL__DSC_DSCCLK_R_GATE_DIS_MASK                                                  0x00000100L +//DSC_TOP1_DSC_DEBUG_CONTROL +#define DSC_TOP1_DSC_DEBUG_CONTROL__DSC_DBG_EN__SHIFT                                                         0x0 +#define DSC_TOP1_DSC_DEBUG_CONTROL__DSC_DBG_EN_MASK                                                           0x00000001L  // addressBlock: dce_dc_dsc1_dispdec_dsccif_dispdec @@ -51308,6 +51315,10 @@  #define DSC_TOP2_DSC_TOP_CONTROL__DSC_CLOCK_EN_MASK                                                           0x00000001L  #define DSC_TOP2_DSC_TOP_CONTROL__DSC_DISPCLK_R_GATE_DIS_MASK                                                 0x00000010L  #define DSC_TOP2_DSC_TOP_CONTROL__DSC_DSCCLK_R_GATE_DIS_MASK                                                  0x00000100L +//DSC_TOP2_DSC_DEBUG_CONTROL +#define DSC_TOP2_DSC_DEBUG_CONTROL__DSC_DBG_EN__SHIFT                                                         0x0 +#define DSC_TOP2_DSC_DEBUG_CONTROL__DSC_DBG_EN_MASK                                                           0x00000001L +  // addressBlock: dce_dc_dsc2_dispdec_dsccif_dispdec  //DSCCIF2_DSCCIF_CONFIG0 @@ -51826,6 +51837,9 @@  #define DSC_TOP3_DSC_TOP_CONTROL__DSC_CLOCK_EN_MASK                                                           0x00000001L  #define DSC_TOP3_DSC_TOP_CONTROL__DSC_DISPCLK_R_GATE_DIS_MASK                                                 0x00000010L  #define DSC_TOP3_DSC_TOP_CONTROL__DSC_DSCCLK_R_GATE_DIS_MASK                                                  0x00000100L +//DSC_TOP3_DSC_DEBUG_CONTROL +#define DSC_TOP3_DSC_DEBUG_CONTROL__DSC_DBG_EN__SHIFT                                                         0x0 +#define DSC_TOP3_DSC_DEBUG_CONTROL__DSC_DBG_EN_MASK                                                           0x00000001L  // addressBlock: dce_dc_dsc3_dispdec_dsccif_dispdec @@ -52346,6 +52360,10 @@  #define DSC_TOP4_DSC_TOP_CONTROL__DSC_CLOCK_EN_MASK                                                           0x00000001L  #define DSC_TOP4_DSC_TOP_CONTROL__DSC_DISPCLK_R_GATE_DIS_MASK                                                 0x00000010L  #define DSC_TOP4_DSC_TOP_CONTROL__DSC_DSCCLK_R_GATE_DIS_MASK                                                  0x00000100L +//DSC_TOP4_DSC_DEBUG_CONTROL +#define DSC_TOP4_DSC_DEBUG_CONTROL__DSC_DBG_EN__SHIFT                                                         0x0 +#define DSC_TOP4_DSC_DEBUG_CONTROL__DSC_DBG_EN_MASK                                                           0x00000001L +  // addressBlock: dce_dc_dsc4_dispdec_dsccif_dispdec  //DSCCIF4_DSCCIF_CONFIG0 @@ -52864,6 +52882,10 @@  #define DSC_TOP5_DSC_TOP_CONTROL__DSC_CLOCK_EN_MASK                                                           0x00000001L  #define DSC_TOP5_DSC_TOP_CONTROL__DSC_DISPCLK_R_GATE_DIS_MASK                                                 0x00000010L  #define DSC_TOP5_DSC_TOP_CONTROL__DSC_DSCCLK_R_GATE_DIS_MASK                                                  0x00000100L +//DSC_TOP5_DSC_DEBUG_CONTROL +#define DSC_TOP5_DSC_DEBUG_CONTROL__DSC_DBG_EN__SHIFT                                                         0x0 +#define DSC_TOP5_DSC_DEBUG_CONTROL__DSC_DBG_EN_MASK                                                           0x00000001L +  // addressBlock: dce_dc_dsc5_dispdec_dsccif_dispdec  //DSCCIF5_DSCCIF_CONFIG0 diff --git a/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_offset.h index 67faaf68e9d7..67faaf68e9d7 100755..100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_offset.h diff --git a/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_sh_mask.h index b4ef50a72868..b4ef50a72868 100755..100644 --- a/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/dcn/dpcs_3_0_0_sh_mask.h diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h index 644a9fa71bb2..66a4151fa676 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_offset.h @@ -9184,6 +9184,8 @@  #define mmRLC_GPM_THREAD_ENABLE_BASE_IDX                                                               1  #define mmRLC_RLCG_DOORBELL_RANGE                                                                      0x4c47  #define mmRLC_RLCG_DOORBELL_RANGE_BASE_IDX                                                             1 +#define mmRLC_CGTT_MGCG_OVERRIDE                                                                       0x4c48 +#define mmRLC_CGTT_MGCG_OVERRIDE_BASE_IDX                                                              1  #define mmRLC_CGCG_CGLS_CTRL                                                                           0x4c49  #define mmRLC_CGCG_CGLS_CTRL_BASE_IDX                                                                  1  #define mmRLC_CGCG_RAMP_CTRL                                                                           0x4c4a diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_sh_mask.h index 2e449fcff893..aed799d9a0e8 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_10_3_0_sh_mask.h @@ -32365,6 +32365,31 @@  #define RLC_RLCG_DOORBELL_CNTL__DOORBELL_3_MODE_MASK                                                          0x000000C0L  #define RLC_RLCG_DOORBELL_CNTL__DOORBELL_ID_MASK                                                              0x001F0000L  #define RLC_RLCG_DOORBELL_CNTL__DOORBELL_ID_EN_MASK                                                           0x00200000L +//RLC_CGTT_MGCG_OVERRIDE +#define RLC_CGTT_MGCG_OVERRIDE__RESERVED_0__SHIFT                                                             0x0 +#define RLC_CGTT_MGCG_OVERRIDE__RLC_CGTT_SCLK_OVERRIDE__SHIFT                                                 0x1 +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE__SHIFT                                                    0x2 +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_CGCG_OVERRIDE__SHIFT                                                    0x3 +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_CGLS_OVERRIDE__SHIFT                                                    0x4 +#define RLC_CGTT_MGCG_OVERRIDE__GRBM_CGTT_SCLK_OVERRIDE__SHIFT                                                0x5 +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGLS_OVERRIDE__SHIFT                                                    0x6 +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_GFX3D_CG_OVERRIDE__SHIFT                                                0x7 +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE__SHIFT                                                    0x8 +#define RLC_CGTT_MGCG_OVERRIDE__RESERVED_15_9__SHIFT                                                          0x9 +#define RLC_CGTT_MGCG_OVERRIDE__ENABLE_CGTS_LEGACY__SHIFT                                                     0x10 +#define RLC_CGTT_MGCG_OVERRIDE__RESERVED_31_17__SHIFT                                                         0x11 +#define RLC_CGTT_MGCG_OVERRIDE__RESERVED_0_MASK                                                               0x00000001L +#define RLC_CGTT_MGCG_OVERRIDE__RLC_CGTT_SCLK_OVERRIDE_MASK                                                   0x00000002L +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE_MASK                                                      0x00000004L +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_CGCG_OVERRIDE_MASK                                                      0x00000008L +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_CGLS_OVERRIDE_MASK                                                      0x00000010L +#define RLC_CGTT_MGCG_OVERRIDE__GRBM_CGTT_SCLK_OVERRIDE_MASK                                                  0x00000020L +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGLS_OVERRIDE_MASK                                                      0x00000040L +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_GFX3D_CG_OVERRIDE_MASK                                                  0x00000080L +#define RLC_CGTT_MGCG_OVERRIDE__GFXIP_FGCG_OVERRIDE_MASK                                                      0x00000100L +#define RLC_CGTT_MGCG_OVERRIDE__RESERVED_15_9_MASK                                                            0x0000FE00L +#define RLC_CGTT_MGCG_OVERRIDE__ENABLE_CGTS_LEGACY_MASK                                                       0x00010000L +#define RLC_CGTT_MGCG_OVERRIDE__RESERVED_31_17_MASK                                                           0xFFFE0000L  //RLC_RLCG_DOORBELL_STAT  #define RLC_RLCG_DOORBELL_STAT__DOORBELL_0_VALID__SHIFT                                                       0x0  #define RLC_RLCG_DOORBELL_STAT__DOORBELL_1_VALID__SHIFT                                                       0x1 diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_4_1_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_4_1_offset.h index f41556abfbbc..629a8a3b55e9 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_4_1_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_9_4_1_offset.h @@ -205,6 +205,8 @@  #define mmGCEA_EDC_CNT2_BASE_IDX                                                                       0  #define mmGCEA_EDC_CNT3                                                                                0x071b  #define mmGCEA_EDC_CNT3_BASE_IDX                                                                       0 +#define mmGCEA_ERR_STATUS                                                                              0x0712 +#define mmGCEA_ERR_STATUS_BASE_IDX                                                                     0  // addressBlock: gc_gfxudec  // base address: 0x30000 @@ -261,4 +263,4 @@  #define mmRLC_EDC_CNT2                                                                                 0x4d41  #define mmRLC_EDC_CNT2_BASE_IDX                                                                        1 -#endif
\ No newline at end of file +#endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/umc/umc_8_7_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/umc/umc_8_7_0_offset.h new file mode 100644 index 000000000000..3685766c4d56 --- /dev/null +++ b/drivers/gpu/drm/amd/include/asic_reg/umc/umc_8_7_0_offset.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2020  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 _umc_8_7_0_OFFSET_HEADER +#define _umc_8_7_0_OFFSET_HEADER + +#define mmUMCCH0_0_GeccErrCntSel                                  0x0328 +#define mmUMCCH0_0_GeccErrCntSel_BASE_IDX                         0 +#define mmUMCCH0_0_GeccErrCnt                                     0x0329 +#define mmUMCCH0_0_GeccErrCnt_BASE_IDX                            0 +#define mmMCA_UMC_UMC0_MCUMC_STATUST0                             0x03c2 +#define mmMCA_UMC_UMC0_MCUMC_STATUST0_BASE_IDX                    0 +#define mmMCA_UMC_UMC0_MCUMC_ADDRT0                               0x03c4 +#define mmMCA_UMC_UMC0_MCUMC_ADDRT0_BASE_IDX      		  0 + +#endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/umc/umc_8_7_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/umc/umc_8_7_0_sh_mask.h new file mode 100644 index 000000000000..4c5097fa0c09 --- /dev/null +++ b/drivers/gpu/drm/amd/include/asic_reg/umc/umc_8_7_0_sh_mask.h @@ -0,0 +1,79 @@ +#ifndef _umc_8_7_0_SH_MASK_HEADER
 +#define _umc_8_7_0_SH_MASK_HEADER
 +
 +//UMCCH0_0_GeccErrCntSel
 +#define UMCCH0_0_GeccErrCntSel__GeccErrCntCsSel__SHIFT                                                        0x0
 +#define UMCCH0_0_GeccErrCntSel__GeccErrInt__SHIFT                                                             0xc
 +#define UMCCH0_0_GeccErrCntSel__GeccErrCntEn__SHIFT                                                           0xf
 +#define UMCCH0_0_GeccErrCntSel__PoisonCntEn__SHIFT                                                            0x10
 +#define UMCCH0_0_GeccErrCntSel__GeccErrCntCsSel_MASK                                                          0x0000000FL
 +#define UMCCH0_0_GeccErrCntSel__GeccErrInt_MASK                                                               0x00003000L
 +#define UMCCH0_0_GeccErrCntSel__GeccErrCntEn_MASK                                                             0x00008000L
 +#define UMCCH0_0_GeccErrCntSel__PoisonCntEn_MASK                                                              0x00030000L
 +//UMCCH0_0_GeccErrCnt
 +#define UMCCH0_0_GeccErrCnt__GeccErrCnt__SHIFT                                                                0x0
 +#define UMCCH0_0_GeccErrCnt__GeccUnCorrErrCnt__SHIFT                                                          0x10
 +#define UMCCH0_0_GeccErrCnt__GeccErrCnt_MASK                                                                  0x0000FFFFL
 +#define UMCCH0_0_GeccErrCnt__GeccUnCorrErrCnt_MASK                                                            0xFFFF0000L
 +//MCA_UMC_UMC0_MCUMC_STATUST0
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrorCode__SHIFT                                                         0x0
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrorCodeExt__SHIFT                                                      0x10
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV22__SHIFT                                                          0x16
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__AddrLsb__SHIFT                                                           0x18
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV30__SHIFT                                                          0x1e
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrCoreId__SHIFT                                                         0x20
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV38__SHIFT                                                          0x26
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Scrub__SHIFT                                                             0x28
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV41__SHIFT                                                          0x29
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Poison__SHIFT                                                            0x2b
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Deferred__SHIFT                                                          0x2c
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__UECC__SHIFT                                                              0x2d
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__CECC__SHIFT                                                              0x2e
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV47__SHIFT                                                          0x2f
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Transparent__SHIFT                                                       0x34
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__SyndV__SHIFT                                                             0x35
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV54__SHIFT                                                          0x36
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__TCC__SHIFT                                                               0x37
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrCoreIdVal__SHIFT                                                      0x38
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__PCC__SHIFT                                                               0x39
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__AddrV__SHIFT                                                             0x3a
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__MiscV__SHIFT                                                             0x3b
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__En__SHIFT                                                                0x3c
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__UC__SHIFT                                                                0x3d
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Overflow__SHIFT                                                          0x3e
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Val__SHIFT                                                               0x3f
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrorCode_MASK                                                           0x000000000000FFFFL
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrorCodeExt_MASK                                                        0x00000000003F0000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV22_MASK                                                            0x0000000000C00000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__AddrLsb_MASK                                                             0x000000003F000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV30_MASK                                                            0x00000000C0000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrCoreId_MASK                                                           0x0000003F00000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV38_MASK                                                            0x000000C000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Scrub_MASK                                                               0x0000010000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV41_MASK                                                            0x0000060000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Poison_MASK                                                              0x0000080000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Deferred_MASK                                                            0x0000100000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__UECC_MASK                                                                0x0000200000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__CECC_MASK                                                                0x0000400000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV47_MASK                                                            0x000F800000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Transparent_MASK                                                         0x0010000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__SyndV_MASK                                                               0x0020000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__RESERV54_MASK                                                            0x0040000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__TCC_MASK                                                                 0x0080000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__ErrCoreIdVal_MASK                                                        0x0100000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__PCC_MASK                                                                 0x0200000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__AddrV_MASK                                                               0x0400000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__MiscV_MASK                                                               0x0800000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__En_MASK                                                                  0x1000000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__UC_MASK                                                                  0x2000000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Overflow_MASK                                                            0x4000000000000000L
 +#define MCA_UMC_UMC0_MCUMC_STATUST0__Val_MASK                                                                 0x8000000000000000L
 +//MCA_UMC_UMC0_MCUMC_ADDRT0
 +#define MCA_UMC_UMC0_MCUMC_ADDRT0__ErrorAddr__SHIFT                                                           0x0
 +#define MCA_UMC_UMC0_MCUMC_ADDRT0__LSB__SHIFT                                                                 0x38
 +#define MCA_UMC_UMC0_MCUMC_ADDRT0__Reserved__SHIFT                                                            0x3e
 +#define MCA_UMC_UMC0_MCUMC_ADDRT0__ErrorAddr_MASK                                                             0x00FFFFFFFFFFFFFFL
 +#define MCA_UMC_UMC0_MCUMC_ADDRT0__LSB_MASK                                                                   0x3F00000000000000L
 +#define MCA_UMC_UMC0_MCUMC_ADDRT0__Reserved_MASK                                                              0xC000000000000000L
 +
 +#endif
 diff --git a/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_offset.h index 07aceffb108a..524ba4421c17 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_offset.h +++ b/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_offset.h @@ -151,6 +151,8 @@  #define mmUVD_LMI_CTRL2_BASE_IDX                                                                       1  #define mmUVD_MASTINT_EN                                                                               0x0540  #define mmUVD_MASTINT_EN_BASE_IDX                                                                      1 +#define mmUVD_FW_STATUS                                                                                0x0557 +#define mmUVD_FW_STATUS_BASE_IDX                                                                       1  #define mmJPEG_CGC_CTRL                                                                                0x0565  #define mmJPEG_CGC_CTRL_BASE_IDX                                                                       1  #define mmUVD_LMI_CTRL                                                                                 0x0566 @@ -219,4 +221,5 @@  #define mmUVD_CONTEXT_ID2_BASE_IDX                                                                     1 +  #endif diff --git a/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_sh_mask.h index b427f73bd536..919be1842bd5 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/uvd/uvd_7_0_sh_mask.h @@ -807,5 +807,25 @@  #define UVD_CONTEXT_ID2__CONTEXT_ID2__SHIFT                                                                   0x0  #define UVD_CONTEXT_ID2__CONTEXT_ID2_MASK                                                                     0xFFFFFFFFL +//UVD_FW_STATUS +#define UVD_FW_STATUS__BUSY__SHIFT                                                                            0x0 +#define UVD_FW_STATUS__ACTIVE__SHIFT                                                                          0x1 +#define UVD_FW_STATUS__SEND_EFUSE_REQ__SHIFT                                                                  0x2 +#define UVD_FW_STATUS__DONE__SHIFT                                                                            0x8 +#define UVD_FW_STATUS__PASS__SHIFT                                                                            0x10 +#define UVD_FW_STATUS__FAIL__SHIFT                                                                            0x11 +#define UVD_FW_STATUS__INVALID_LEN__SHIFT                                                                     0x12 +#define UVD_FW_STATUS__INVALID_0_PADDING__SHIFT                                                               0x13 +#define UVD_FW_STATUS__INVALID_NONCE__SHIFT                                                                   0x14 +#define UVD_FW_STATUS__BUSY_MASK                                                                              0x00000001L +#define UVD_FW_STATUS__ACTIVE_MASK                                                                            0x00000002L +#define UVD_FW_STATUS__SEND_EFUSE_REQ_MASK                                                                    0x00000004L +#define UVD_FW_STATUS__DONE_MASK                                                                              0x00000100L +#define UVD_FW_STATUS__PASS_MASK                                                                              0x00010000L +#define UVD_FW_STATUS__FAIL_MASK                                                                              0x00020000L +#define UVD_FW_STATUS__INVALID_LEN_MASK                                                                       0x00040000L +#define UVD_FW_STATUS__INVALID_0_PADDING_MASK                                                                 0x00080000L +#define UVD_FW_STATUS__INVALID_NONCE_MASK                                                                     0x00100000L +  #endif diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h index a3c238c39ef5..95c656d205ed 100644 --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@ -212,10 +212,15 @@ struct tile_config {   * IH ring entry. This function allows the KFD ISR to get the VMID   * from the fault status register as early as possible.   * - * @get_hive_id: Returns hive id of current  device,  0 if xgmi is not enabled + * @get_cu_occupancy: Function pointer that returns to caller the number + * of wave fronts that are in flight for all of the queues of a process + * as identified by its pasid. It is important to note that the value + * returned by this function is a snapshot of current moment and cannot + * guarantee any minimum for the number of waves in-flight. This function + * is defined for devices that belong to GFX9 and later GFX families. Care + * must be taken in calling this function as it is not defined for devices + * that belong to GFX8 and below GFX families.   * - * @get_unique_id: Returns uuid id of current  device - *    * This structure contains function pointers to services that the kgd driver   * provides to amdkfd driver.   * @@ -226,7 +231,7 @@ struct kfd2kgd_calls {  			uint32_t sh_mem_config,	uint32_t sh_mem_ape1_base,  			uint32_t sh_mem_ape1_limit, uint32_t sh_mem_bases); -	int (*set_pasid_vmid_mapping)(struct kgd_dev *kgd, unsigned int pasid, +	int (*set_pasid_vmid_mapping)(struct kgd_dev *kgd, u32 pasid,  					unsigned int vmid);  	int (*init_interrupts)(struct kgd_dev *kgd, uint32_t pipe_id); @@ -290,9 +295,9 @@ struct kfd2kgd_calls {  	void (*set_vm_context_page_table_base)(struct kgd_dev *kgd,  			uint32_t vmid, uint64_t page_table_base);  	uint32_t (*read_vmid_from_vmfault_reg)(struct kgd_dev *kgd); -	uint64_t (*get_hive_id)(struct kgd_dev *kgd); -	uint64_t (*get_unique_id)(struct kgd_dev *kgd); +	void (*get_cu_occupancy)(struct kgd_dev *kgd, int pasid, int *wave_cnt, +			int *max_waves_per_cu);  };  #endif	/* KGD_KFD_INTERFACE_H_INCLUDED */ diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index a7f92d0b3a90..94132c70d7af 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -281,6 +281,7 @@ struct amd_pm_funcs {  	int (*get_power_limit)(void *handle, uint32_t *limit, bool default_limit);  	int (*get_power_profile_mode)(void *handle, char *buf);  	int (*set_power_profile_mode)(void *handle, long *input, uint32_t size); +	int (*set_fine_grain_clk_vol)(void *handle, uint32_t type, long *input, uint32_t size);  	int (*odn_edit_dpm_table)(void *handle, uint32_t type, long *input, uint32_t size);  	int (*set_mp1_state)(void *handle, enum pp_mp1_state mp1_state);  	int (*smu_i2c_bus_access)(void *handle, bool acquire); @@ -322,6 +323,115 @@ struct amd_pm_funcs {  	int (*asic_reset_mode_2)(void *handle);  	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); +}; + +struct metrics_table_header { +	uint16_t			structure_size; +	uint8_t				format_revision; +	uint8_t				content_revision; +}; + +struct gpu_metrics_v1_0 { +	struct metrics_table_header	common_header; + +	/* Driver attached timestamp (in ns) */ +	uint64_t			system_clock_counter; + +	/* Temperature */ +	uint16_t			temperature_edge; +	uint16_t			temperature_hotspot; +	uint16_t			temperature_mem; +	uint16_t			temperature_vrgfx; +	uint16_t			temperature_vrsoc; +	uint16_t			temperature_vrmem; + +	/* Utilization */ +	uint16_t			average_gfx_activity; +	uint16_t			average_umc_activity; // memory controller +	uint16_t			average_mm_activity; // UVD or VCN + +	/* Power/Energy */ +	uint16_t			average_socket_power; +	uint32_t			energy_accumulator; + +	/* Average clocks */ +	uint16_t			average_gfxclk_frequency; +	uint16_t			average_socclk_frequency; +	uint16_t			average_uclk_frequency; +	uint16_t			average_vclk0_frequency; +	uint16_t			average_dclk0_frequency; +	uint16_t			average_vclk1_frequency; +	uint16_t			average_dclk1_frequency; + +	/* Current clocks */ +	uint16_t			current_gfxclk; +	uint16_t			current_socclk; +	uint16_t			current_uclk; +	uint16_t			current_vclk0; +	uint16_t			current_dclk0; +	uint16_t			current_vclk1; +	uint16_t			current_dclk1; + +	/* Throttle status */ +	uint32_t			throttle_status; + +	/* Fans */ +	uint16_t			current_fan_speed; + +	/* Link width/speed */ +	uint8_t				pcie_link_width; +	uint8_t				pcie_link_speed; // in 0.1 GT/s +}; + +struct gpu_metrics_v2_0 { +	struct metrics_table_header	common_header; + +	/* Driver attached timestamp (in ns) */ +	uint64_t			system_clock_counter; + +	/* Temperature */ +	uint16_t			temperature_gfx; // gfx temperature on APUs +	uint16_t			temperature_soc; // soc temperature on APUs +	uint16_t			temperature_core[8]; // CPU core temperature on APUs +	uint16_t			temperature_l3[2]; + +	/* Utilization */ +	uint16_t			average_gfx_activity; +	uint16_t			average_mm_activity; // UVD or VCN + +	/* Power/Energy */ +	uint16_t			average_socket_power; // dGPU + APU power on A + A platform +	uint16_t			average_cpu_power; +	uint16_t			average_soc_power; +	uint16_t			average_gfx_power; +	uint16_t			average_core_power[8]; // CPU core power on APUs + +	/* Average clocks */ +	uint16_t			average_gfxclk_frequency; +	uint16_t			average_socclk_frequency; +	uint16_t			average_uclk_frequency; +	uint16_t			average_fclk_frequency; +	uint16_t			average_vclk_frequency; +	uint16_t			average_dclk_frequency; + +	/* Current clocks */ +	uint16_t			current_gfxclk; +	uint16_t			current_socclk; +	uint16_t			current_uclk; +	uint16_t			current_fclk; +	uint16_t			current_vclk; +	uint16_t			current_dclk; +	uint16_t			current_coreclk[8]; // CPU core clocks +	uint16_t			current_l3clk[2]; + +	/* Throttle status */ +	uint32_t			throttle_status; + +	/* Fans */ +	uint16_t			fan_pwm; + +	uint16_t			padding;  };  #endif | 
