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.deuc...@amd.com>

Reviewed-by: Christian König <christian.koe...@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;
  }


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to