Am 21.10.2016 um 21:46 schrieb Alex Deucher: > Move from asic specific code to common atom code. > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com> Reviewed-by: Christian König <christian.koenig at amd.com>. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 13 +++++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h | 2 ++ > drivers/gpu/drm/amd/amdgpu/cik.c | 17 +++-------------- > drivers/gpu/drm/amd/amdgpu/vi.c | 16 ++-------------- > 4 files changed, 20 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > index 8e6bf54..76cbb1d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > @@ -1784,6 +1784,19 @@ void amdgpu_atombios_scratch_regs_restore(struct amdgpu_device *adev) > WREG32(mmBIOS_SCRATCH_0 + i, adev->bios_scratch[i]); > } > > +void amdgpu_atombios_scratch_regs_engine_hung(struct amdgpu_device *adev, > + bool hung) > +{ > + u32 tmp = RREG32(mmBIOS_SCRATCH_3); > + > + if (hung) > + tmp |= ATOM_S3_ASIC_GUI_ENGINE_HUNG; > + else > + tmp &= ~ATOM_S3_ASIC_GUI_ENGINE_HUNG; > + > + WREG32(mmBIOS_SCRATCH_3, tmp); > +} > + > /* Atom needs data in little endian format > * so swap as appropriate when copying data to > * or from atom. Note that atom operates on > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h > index 1735615..e4afb16 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h > @@ -206,6 +206,8 @@ void amdgpu_atombios_scratch_regs_lock(struct amdgpu_device *adev, bool lock); > void amdgpu_atombios_scratch_regs_init(struct amdgpu_device *adev); > void amdgpu_atombios_scratch_regs_save(struct amdgpu_device *adev); > void amdgpu_atombios_scratch_regs_restore(struct amdgpu_device *adev); > +void amdgpu_atombios_scratch_regs_engine_hung(struct amdgpu_device *adev, > + bool hung); > > void amdgpu_atombios_copy_swap(u8 *dst, u8 *src, u8 num_bytes, bool to_le); > int amdgpu_atombios_get_max_vddc(struct amdgpu_device *adev, u8 voltage_type, > diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c > index 1b70f8fa..302df85 100644 > --- a/drivers/gpu/drm/amd/amdgpu/cik.c > +++ b/drivers/gpu/drm/amd/amdgpu/cik.c > @@ -1189,18 +1189,6 @@ static int cik_gpu_pci_config_reset(struct amdgpu_device *adev) > return r; > } > > -static void cik_set_bios_scratch_engine_hung(struct amdgpu_device *adev, bool hung) > -{ > - u32 tmp = RREG32(mmBIOS_SCRATCH_3); > - > - if (hung) > - tmp |= ATOM_S3_ASIC_GUI_ENGINE_HUNG; > - else > - tmp &= ~ATOM_S3_ASIC_GUI_ENGINE_HUNG; > - > - WREG32(mmBIOS_SCRATCH_3, tmp); > -} > - > /** > * cik_asic_reset - soft reset GPU > * > @@ -1213,11 +1201,12 @@ static void cik_set_bios_scratch_engine_hung(struct amdgpu_device *adev, bool hu > static int cik_asic_reset(struct amdgpu_device *adev) > { > int r; > - cik_set_bios_scratch_engine_hung(adev, true); > + > + amdgpu_atombios_scratch_regs_engine_hung(adev, true); > > r = cik_gpu_pci_config_reset(adev); > > - cik_set_bios_scratch_engine_hung(adev, false); > + amdgpu_atombios_scratch_regs_engine_hung(adev, false); > > return r; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c > index b2a1cf4..52d0a83 100644 > --- a/drivers/gpu/drm/amd/amdgpu/vi.c > +++ b/drivers/gpu/drm/amd/amdgpu/vi.c > @@ -729,18 +729,6 @@ static int vi_gpu_pci_config_reset(struct amdgpu_device *adev) > return -EINVAL; > } > > -static void vi_set_bios_scratch_engine_hung(struct amdgpu_device *adev, bool hung) > -{ > - u32 tmp = RREG32(mmBIOS_SCRATCH_3); > - > - if (hung) > - tmp |= ATOM_S3_ASIC_GUI_ENGINE_HUNG; > - else > - tmp &= ~ATOM_S3_ASIC_GUI_ENGINE_HUNG; > - > - WREG32(mmBIOS_SCRATCH_3, tmp); > -} > - > /** > * vi_asic_reset - soft reset GPU > * > @@ -754,11 +742,11 @@ static int vi_asic_reset(struct amdgpu_device *adev) > { > int r; > > - vi_set_bios_scratch_engine_hung(adev, true); > + amdgpu_atombios_scratch_regs_engine_hung(adev, true); > > r = vi_gpu_pci_config_reset(adev); > > - vi_set_bios_scratch_engine_hung(adev, false); > + amdgpu_atombios_scratch_regs_engine_hung(adev, false); > > return r; > }