Am 04.04.2017 um 16:03 schrieb Tom St Denis: > Use new WREG32_FIELD_OFFSET() to clean up code. > > Signed-off-by: Tom St Denis <tom.stdenis at amd.com> Reviewed-by: Christian König <christian.koenig at amd.com> for the whole series. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 +++ > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 40 +++++++++++------------------------ > 2 files changed, 15 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index 86fba1af1cdd..0e746db61a72 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -1730,6 +1730,9 @@ bool amdgpu_device_has_dc_support(struct amdgpu_device *adev); > #define WREG32_FIELD(reg, field, val) \ > 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. > */ > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > index 1f35497089a6..595dc14019dd 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > @@ -6814,40 +6814,24 @@ static int gfx_v8_0_kiq_set_interrupt_state(struct amdgpu_device *adev, > unsigned int type, > enum amdgpu_interrupt_state state) > { > - uint32_t tmp, target; > struct amdgpu_ring *ring = &(adev->gfx.kiq.ring); > > 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) { > case AMDGPU_CP_KIQ_IRQ_DRIVER0: > - if (state == AMDGPU_IRQ_STATE_DISABLE) { > - tmp = RREG32(mmCPC_INT_CNTL); > - tmp = REG_SET_FIELD(tmp, CPC_INT_CNTL, > - GENERIC2_INT_ENABLE, 0); > - WREG32(mmCPC_INT_CNTL, tmp); > - > - tmp = RREG32(target); > - tmp = REG_SET_FIELD(tmp, CP_ME2_PIPE0_INT_CNTL, > - GENERIC2_INT_ENABLE, 0); > - WREG32(target, tmp); > - } else { > - tmp = RREG32(mmCPC_INT_CNTL); > - 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); > - } > + WREG32_FIELD(CPC_INT_CNTL, GENERIC2_INT_ENABLE, > + state == AMDGPU_IRQ_STATE_DISABLE ? 0 : 1); > + if (ring->me == 1) > + WREG32_FIELD_OFFSET(CP_ME1_PIPE0_INT_CNTL, > + ring->pipe, > + GENERIC2_INT_ENABLE, > + state == AMDGPU_IRQ_STATE_DISABLE ? 0 : 1); > + else > + WREG32_FIELD_OFFSET(CP_ME2_PIPE0_INT_CNTL, > + ring->pipe, > + GENERIC2_INT_ENABLE, > + state == AMDGPU_IRQ_STATE_DISABLE ? 0 : 1); > break; > default: > BUG(); /* kiq only support GENERIC2_INT now */