diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/soc15_common.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/soc15_common.h | 66 | 
1 files changed, 33 insertions, 33 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/soc15_common.h b/drivers/gpu/drm/amd/amdgpu/soc15_common.h index 96948a59f8dd..da683afa0222 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc15_common.h +++ b/drivers/gpu/drm/amd/amdgpu/soc15_common.h @@ -37,65 +37,65 @@  #define SOC15_REG_OFFSET1(ip, inst, reg, offset) \  	(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + (reg)+(offset)) -#define __WREG32_SOC15_RLC__(reg, value, flag, hwip) \ +#define __WREG32_SOC15_RLC__(reg, value, flag, hwip, inst) \  	((amdgpu_sriov_vf(adev) && adev->gfx.rlc.funcs && adev->gfx.rlc.rlcg_reg_access_supported) ? \ -	 amdgpu_sriov_wreg(adev, reg, value, flag, hwip) : \ +	 amdgpu_sriov_wreg(adev, reg, value, flag, hwip, inst) : \  	 WREG32(reg, value)) -#define __RREG32_SOC15_RLC__(reg, flag, hwip) \ +#define __RREG32_SOC15_RLC__(reg, flag, hwip, inst) \  	((amdgpu_sriov_vf(adev) && adev->gfx.rlc.funcs && adev->gfx.rlc.rlcg_reg_access_supported) ? \ -	 amdgpu_sriov_rreg(adev, reg, flag, hwip) : \ +	 amdgpu_sriov_rreg(adev, reg, flag, hwip, inst) : \  	 RREG32(reg))  #define WREG32_FIELD15(ip, idx, reg, field, val)	\  	 __WREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][idx][mm##reg##_BASE_IDX] + mm##reg,	\  				(__RREG32_SOC15_RLC__( \  					adev->reg_offset[ip##_HWIP][idx][mm##reg##_BASE_IDX] + mm##reg, \ -					0, ip##_HWIP) & \ +					0, ip##_HWIP, idx) & \  				~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field), \ -			      0, ip##_HWIP) +			      0, ip##_HWIP, idx)  #define WREG32_FIELD15_PREREG(ip, idx, reg_name, field, val)        \  	__WREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][idx][reg##reg_name##_BASE_IDX] + reg##reg_name,   \  			(__RREG32_SOC15_RLC__( \  					adev->reg_offset[ip##_HWIP][idx][reg##reg_name##_BASE_IDX] + reg##reg_name, \ -					0, ip##_HWIP) & \ +					0, ip##_HWIP, idx) & \  					~REG_FIELD_MASK(reg_name, field)) | (val) << REG_FIELD_SHIFT(reg_name, field), \ -			0, ip##_HWIP) +			0, ip##_HWIP, idx)  #define RREG32_SOC15(ip, inst, reg) \  	__RREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg, \ -			 0, ip##_HWIP) +			 0, ip##_HWIP, inst) -#define RREG32_SOC15_IP(ip, reg) __RREG32_SOC15_RLC__(reg, 0, ip##_HWIP) +#define RREG32_SOC15_IP(ip, reg) __RREG32_SOC15_RLC__(reg, 0, ip##_HWIP, 0) -#define RREG32_SOC15_IP_NO_KIQ(ip, reg) __RREG32_SOC15_RLC__(reg, AMDGPU_REGS_NO_KIQ, ip##_HWIP) +#define RREG32_SOC15_IP_NO_KIQ(ip, reg) __RREG32_SOC15_RLC__(reg, AMDGPU_REGS_NO_KIQ, ip##_HWIP, 0)  #define RREG32_SOC15_NO_KIQ(ip, inst, reg) \  	__RREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg, \ -			 AMDGPU_REGS_NO_KIQ, ip##_HWIP) +			 AMDGPU_REGS_NO_KIQ, ip##_HWIP, inst)  #define RREG32_SOC15_OFFSET(ip, inst, reg, offset) \  	 __RREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + (reg)) + \ -			 (offset), 0, ip##_HWIP) +			 (offset), 0, ip##_HWIP, inst)  #define WREG32_SOC15(ip, inst, reg, value) \  	 __WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg), \ -			  value, 0, ip##_HWIP) +			  value, 0, ip##_HWIP, inst)  #define WREG32_SOC15_IP(ip, reg, value) \ -	 __WREG32_SOC15_RLC__(reg, value, 0, ip##_HWIP) +	 __WREG32_SOC15_RLC__(reg, value, 0, ip##_HWIP, 0)  #define WREG32_SOC15_IP_NO_KIQ(ip, reg, value) \ -	 __WREG32_SOC15_RLC__(reg, value, AMDGPU_REGS_NO_KIQ, ip##_HWIP) +	 __WREG32_SOC15_RLC__(reg, value, AMDGPU_REGS_NO_KIQ, ip##_HWIP, 0)  #define WREG32_SOC15_NO_KIQ(ip, inst, reg, value) \  	__WREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg, \ -			     value, AMDGPU_REGS_NO_KIQ, ip##_HWIP) +			     value, AMDGPU_REGS_NO_KIQ, ip##_HWIP, inst)  #define WREG32_SOC15_OFFSET(ip, inst, reg, offset, value) \  	 __WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + offset, \ -			  value, 0, ip##_HWIP) +			  value, 0, ip##_HWIP, inst)  #define SOC15_WAIT_ON_RREG(ip, inst, reg, expected_value, mask)      \  	amdgpu_device_wait_on_rreg(adev, inst,                       \ @@ -108,16 +108,16 @@  	#reg, expected_value, mask)  #define WREG32_RLC(reg, value) \ -	__WREG32_SOC15_RLC__(reg, value, AMDGPU_REGS_RLC, GC_HWIP) +	__WREG32_SOC15_RLC__(reg, value, AMDGPU_REGS_RLC, GC_HWIP, 0) -#define WREG32_RLC_EX(prefix, reg, value) \ +#define WREG32_RLC_EX(prefix, reg, value, inst) \  	do {							\  		if (amdgpu_sriov_fullaccess(adev)) {    \  			uint32_t i = 0;	\  			uint32_t retries = 50000;	\ -			uint32_t r0 = adev->reg_offset[GC_HWIP][0][prefix##SCRATCH_REG0_BASE_IDX] + prefix##SCRATCH_REG0;	\ -			uint32_t r1 = adev->reg_offset[GC_HWIP][0][prefix##SCRATCH_REG1_BASE_IDX] + prefix##SCRATCH_REG1;	\ -			uint32_t spare_int = adev->reg_offset[GC_HWIP][0][prefix##RLC_SPARE_INT_BASE_IDX] + prefix##RLC_SPARE_INT;	\ +			uint32_t r0 = adev->reg_offset[GC_HWIP][inst][prefix##SCRATCH_REG0_BASE_IDX] + prefix##SCRATCH_REG0;	\ +			uint32_t r1 = adev->reg_offset[GC_HWIP][inst][prefix##SCRATCH_REG1_BASE_IDX] + prefix##SCRATCH_REG1;	\ +			uint32_t spare_int = adev->reg_offset[GC_HWIP][inst][prefix##RLC_SPARE_INT_BASE_IDX] + prefix##RLC_SPARE_INT;	\  			WREG32(r0, value);	\  			WREG32(r1, (reg | 0x80000000));	\  			WREG32(spare_int, 0x1);	\ @@ -136,17 +136,17 @@  /* shadow the registers in the callback function */  #define WREG32_SOC15_RLC_SHADOW(ip, inst, reg, value) \ -	__WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg), value, AMDGPU_REGS_RLC, GC_HWIP) +	__WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg), value, AMDGPU_REGS_RLC, GC_HWIP, inst)  /* for GC only */  #define RREG32_RLC(reg) \  	__RREG32_SOC15_RLC__(reg, AMDGPU_REGS_RLC, GC_HWIP)  #define WREG32_RLC_NO_KIQ(reg, value, hwip) \ -	__WREG32_SOC15_RLC__(reg, value, AMDGPU_REGS_NO_KIQ | AMDGPU_REGS_RLC, hwip) +	__WREG32_SOC15_RLC__(reg, value, AMDGPU_REGS_NO_KIQ | AMDGPU_REGS_RLC, hwip, 0)  #define RREG32_RLC_NO_KIQ(reg, hwip) \ -	__RREG32_SOC15_RLC__(reg, AMDGPU_REGS_NO_KIQ | AMDGPU_REGS_RLC, hwip) +	__RREG32_SOC15_RLC__(reg, AMDGPU_REGS_NO_KIQ | AMDGPU_REGS_RLC, hwip, 0)  #define WREG32_SOC15_RLC_SHADOW_EX(prefix, ip, inst, reg, value) \  	do {							\ @@ -167,32 +167,32 @@  	} while (0)  #define RREG32_SOC15_RLC(ip, inst, reg) \ -	__RREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg, AMDGPU_REGS_RLC, ip##_HWIP) +	__RREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg, AMDGPU_REGS_RLC, ip##_HWIP, inst)  #define WREG32_SOC15_RLC(ip, inst, reg, value) \  	do {							\  		uint32_t target_reg = adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg;\ -		__WREG32_SOC15_RLC__(target_reg, value, AMDGPU_REGS_RLC, ip##_HWIP); \ +		__WREG32_SOC15_RLC__(target_reg, value, AMDGPU_REGS_RLC, ip##_HWIP, inst); \  	} while (0)  #define WREG32_SOC15_RLC_EX(prefix, ip, inst, reg, value) \  	do {							\  			uint32_t target_reg = adev->reg_offset[GC_HWIP][inst][reg##_BASE_IDX] + reg;\ -			WREG32_RLC_EX(prefix, target_reg, value); \ +			WREG32_RLC_EX(prefix, target_reg, value, inst); \  	} while (0)  #define WREG32_FIELD15_RLC(ip, idx, reg, field, val)   \  	__WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][idx][mm##reg##_BASE_IDX] + mm##reg), \  			     (__RREG32_SOC15_RLC__(adev->reg_offset[ip##_HWIP][idx][mm##reg##_BASE_IDX] + mm##reg, \ -						   AMDGPU_REGS_RLC, ip##_HWIP) & \ +						   AMDGPU_REGS_RLC, ip##_HWIP, idx) & \  			      ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field), \ -			     AMDGPU_REGS_RLC, ip##_HWIP) +			     AMDGPU_REGS_RLC, ip##_HWIP, idx)  #define WREG32_SOC15_OFFSET_RLC(ip, inst, reg, offset, value) \ -	__WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + offset, value, AMDGPU_REGS_RLC, ip##_HWIP) +	__WREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + offset, value, AMDGPU_REGS_RLC, ip##_HWIP, inst)  #define RREG32_SOC15_OFFSET_RLC(ip, inst, reg, offset) \ -	__RREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + offset, AMDGPU_REGS_RLC, ip##_HWIP) +	__RREG32_SOC15_RLC__((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + offset, AMDGPU_REGS_RLC, ip##_HWIP, inst)  /* inst equals to ext for some IPs */  #define RREG32_SOC15_EXT(ip, inst, reg, ext) \ | 
