Commit ccaf3574 authored by Tom St Denis's avatar Tom St Denis Committed by Alex Deucher

drm/amd/amdgpu: Clean up gfx_v8_0_kiq_set_interrupt_state()

Use new WREG32_FIELD_OFFSET() to clean up code.
Signed-off-by: default avatarTom St Denis <tom.stdenis@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent fcf17a43
...@@ -1701,6 +1701,9 @@ void amdgpu_mm_wdoorbell64(struct amdgpu_device *adev, u32 index, u64 v); ...@@ -1701,6 +1701,9 @@ void amdgpu_mm_wdoorbell64(struct amdgpu_device *adev, u32 index, u64 v);
#define WREG32_FIELD(reg, field, val) \ #define WREG32_FIELD(reg, field, val) \
WREG32(mm##reg, (RREG32(mm##reg) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field)) WREG32(mm##reg, (RREG32(mm##reg) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field))
#define WREG32_FIELD_OFFSET(reg, offset, field, val) \
WREG32(mm##reg + offset, (RREG32(mm##reg + offset) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field))
/* /*
* BIOS helpers. * BIOS helpers.
*/ */
......
...@@ -6987,40 +6987,24 @@ static int gfx_v8_0_kiq_set_interrupt_state(struct amdgpu_device *adev, ...@@ -6987,40 +6987,24 @@ static int gfx_v8_0_kiq_set_interrupt_state(struct amdgpu_device *adev,
unsigned int type, unsigned int type,
enum amdgpu_interrupt_state state) enum amdgpu_interrupt_state state)
{ {
uint32_t tmp, target;
struct amdgpu_ring *ring = &(adev->gfx.kiq.ring); struct amdgpu_ring *ring = &(adev->gfx.kiq.ring);
BUG_ON(ring->funcs->type != AMDGPU_RING_TYPE_KIQ); BUG_ON(ring->funcs->type != AMDGPU_RING_TYPE_KIQ);
if (ring->me == 1)
target = mmCP_ME1_PIPE0_INT_CNTL;
else
target = mmCP_ME2_PIPE0_INT_CNTL;
target += ring->pipe;
switch (type) { switch (type) {
case AMDGPU_CP_KIQ_IRQ_DRIVER0: case AMDGPU_CP_KIQ_IRQ_DRIVER0:
if (state == AMDGPU_IRQ_STATE_DISABLE) { WREG32_FIELD(CPC_INT_CNTL, GENERIC2_INT_ENABLE,
tmp = RREG32(mmCPC_INT_CNTL); state == AMDGPU_IRQ_STATE_DISABLE ? 0 : 1);
tmp = REG_SET_FIELD(tmp, CPC_INT_CNTL, if (ring->me == 1)
GENERIC2_INT_ENABLE, 0); WREG32_FIELD_OFFSET(CP_ME1_PIPE0_INT_CNTL,
WREG32(mmCPC_INT_CNTL, tmp); ring->pipe,
GENERIC2_INT_ENABLE,
tmp = RREG32(target); state == AMDGPU_IRQ_STATE_DISABLE ? 0 : 1);
tmp = REG_SET_FIELD(tmp, CP_ME2_PIPE0_INT_CNTL, else
GENERIC2_INT_ENABLE, 0); WREG32_FIELD_OFFSET(CP_ME2_PIPE0_INT_CNTL,
WREG32(target, tmp); ring->pipe,
} else { GENERIC2_INT_ENABLE,
tmp = RREG32(mmCPC_INT_CNTL); state == AMDGPU_IRQ_STATE_DISABLE ? 0 : 1);
tmp = REG_SET_FIELD(tmp, CPC_INT_CNTL,
GENERIC2_INT_ENABLE, 1);
WREG32(mmCPC_INT_CNTL, tmp);
tmp = RREG32(target);
tmp = REG_SET_FIELD(tmp, CP_ME2_PIPE0_INT_CNTL,
GENERIC2_INT_ENABLE, 1);
WREG32(target, tmp);
}
break; break;
default: default:
BUG(); /* kiq only support GENERIC2_INT now */ BUG(); /* kiq only support GENERIC2_INT now */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment