aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0502-drm-amdgpu-sdma-rename-fiji-cg-functions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0502-drm-amdgpu-sdma-rename-fiji-cg-functions.patch')
-rw-r--r--common/recipes-kernel/linux/files/0502-drm-amdgpu-sdma-rename-fiji-cg-functions.patch165
1 files changed, 165 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0502-drm-amdgpu-sdma-rename-fiji-cg-functions.patch b/common/recipes-kernel/linux/files/0502-drm-amdgpu-sdma-rename-fiji-cg-functions.patch
new file mode 100644
index 00000000..d3205d8c
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0502-drm-amdgpu-sdma-rename-fiji-cg-functions.patch
@@ -0,0 +1,165 @@
+From a85230e4364ad6a1156ad5967b7ef1c68fe29326 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 8 Apr 2016 00:19:39 -0400
+Subject: [PATCH 0502/1110] drm/amdgpu/sdma: rename fiji cg functions
+
+They care common for all sdma 3.0 parts
+
+Acked-by: Tom St Denis <tom.stdenis@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 104 +++++++++++++--------------------
+ 1 file changed, 39 insertions(+), 65 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+index 8727f4a..368a46b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+@@ -1458,40 +1458,31 @@ static int sdma_v3_0_process_illegal_inst_irq(struct amdgpu_device *adev,
+ return 0;
+ }
+
+-static void fiji_update_sdma_medium_grain_clock_gating(
++static void sdma_v3_0_update_sdma_medium_grain_clock_gating(
+ struct amdgpu_device *adev,
+ bool enable)
+ {
+ uint32_t temp, data;
++ int i;
+
+ if (enable && (adev->cg_flags & AMD_CG_SUPPORT_SDMA_MGCG)) {
+- temp = data = RREG32(mmSDMA0_CLK_CTRL);
+- data &= ~(SDMA0_CLK_CTRL__SOFT_OVERRIDE7_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE6_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE5_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE4_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE3_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE2_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE1_MASK |
+- SDMA0_CLK_CTRL__SOFT_OVERRIDE0_MASK);
+- if (data != temp)
+- WREG32(mmSDMA0_CLK_CTRL, data);
+-
+- temp = data = RREG32(mmSDMA1_CLK_CTRL);
+- data &= ~(SDMA1_CLK_CTRL__SOFT_OVERRIDE7_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE6_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE5_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE4_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE3_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE2_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE1_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE0_MASK);
+-
+- if (data != temp)
+- WREG32(mmSDMA1_CLK_CTRL, data);
++ for (i = 0; i < adev->sdma.num_instances; i++) {
++ temp = data = RREG32(mmSDMA0_CLK_CTRL + sdma_offsets[i]);
++ data &= ~(SDMA0_CLK_CTRL__SOFT_OVERRIDE7_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE6_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE5_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE4_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE3_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE2_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE1_MASK |
++ SDMA0_CLK_CTRL__SOFT_OVERRIDE0_MASK);
++ if (data != temp)
++ WREG32(mmSDMA0_CLK_CTRL + sdma_offsets[i], data);
++ }
+ } else {
+- temp = data = RREG32(mmSDMA0_CLK_CTRL);
+- data |= SDMA0_CLK_CTRL__SOFT_OVERRIDE7_MASK |
++ for (i = 0; i < adev->sdma.num_instances; i++) {
++ temp = data = RREG32(mmSDMA0_CLK_CTRL + sdma_offsets[i]);
++ data |= SDMA0_CLK_CTRL__SOFT_OVERRIDE7_MASK |
+ SDMA0_CLK_CTRL__SOFT_OVERRIDE6_MASK |
+ SDMA0_CLK_CTRL__SOFT_OVERRIDE5_MASK |
+ SDMA0_CLK_CTRL__SOFT_OVERRIDE4_MASK |
+@@ -1500,54 +1491,35 @@ static void fiji_update_sdma_medium_grain_clock_gating(
+ SDMA0_CLK_CTRL__SOFT_OVERRIDE1_MASK |
+ SDMA0_CLK_CTRL__SOFT_OVERRIDE0_MASK;
+
+- if (data != temp)
+- WREG32(mmSDMA0_CLK_CTRL, data);
+-
+- temp = data = RREG32(mmSDMA1_CLK_CTRL);
+- data |= SDMA1_CLK_CTRL__SOFT_OVERRIDE7_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE6_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE5_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE4_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE3_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE2_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE1_MASK |
+- SDMA1_CLK_CTRL__SOFT_OVERRIDE0_MASK;
+-
+- if (data != temp)
+- WREG32(mmSDMA1_CLK_CTRL, data);
++ if (data != temp)
++ WREG32(mmSDMA0_CLK_CTRL + sdma_offsets[i], data);
++ }
+ }
+ }
+
+-static void fiji_update_sdma_medium_grain_light_sleep(
++static void sdma_v3_0_update_sdma_medium_grain_light_sleep(
+ struct amdgpu_device *adev,
+ bool enable)
+ {
+ uint32_t temp, data;
++ int i;
+
+ if (enable && (adev->cg_flags & AMD_CG_SUPPORT_SDMA_LS)) {
+- temp = data = RREG32(mmSDMA0_POWER_CNTL);
+- data |= SDMA0_POWER_CNTL__MEM_POWER_OVERRIDE_MASK;
+-
+- if (temp != data)
+- WREG32(mmSDMA0_POWER_CNTL, data);
+-
+- temp = data = RREG32(mmSDMA1_POWER_CNTL);
+- data |= SDMA1_POWER_CNTL__MEM_POWER_OVERRIDE_MASK;
++ for (i = 0; i < adev->sdma.num_instances; i++) {
++ temp = data = RREG32(mmSDMA0_POWER_CNTL + sdma_offsets[i]);
++ data |= SDMA0_POWER_CNTL__MEM_POWER_OVERRIDE_MASK;
+
+- if (temp != data)
+- WREG32(mmSDMA1_POWER_CNTL, data);
++ if (temp != data)
++ WREG32(mmSDMA0_POWER_CNTL + sdma_offsets[i], data);
++ }
+ } else {
+- temp = data = RREG32(mmSDMA0_POWER_CNTL);
+- data &= ~SDMA0_POWER_CNTL__MEM_POWER_OVERRIDE_MASK;
+-
+- if (temp != data)
+- WREG32(mmSDMA0_POWER_CNTL, data);
+-
+- temp = data = RREG32(mmSDMA1_POWER_CNTL);
+- data &= ~SDMA1_POWER_CNTL__MEM_POWER_OVERRIDE_MASK;
++ for (i = 0; i < adev->sdma.num_instances; i++) {
++ temp = data = RREG32(mmSDMA0_POWER_CNTL + sdma_offsets[i]);
++ data &= ~SDMA0_POWER_CNTL__MEM_POWER_OVERRIDE_MASK;
+
+- if (temp != data)
+- WREG32(mmSDMA1_POWER_CNTL, data);
++ if (temp != data)
++ WREG32(mmSDMA0_POWER_CNTL + sdma_offsets[i], data);
++ }
+ }
+ }
+
+@@ -1558,9 +1530,11 @@ static int sdma_v3_0_set_clockgating_state(void *handle,
+
+ switch (adev->asic_type) {
+ case CHIP_FIJI:
+- fiji_update_sdma_medium_grain_clock_gating(adev,
++ case CHIP_CARRIZO:
++ case CHIP_STONEY:
++ sdma_v3_0_update_sdma_medium_grain_clock_gating(adev,
+ state == AMD_CG_STATE_GATE ? true : false);
+- fiji_update_sdma_medium_grain_light_sleep(adev,
++ sdma_v3_0_update_sdma_medium_grain_light_sleep(adev,
+ state == AMD_CG_STATE_GATE ? true : false);
+ break;
+ default:
+--
+2.7.4
+