drm/amd/amdgpu: Add gpr reading for GFX v7
Signed-off-by: Tom St Denis <tom.stdenis@amd.com> Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
34e646f444
commit
cc3f5b8df9
|
@ -4380,6 +4380,21 @@ static uint32_t wave_read_ind(struct amdgpu_device *adev, uint32_t simd, uint32_
|
||||||
return RREG32(mmSQ_IND_DATA);
|
return RREG32(mmSQ_IND_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wave_read_regs(struct amdgpu_device *adev, uint32_t simd,
|
||||||
|
uint32_t wave, uint32_t thread,
|
||||||
|
uint32_t regno, uint32_t num, uint32_t *out)
|
||||||
|
{
|
||||||
|
WREG32(mmSQ_IND_INDEX,
|
||||||
|
(wave << SQ_IND_INDEX__WAVE_ID__SHIFT) |
|
||||||
|
(simd << SQ_IND_INDEX__SIMD_ID__SHIFT) |
|
||||||
|
(regno << SQ_IND_INDEX__INDEX__SHIFT) |
|
||||||
|
(thread << SQ_IND_INDEX__THREAD_ID__SHIFT) |
|
||||||
|
(SQ_IND_INDEX__FORCE_READ_MASK) |
|
||||||
|
(SQ_IND_INDEX__AUTO_INCR_MASK));
|
||||||
|
while (num--)
|
||||||
|
*(out++) = RREG32(mmSQ_IND_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
static void gfx_v7_0_read_wave_data(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t *dst, int *no_fields)
|
static void gfx_v7_0_read_wave_data(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t *dst, int *no_fields)
|
||||||
{
|
{
|
||||||
/* type 0 wave data */
|
/* type 0 wave data */
|
||||||
|
@ -4404,10 +4419,20 @@ static void gfx_v7_0_read_wave_data(struct amdgpu_device *adev, uint32_t simd, u
|
||||||
dst[(*no_fields)++] = wave_read_ind(adev, simd, wave, ixSQ_WAVE_M0);
|
dst[(*no_fields)++] = wave_read_ind(adev, simd, wave, ixSQ_WAVE_M0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gfx_v7_0_read_wave_sgprs(struct amdgpu_device *adev, uint32_t simd,
|
||||||
|
uint32_t wave, uint32_t start,
|
||||||
|
uint32_t size, uint32_t *dst)
|
||||||
|
{
|
||||||
|
wave_read_regs(
|
||||||
|
adev, simd, wave, 0,
|
||||||
|
start + SQIND_WAVE_SGPRS_OFFSET, size, dst);
|
||||||
|
}
|
||||||
|
|
||||||
static const struct amdgpu_gfx_funcs gfx_v7_0_gfx_funcs = {
|
static const struct amdgpu_gfx_funcs gfx_v7_0_gfx_funcs = {
|
||||||
.get_gpu_clock_counter = &gfx_v7_0_get_gpu_clock_counter,
|
.get_gpu_clock_counter = &gfx_v7_0_get_gpu_clock_counter,
|
||||||
.select_se_sh = &gfx_v7_0_select_se_sh,
|
.select_se_sh = &gfx_v7_0_select_se_sh,
|
||||||
.read_wave_data = &gfx_v7_0_read_wave_data,
|
.read_wave_data = &gfx_v7_0_read_wave_data,
|
||||||
|
.read_wave_sgprs = &gfx_v7_0_read_wave_sgprs,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct amdgpu_rlc_funcs gfx_v7_0_rlc_funcs = {
|
static const struct amdgpu_rlc_funcs gfx_v7_0_rlc_funcs = {
|
||||||
|
|
Loading…
Reference in New Issue