drm/amdgpu: add optional ring to *_hdp callbacks
This adds an optional ring to the invalidate_hdp and flush_hdp callbacks. If the ring isn't specified or the emit_wreg function not available the HDP operation will be done with the CPU otherwise by writing on the ring. Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
3c9d1fde7f
commit
698825653f
@@ -856,16 +856,25 @@ static uint32_t vi_get_rev_id(struct amdgpu_device *adev)
|
||||
>> PCIE_EFUSE4__STRAP_BIF_ATI_REV_ID__SHIFT;
|
||||
}
|
||||
|
||||
static void vi_flush_hdp(struct amdgpu_device *adev)
|
||||
static void vi_flush_hdp(struct amdgpu_device *adev, struct amdgpu_ring *ring)
|
||||
{
|
||||
WREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 1);
|
||||
RREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL);
|
||||
if (!ring || !ring->funcs->emit_wreg) {
|
||||
WREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 1);
|
||||
RREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL);
|
||||
} else {
|
||||
amdgpu_ring_emit_wreg(ring, mmHDP_MEM_COHERENCY_FLUSH_CNTL, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void vi_invalidate_hdp(struct amdgpu_device *adev)
|
||||
static void vi_invalidate_hdp(struct amdgpu_device *adev,
|
||||
struct amdgpu_ring *ring)
|
||||
{
|
||||
WREG32(mmHDP_DEBUG0, 1);
|
||||
RREG32(mmHDP_DEBUG0);
|
||||
if (!ring || !ring->funcs->emit_wreg) {
|
||||
WREG32(mmHDP_DEBUG0, 1);
|
||||
RREG32(mmHDP_DEBUG0);
|
||||
} else {
|
||||
amdgpu_ring_emit_wreg(ring, mmHDP_DEBUG0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct amdgpu_asic_funcs vi_asic_funcs =
|
||||
|
Reference in New Issue
Block a user