diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c | 29 | 
1 files changed, 28 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c b/drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c index cdc0c9779848..01e8288d09a8 100644 --- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c @@ -58,11 +58,17 @@ static void nbio_v7_7_sdma_doorbell_range(struct amdgpu_device *adev, int instan  					  bool use_doorbell, int doorbell_index,  					  int doorbell_size)  { -	u32 reg = SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_SDMA0_DOORBELL_RANGE); +	u32 reg = SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_CSDMA_DOORBELL_RANGE);  	u32 doorbell_range = RREG32_PCIE_PORT(reg);  	if (use_doorbell) {  		doorbell_range = REG_SET_FIELD(doorbell_range, +					       GDC0_BIF_CSDMA_DOORBELL_RANGE, +					       OFFSET, doorbell_index); +		doorbell_range = REG_SET_FIELD(doorbell_range, +					       GDC0_BIF_CSDMA_DOORBELL_RANGE, +					       SIZE, doorbell_size); +		doorbell_range = REG_SET_FIELD(doorbell_range,  					       GDC0_BIF_SDMA0_DOORBELL_RANGE,  					       OFFSET, doorbell_index);  		doorbell_range = REG_SET_FIELD(doorbell_range, @@ -77,6 +83,26 @@ static void nbio_v7_7_sdma_doorbell_range(struct amdgpu_device *adev, int instan  	WREG32_PCIE_PORT(reg, doorbell_range);  } +static void nbio_v7_7_vcn_doorbell_range(struct amdgpu_device *adev, bool use_doorbell, +					int doorbell_index, int instance) +{ +	u32 reg = SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VCN0_DOORBELL_RANGE); +	u32 doorbell_range = RREG32_PCIE_PORT(reg); + +	if (use_doorbell) { +		doorbell_range = REG_SET_FIELD(doorbell_range, +					       GDC0_BIF_VCN0_DOORBELL_RANGE, OFFSET, +					       doorbell_index); +		doorbell_range = REG_SET_FIELD(doorbell_range, +					       GDC0_BIF_VCN0_DOORBELL_RANGE, SIZE, 8); +	} else { +		doorbell_range = REG_SET_FIELD(doorbell_range, +					       GDC0_BIF_VCN0_DOORBELL_RANGE, SIZE, 0); +	} + +	WREG32_PCIE_PORT(reg, doorbell_range); +} +  static void nbio_v7_7_enable_doorbell_aperture(struct amdgpu_device *adev,  					       bool enable)  { @@ -232,6 +258,7 @@ const struct amdgpu_nbio_funcs nbio_v7_7_funcs = {  	.mc_access_enable = nbio_v7_7_mc_access_enable,  	.get_memsize = nbio_v7_7_get_memsize,  	.sdma_doorbell_range = nbio_v7_7_sdma_doorbell_range, +	.vcn_doorbell_range = nbio_v7_7_vcn_doorbell_range,  	.enable_doorbell_aperture = nbio_v7_7_enable_doorbell_aperture,  	.enable_doorbell_selfring_aperture = nbio_v7_7_enable_doorbell_selfring_aperture,  	.ih_doorbell_range = nbio_v7_7_ih_doorbell_range,  | 
