All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] drm/amd/powerplay: added index gc cac read/write apis for vega10
@ 2017-07-07  1:59 Evan Quan
       [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Evan Quan @ 2017-07-07  1:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, Evan Quan

Change-Id: I1a62db8c764d368e6ba08440ad1761adb55d85fd
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/soc15.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
index f5669af..c0a5250 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
@@ -196,6 +196,28 @@ static void soc15_didt_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
 	spin_unlock_irqrestore(&adev->didt_idx_lock, flags);
 }
 
+static u32 soc15_gc_cac_rreg(struct amdgpu_device *adev, u32 reg)
+{
+	unsigned long flags;
+	u32 r;
+
+	spin_lock_irqsave(&adev->gc_cac_idx_lock, flags);
+	WREG32_SOC15(GC, 0, mmGC_CAC_IND_INDEX, (reg));
+	r = RREG32_SOC15(GC, 0, mmGC_CAC_IND_DATA);
+	spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags);
+	return r;
+}
+
+static void soc15_gc_cac_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&adev->gc_cac_idx_lock, flags);
+	WREG32_SOC15(GC, 0, mmGC_CAC_IND_INDEX, (reg));
+	WREG32_SOC15(GC, 0, mmGC_CAC_IND_DATA, (v));
+	spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags);
+}
+
 static u32 soc15_get_config_memsize(struct amdgpu_device *adev)
 {
 	if (adev->flags & AMD_IS_APU)
@@ -567,6 +589,8 @@ static int soc15_common_early_init(void *handle)
 	adev->uvd_ctx_wreg = &soc15_uvd_ctx_wreg;
 	adev->didt_rreg = &soc15_didt_rreg;
 	adev->didt_wreg = &soc15_didt_wreg;
+	adev->gc_cac_rreg = &soc15_gc_cac_rreg;
+	adev->gc_cac_wreg = &soc15_gc_cac_wreg;
 
 	adev->asic_funcs = &soc15_asic_funcs;
 
-- 
2.7.4

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] drm/amd/powerplay: added new se_cac_idx r/w APIs v2 - v2: added missing spinlock init
       [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
@ 2017-07-07  1:59   ` Evan Quan
  2017-07-07  1:59   ` [PATCH 3/6] drm/amd/powerplay: added soc15 support for new se_cac_idx APIs Evan Quan
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Evan Quan @ 2017-07-07  1:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, Evan Quan

Change-Id: I9f16ec9f5bab9abe83e9df01609893b38bb691fe
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h        | 6 ++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 +
 2 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index fdf6599..6a5021f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -1562,6 +1562,10 @@ struct amdgpu_device {
 	spinlock_t gc_cac_idx_lock;
 	amdgpu_rreg_t			gc_cac_rreg;
 	amdgpu_wreg_t			gc_cac_wreg;
+	/* protects concurrent se_cac register access */
+	spinlock_t se_cac_idx_lock;
+	amdgpu_rreg_t			se_cac_rreg;
+	amdgpu_wreg_t			se_cac_wreg;
 	/* protects concurrent ENDPOINT (audio) register access */
 	spinlock_t audio_endpt_idx_lock;
 	amdgpu_block_rreg_t		audio_endpt_rreg;
@@ -1756,6 +1760,8 @@ bool amdgpu_device_has_dc_support(struct amdgpu_device *adev);
 #define WREG32_DIDT(reg, v) adev->didt_wreg(adev, (reg), (v))
 #define RREG32_GC_CAC(reg) adev->gc_cac_rreg(adev, (reg))
 #define WREG32_GC_CAC(reg, v) adev->gc_cac_wreg(adev, (reg), (v))
+#define RREG32_SE_CAC(reg) adev->se_cac_rreg(adev, (reg))
+#define WREG32_SE_CAC(reg, v) adev->se_cac_wreg(adev, (reg), (v))
 #define RREG32_AUDIO_ENDPT(block, reg) adev->audio_endpt_rreg(adev, (block), (reg))
 #define WREG32_AUDIO_ENDPT(block, reg, v) adev->audio_endpt_wreg(adev, (block), (reg), (v))
 #define WREG32_P(reg, val, mask)				\
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 7233800..1392f44 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2119,6 +2119,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
 	spin_lock_init(&adev->uvd_ctx_idx_lock);
 	spin_lock_init(&adev->didt_idx_lock);
 	spin_lock_init(&adev->gc_cac_idx_lock);
+	spin_lock_init(&adev->se_cac_idx_lock);
 	spin_lock_init(&adev->audio_endpt_idx_lock);
 	spin_lock_init(&adev->mm_stats.lock);
 
-- 
2.7.4

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] drm/amd/powerplay: added soc15 support for new se_cac_idx APIs
       [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
  2017-07-07  1:59   ` [PATCH 2/6] drm/amd/powerplay: added new se_cac_idx r/w APIs v2 - v2: added missing spinlock init Evan Quan
@ 2017-07-07  1:59   ` Evan Quan
  2017-07-07  1:59   ` [PATCH 4/6] drm/amd/powerplay: added support for new se_cac_idx APIs to cgs Evan Quan
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Evan Quan @ 2017-07-07  1:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, Evan Quan

Change-Id: I9b925397d7ac61bcf9f0e8850f2d8b3dabd4a105
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/soc15.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
index c0a5250..9cf7fb4 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
@@ -218,6 +218,28 @@ static void soc15_gc_cac_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
 	spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags);
 }
 
+static u32 soc15_se_cac_rreg(struct amdgpu_device *adev, u32 reg)
+{
+	unsigned long flags;
+	u32 r;
+
+	spin_lock_irqsave(&adev->se_cac_idx_lock, flags);
+	WREG32_SOC15(GC, 0, mmSE_CAC_IND_INDEX, (reg));
+	r = RREG32_SOC15(GC, 0, mmSE_CAC_IND_DATA);
+	spin_unlock_irqrestore(&adev->se_cac_idx_lock, flags);
+	return r;
+}
+
+static void soc15_se_cac_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&adev->se_cac_idx_lock, flags);
+	WREG32_SOC15(GC, 0, mmSE_CAC_IND_INDEX, (reg));
+	WREG32_SOC15(GC, 0, mmSE_CAC_IND_DATA, (v));
+	spin_unlock_irqrestore(&adev->se_cac_idx_lock, flags);
+}
+
 static u32 soc15_get_config_memsize(struct amdgpu_device *adev)
 {
 	if (adev->flags & AMD_IS_APU)
@@ -591,6 +613,8 @@ static int soc15_common_early_init(void *handle)
 	adev->didt_wreg = &soc15_didt_wreg;
 	adev->gc_cac_rreg = &soc15_gc_cac_rreg;
 	adev->gc_cac_wreg = &soc15_gc_cac_wreg;
+	adev->se_cac_rreg = &soc15_se_cac_rreg;
+	adev->se_cac_wreg = &soc15_se_cac_wreg;
 
 	adev->asic_funcs = &soc15_asic_funcs;
 
-- 
2.7.4

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] drm/amd/powerplay: added support for new se_cac_idx APIs to cgs
       [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
  2017-07-07  1:59   ` [PATCH 2/6] drm/amd/powerplay: added new se_cac_idx r/w APIs v2 - v2: added missing spinlock init Evan Quan
  2017-07-07  1:59   ` [PATCH 3/6] drm/amd/powerplay: added soc15 support for new se_cac_idx APIs Evan Quan
@ 2017-07-07  1:59   ` Evan Quan
  2017-07-07  1:59   ` [PATCH 5/6] drm/amd/powerplay: added grbm_idx_mutex lock/unlock to cgs v2 - v2: rename param 'en' as 'lock' Evan Quan
  2017-07-07  1:59   ` [PATCH 6/6] drm/amd/powerplay: added didt support for vega10 Evan Quan
  4 siblings, 0 replies; 7+ messages in thread
From: Evan Quan @ 2017-07-07  1:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, Evan Quan

Change-Id: If2ac93808d1922fe3dbec64a58f674a9c342088d
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c  | 4 ++++
 drivers/gpu/drm/amd/include/cgs_common.h | 1 +
 2 files changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index 02b469b..8016f90 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -240,6 +240,8 @@ static uint32_t amdgpu_cgs_read_ind_register(struct cgs_device *cgs_device,
 		return RREG32_DIDT(index);
 	case CGS_IND_REG_GC_CAC:
 		return RREG32_GC_CAC(index);
+	case CGS_IND_REG_SE_CAC:
+		return RREG32_SE_CAC(index);
 	case CGS_IND_REG__AUDIO_ENDPT:
 		DRM_ERROR("audio endpt register access not implemented.\n");
 		return 0;
@@ -266,6 +268,8 @@ static void amdgpu_cgs_write_ind_register(struct cgs_device *cgs_device,
 		return WREG32_DIDT(index, value);
 	case CGS_IND_REG_GC_CAC:
 		return WREG32_GC_CAC(index, value);
+	case CGS_IND_REG_SE_CAC:
+		return WREG32_SE_CAC(index, value);
 	case CGS_IND_REG__AUDIO_ENDPT:
 		DRM_ERROR("audio endpt register access not implemented.\n");
 		return;
diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h
index 0a94f74..b46d12d 100644
--- a/drivers/gpu/drm/amd/include/cgs_common.h
+++ b/drivers/gpu/drm/amd/include/cgs_common.h
@@ -50,6 +50,7 @@ enum cgs_ind_reg {
 	CGS_IND_REG__UVD_CTX,
 	CGS_IND_REG__DIDT,
 	CGS_IND_REG_GC_CAC,
+	CGS_IND_REG_SE_CAC,
 	CGS_IND_REG__AUDIO_ENDPT
 };
 
-- 
2.7.4

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] drm/amd/powerplay: added grbm_idx_mutex lock/unlock to cgs v2 - v2: rename param 'en' as 'lock'
       [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
                     ` (2 preceding siblings ...)
  2017-07-07  1:59   ` [PATCH 4/6] drm/amd/powerplay: added support for new se_cac_idx APIs to cgs Evan Quan
@ 2017-07-07  1:59   ` Evan Quan
  2017-07-07  1:59   ` [PATCH 6/6] drm/amd/powerplay: added didt support for vega10 Evan Quan
  4 siblings, 0 replies; 7+ messages in thread
From: Evan Quan @ 2017-07-07  1:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, Evan Quan

Change-Id: If7088d6046c84355b8f1308d584ab6524ceab724
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c  | 12 ++++++++++++
 drivers/gpu/drm/amd/include/cgs_common.h |  5 +++++
 2 files changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index 8016f90..3d41cd4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -614,6 +614,17 @@ static int amdgpu_cgs_enter_safe_mode(struct cgs_device *cgs_device,
 	return 0;
 }
 
+static void amdgpu_cgs_lock_grbm_idx(struct cgs_device *cgs_device,
+					bool lock)
+{
+	CGS_FUNC_ADEV;
+
+	if (lock)
+		mutex_lock(&adev->grbm_idx_mutex);
+	else
+		mutex_unlock(&adev->grbm_idx_mutex);
+}
+
 static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 					enum cgs_ucode_id type,
 					struct cgs_firmware_info *info)
@@ -1136,6 +1147,7 @@ static const struct cgs_ops amdgpu_cgs_ops = {
 	.query_system_info = amdgpu_cgs_query_system_info,
 	.is_virtualization_enabled = amdgpu_cgs_is_virtualization_enabled,
 	.enter_safe_mode = amdgpu_cgs_enter_safe_mode,
+	.lock_grbm_idx = amdgpu_cgs_lock_grbm_idx,
 };
 
 static const struct cgs_os_ops amdgpu_cgs_os_ops = {
diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h
index b46d12d..0214f63 100644
--- a/drivers/gpu/drm/amd/include/cgs_common.h
+++ b/drivers/gpu/drm/amd/include/cgs_common.h
@@ -407,6 +407,8 @@ typedef int (*cgs_is_virtualization_enabled_t)(void *cgs_device);
 
 typedef int (*cgs_enter_safe_mode)(struct cgs_device *cgs_device, bool en);
 
+typedef void (*cgs_lock_grbm_idx)(struct cgs_device *cgs_device, bool lock);
+
 struct cgs_ops {
 	/* memory management calls (similar to KFD interface) */
 	cgs_alloc_gpu_mem_t alloc_gpu_mem;
@@ -442,6 +444,7 @@ struct cgs_ops {
 	cgs_query_system_info query_system_info;
 	cgs_is_virtualization_enabled_t is_virtualization_enabled;
 	cgs_enter_safe_mode enter_safe_mode;
+	cgs_lock_grbm_idx lock_grbm_idx;
 };
 
 struct cgs_os_ops; /* To be define in OS-specific CGS header */
@@ -518,4 +521,6 @@ struct cgs_device
 #define cgs_enter_safe_mode(cgs_device, en) \
 		CGS_CALL(enter_safe_mode, cgs_device, en)
 
+#define cgs_lock_grbm_idx(cgs_device, lock) \
+		CGS_CALL(lock_grbm_idx, cgs_device, lock)
 #endif /* _CGS_COMMON_H */
-- 
2.7.4

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] drm/amd/powerplay: added didt support for vega10
       [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
                     ` (3 preceding siblings ...)
  2017-07-07  1:59   ` [PATCH 5/6] drm/amd/powerplay: added grbm_idx_mutex lock/unlock to cgs v2 - v2: rename param 'en' as 'lock' Evan Quan
@ 2017-07-07  1:59   ` Evan Quan
       [not found]     ` <1499392755-23507-6-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
  4 siblings, 1 reply; 7+ messages in thread
From: Evan Quan @ 2017-07-07  1:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, Evan Quan

Change-Id: If2f955469e5b037e0726999b10eb10c08740b208
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c |   56 +
 drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h |    5 +
 .../gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c | 1291 ++++++++++++++++++++
 .../gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h |   16 +
 .../gpu/drm/amd/powerplay/inc/hardwaremanager.h    |    5 +
 drivers/gpu/drm/amd/powerplay/inc/pp_debug.h       |    6 +
 drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h       |    2 +
 7 files changed, 1381 insertions(+)

diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
index 780efaf..ae11d30 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
@@ -145,6 +145,19 @@ static void vega10_set_default_registry_data(struct pp_hwmgr *hwmgr)
 	data->registry_data.vr1hot_enabled = 1;
 	data->registry_data.regulator_hot_gpio_support = 1;
 
+	data->registry_data.didt_support = 1;
+	if (data->registry_data.didt_support) {
+		data->registry_data.didt_mode = 6;
+		data->registry_data.sq_ramping_support = 1;
+		data->registry_data.db_ramping_support = 0;
+		data->registry_data.td_ramping_support = 0;
+		data->registry_data.tcp_ramping_support = 0;
+		data->registry_data.dbr_ramping_support = 0;
+		data->registry_data.edc_didt_support = 1;
+		data->registry_data.gc_didt_support = 0;
+		data->registry_data.psm_didt_support = 0;
+	}
+
 	data->display_voltage_mode = PPVEGA10_VEGA10DISPLAYVOLTAGEMODE_DFLT;
 	data->dcef_clk_quad_eqn_a = PPREGKEY_VEGA10QUADRATICEQUATION_DFLT;
 	data->dcef_clk_quad_eqn_b = PPREGKEY_VEGA10QUADRATICEQUATION_DFLT;
@@ -222,6 +235,8 @@ static int vega10_set_features_platform_caps(struct pp_hwmgr *hwmgr)
 	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
 			PHM_PlatformCaps_PowerContainment);
 	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
+			PHM_PlatformCaps_DiDtSupport);
+	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
 			PHM_PlatformCaps_SQRamping);
 	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
 			PHM_PlatformCaps_DBRamping);
@@ -229,6 +244,34 @@ static int vega10_set_features_platform_caps(struct pp_hwmgr *hwmgr)
 			PHM_PlatformCaps_TDRamping);
 	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
 			PHM_PlatformCaps_TCPRamping);
+	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
+			PHM_PlatformCaps_DBRRamping);
+	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
+			PHM_PlatformCaps_DiDtEDCEnable);
+	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
+			PHM_PlatformCaps_GCEDC);
+	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
+			PHM_PlatformCaps_PSM);
+
+	if (data->registry_data.didt_support) {
+		phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DiDtSupport);
+		if (data->registry_data.sq_ramping_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_SQRamping);
+		if (data->registry_data.db_ramping_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DBRamping);
+		if (data->registry_data.td_ramping_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_TDRamping);
+		if (data->registry_data.tcp_ramping_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_TCPRamping);
+		if (data->registry_data.dbr_ramping_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DBRRamping);
+		if (data->registry_data.edc_didt_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DiDtEDCEnable);
+		if (data->registry_data.gc_didt_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_GCEDC);
+		if (data->registry_data.psm_didt_support)
+			phm_cap_set(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_PSM);
+	}
 
 	if (data->registry_data.power_containment_support)
 		phm_cap_set(hwmgr->platform_descriptor.platformCaps,
@@ -321,6 +364,7 @@ static void vega10_init_dpm_defaults(struct pp_hwmgr *hwmgr)
 	data->smu_features[GNLD_FAN_CONTROL].smu_feature_id =
 			FEATURE_FAN_CONTROL_BIT;
 	data->smu_features[GNLD_ACG].smu_feature_id = FEATURE_ACG_BIT;
+	data->smu_features[GNLD_DIDT].smu_feature_id = FEATURE_GFX_EDC_BIT;
 
 	if (!data->registry_data.prefetcher_dpm_key_disabled)
 		data->smu_features[GNLD_DPM_PREFETCHER].supported = true;
@@ -390,6 +434,9 @@ static void vega10_init_dpm_defaults(struct pp_hwmgr *hwmgr)
 	if ((data->smu_version & 0xff000000) == 0x5000000)
 		data->smu_features[GNLD_ACG].supported = true;
 
+	if (data->registry_data.didt_support)
+		data->smu_features[GNLD_DIDT].supported = true;
+
 }
 
 #ifdef PPLIB_VEGA10_EVV_SUPPORT
@@ -2906,6 +2953,11 @@ static int vega10_enable_dpm_tasks(struct pp_hwmgr *hwmgr)
 	PP_ASSERT_WITH_CODE(!tmp_result,
 			"Failed to start DPM!", result = tmp_result);
 
+	/* enable didt, do not abort if failed didt */
+	tmp_result = vega10_enable_didt_config(hwmgr);
+	PP_ASSERT(!tmp_result,
+			"Failed to enable didt config!");
+
 	tmp_result = vega10_enable_power_containment(hwmgr);
 	PP_ASSERT_WITH_CODE(!tmp_result,
 			"Failed to enable power containment!",
@@ -4735,6 +4787,10 @@ static int vega10_disable_dpm_tasks(struct pp_hwmgr *hwmgr)
 	PP_ASSERT_WITH_CODE((tmp_result == 0),
 			"Failed to disable power containment!", result = tmp_result);
 
+	tmp_result = vega10_disable_didt_config(hwmgr);
+	PP_ASSERT_WITH_CODE((tmp_result == 0),
+			"Failed to disable didt config!", result = tmp_result);
+
 	tmp_result = vega10_avfs_enable(hwmgr, false);
 	PP_ASSERT_WITH_CODE((tmp_result == 0),
 			"Failed to disable AVFS!", result = tmp_result);
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
index 4150801..5c97a8b 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
@@ -232,7 +232,9 @@ struct vega10_registry_data {
 	uint8_t   cac_support;
 	uint8_t   clock_stretcher_support;
 	uint8_t   db_ramping_support;
+	uint8_t   didt_mode;
 	uint8_t   didt_support;
+	uint8_t   edc_didt_support;
 	uint8_t   dynamic_state_patching_support;
 	uint8_t   enable_pkg_pwr_tracking_feature;
 	uint8_t   enable_tdc_limit_feature;
@@ -265,6 +267,9 @@ struct vega10_registry_data {
 	uint8_t   tcp_ramping_support;
 	uint8_t   tdc_support;
 	uint8_t   td_ramping_support;
+	uint8_t   dbr_ramping_support;
+	uint8_t   gc_didt_support;
+	uint8_t   psm_didt_support;
 	uint8_t   thermal_out_gpio_support;
 	uint8_t   thermal_support;
 	uint8_t   fw_ctf_enabled;
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
index 3f72268..22334a1 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
@@ -26,7 +26,1298 @@
 #include "vega10_powertune.h"
 #include "vega10_smumgr.h"
 #include "vega10_ppsmc.h"
+#include "vega10_inc.h"
 #include "pp_debug.h"
+#include "pp_soc15.h"
+
+static const struct vega10_didt_config_reg SEDiDtTuningCtrlConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ */
+	{   ixDIDT_SQ_TUNING_CTRL,             DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,        DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,        0x3853 },
+	{   ixDIDT_SQ_TUNING_CTRL,             DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,        DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,        0x3153 },
+
+	/* DIDT_TD */
+	{   ixDIDT_TD_TUNING_CTRL,             DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,        DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,        0x0dde },
+	{   ixDIDT_TD_TUNING_CTRL,             DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,        DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,        0x0dde },
+
+	/* DIDT_TCP */
+	{   ixDIDT_TCP_TUNING_CTRL,            DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,       DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,       0x3dde },
+	{   ixDIDT_TCP_TUNING_CTRL,            DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,       DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,       0x3dde },
+
+	/* DIDT_DB */
+	{   ixDIDT_DB_TUNING_CTRL,             DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,        DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,        0x3dde },
+	{   ixDIDT_DB_TUNING_CTRL,             DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,        DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,        0x3dde },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEDiDtCtrl3Config_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset               Mask                                                     Shift                                                            Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/*DIDT_SQ_CTRL3 */
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__GC_DIDT_ENABLE_MASK,       DIDT_SQ_CTRL3__GC_DIDT_ENABLE__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,       DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__THROTTLE_POLICY_MASK,       DIDT_SQ_CTRL3__THROTTLE_POLICY__SHIFT,             0x0003 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,       DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,       DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,       DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,             0x0003 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,       DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,       DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__QUALIFY_STALL_EN_MASK,       DIDT_SQ_CTRL3__QUALIFY_STALL_EN__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_STALL_SEL_MASK,       DIDT_SQ_CTRL3__DIDT_STALL_SEL__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_FORCE_STALL_MASK,       DIDT_SQ_CTRL3__DIDT_FORCE_STALL__SHIFT,             0x0000 },
+	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN_MASK,       DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,             0x0000 },
+
+	/*DIDT_TCP_CTRL3 */
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__GC_DIDT_ENABLE_MASK,      DIDT_TCP_CTRL3__GC_DIDT_ENABLE__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,      DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__THROTTLE_POLICY_MASK,      DIDT_TCP_CTRL3__THROTTLE_POLICY__SHIFT,            0x0003 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,      DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,      DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,      DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,            0x0003 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,      DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,      DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__QUALIFY_STALL_EN_MASK,      DIDT_TCP_CTRL3__QUALIFY_STALL_EN__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_STALL_SEL_MASK,      DIDT_TCP_CTRL3__DIDT_STALL_SEL__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_FORCE_STALL_MASK,      DIDT_TCP_CTRL3__DIDT_FORCE_STALL__SHIFT,            0x0000 },
+	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN_MASK,      DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,            0x0000 },
+
+	/*DIDT_TD_CTRL3 */
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__GC_DIDT_ENABLE_MASK,       DIDT_TD_CTRL3__GC_DIDT_ENABLE__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,       DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__THROTTLE_POLICY_MASK,       DIDT_TD_CTRL3__THROTTLE_POLICY__SHIFT,             0x0003 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,       DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,       DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,       DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,             0x0003 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,       DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,       DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__QUALIFY_STALL_EN_MASK,       DIDT_TD_CTRL3__QUALIFY_STALL_EN__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_STALL_SEL_MASK,       DIDT_TD_CTRL3__DIDT_STALL_SEL__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_FORCE_STALL_MASK,       DIDT_TD_CTRL3__DIDT_FORCE_STALL__SHIFT,             0x0000 },
+	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN_MASK,       DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,             0x0000 },
+
+	/*DIDT_DB_CTRL3 */
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__GC_DIDT_ENABLE_MASK,       DIDT_DB_CTRL3__GC_DIDT_ENABLE__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,       DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__THROTTLE_POLICY_MASK,       DIDT_DB_CTRL3__THROTTLE_POLICY__SHIFT,             0x0003 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,       DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,       DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,       DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,             0x0003 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,       DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,       DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__QUALIFY_STALL_EN_MASK,       DIDT_DB_CTRL3__QUALIFY_STALL_EN__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_STALL_SEL_MASK,       DIDT_DB_CTRL3__DIDT_STALL_SEL__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_FORCE_STALL_MASK,       DIDT_DB_CTRL3__DIDT_FORCE_STALL__SHIFT,             0x0000 },
+	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN_MASK,       DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,             0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEDiDtCtrl2Config_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                            Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ */
+	{   ixDIDT_SQ_CTRL2,                  DIDT_SQ_CTRL2__MAX_POWER_DELTA_MASK,                 DIDT_SQ_CTRL2__MAX_POWER_DELTA__SHIFT,                 0x3853 },
+	{   ixDIDT_SQ_CTRL2,                  DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,        DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,        0x00c0 },
+	{   ixDIDT_SQ_CTRL2,                  DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,        DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,        0x0000 },
+
+	/* DIDT_TD */
+	{   ixDIDT_TD_CTRL2,                  DIDT_TD_CTRL2__MAX_POWER_DELTA_MASK,                 DIDT_TD_CTRL2__MAX_POWER_DELTA__SHIFT,                 0x3fff },
+	{   ixDIDT_TD_CTRL2,                  DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,        DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,        0x00c0 },
+	{   ixDIDT_TD_CTRL2,                  DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,        DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,        0x0001 },
+
+	/* DIDT_TCP */
+	{   ixDIDT_TCP_CTRL2,                 DIDT_TCP_CTRL2__MAX_POWER_DELTA_MASK,                DIDT_TCP_CTRL2__MAX_POWER_DELTA__SHIFT,                0x3dde },
+	{   ixDIDT_TCP_CTRL2,                 DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,       DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,       0x00c0 },
+	{   ixDIDT_TCP_CTRL2,                 DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,       DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,       0x0001 },
+
+	/* DIDT_DB */
+	{   ixDIDT_DB_CTRL2,                  DIDT_DB_CTRL2__MAX_POWER_DELTA_MASK,                 DIDT_DB_CTRL2__MAX_POWER_DELTA__SHIFT,                 0x3dde },
+	{   ixDIDT_DB_CTRL2,                  DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,        DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,        0x00c0 },
+	{   ixDIDT_DB_CTRL2,                  DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,        DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,        0x0001 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEDiDtCtrl1Config_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ */
+	{   ixDIDT_SQ_CTRL1,                   DIDT_SQ_CTRL1__MIN_POWER_MASK,                       DIDT_SQ_CTRL1__MIN_POWER__SHIFT,                       0x0000 },
+	{   ixDIDT_SQ_CTRL1,                   DIDT_SQ_CTRL1__MAX_POWER_MASK,                       DIDT_SQ_CTRL1__MAX_POWER__SHIFT,                       0xffff },
+	/* DIDT_TD */
+	{   ixDIDT_TD_CTRL1,                   DIDT_TD_CTRL1__MIN_POWER_MASK,                       DIDT_TD_CTRL1__MIN_POWER__SHIFT,                       0x0000 },
+	{   ixDIDT_TD_CTRL1,                   DIDT_TD_CTRL1__MAX_POWER_MASK,                       DIDT_TD_CTRL1__MAX_POWER__SHIFT,                       0xffff },
+	/* DIDT_TCP */
+	{   ixDIDT_TCP_CTRL1,                  DIDT_TCP_CTRL1__MIN_POWER_MASK,                      DIDT_TCP_CTRL1__MIN_POWER__SHIFT,                      0x0000 },
+	{   ixDIDT_TCP_CTRL1,                  DIDT_TCP_CTRL1__MAX_POWER_MASK,                      DIDT_TCP_CTRL1__MAX_POWER__SHIFT,                      0xffff },
+	/* DIDT_DB */
+	{   ixDIDT_DB_CTRL1,                   DIDT_DB_CTRL1__MIN_POWER_MASK,                       DIDT_DB_CTRL1__MIN_POWER__SHIFT,                       0x0000 },
+	{   ixDIDT_DB_CTRL1,                   DIDT_DB_CTRL1__MAX_POWER_MASK,                       DIDT_DB_CTRL1__MAX_POWER__SHIFT,                       0xffff },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+
+static const struct vega10_didt_config_reg SEDiDtWeightConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                  Shift                                                 Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ */
+	{   ixDIDT_SQ_WEIGHT0_3,               0xFFFFFFFF,                                           0,                                                    0x2B363B1A },
+	{   ixDIDT_SQ_WEIGHT4_7,               0xFFFFFFFF,                                           0,                                                    0x270B2432 },
+	{   ixDIDT_SQ_WEIGHT8_11,              0xFFFFFFFF,                                           0,                                                    0x00000018 },
+
+	/* DIDT_TD */
+	{   ixDIDT_TD_WEIGHT0_3,               0xFFFFFFFF,                                           0,                                                    0x2B1D220F },
+	{   ixDIDT_TD_WEIGHT4_7,               0xFFFFFFFF,                                           0,                                                    0x00007558 },
+	{   ixDIDT_TD_WEIGHT8_11,              0xFFFFFFFF,                                           0,                                                    0x00000000 },
+
+	/* DIDT_TCP */
+	{   ixDIDT_TCP_WEIGHT0_3,               0xFFFFFFFF,                                          0,                                                    0x5ACE160D },
+	{   ixDIDT_TCP_WEIGHT4_7,               0xFFFFFFFF,                                          0,                                                    0x00000000 },
+	{   ixDIDT_TCP_WEIGHT8_11,              0xFFFFFFFF,                                          0,                                                    0x00000000 },
+
+	/* DIDT_DB */
+	{   ixDIDT_DB_WEIGHT0_3,                0xFFFFFFFF,                                          0,                                                    0x0E152A0F },
+	{   ixDIDT_DB_WEIGHT4_7,                0xFFFFFFFF,                                          0,                                                    0x09061813 },
+	{   ixDIDT_DB_WEIGHT8_11,               0xFFFFFFFF,                                          0,                                                    0x00000013 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEDiDtCtrl0Config_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ */
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK,   DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__PHASE_OFFSET_MASK,   DIDT_SQ_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_CTRL_RST_MASK,   DIDT_SQ_CTRL0__DIDT_CTRL_RST__SHIFT,  0x0000 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,   DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN_MASK,   DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN__SHIFT,  0x0001 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN_MASK,   DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT,  0x0001 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,   DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT,  0x0001 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,   DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT,  0xffff },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN_MASK,   DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN__SHIFT,  0x0000 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN_MASK,   DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN__SHIFT,  0x0000 },
+	{  ixDIDT_SQ_CTRL0,                   DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,   DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT,  0x0000 },
+	/* DIDT_TD */
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK,   DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__PHASE_OFFSET_MASK,   DIDT_TD_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_CTRL_RST_MASK,   DIDT_TD_CTRL0__DIDT_CTRL_RST__SHIFT,  0x0000 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,   DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN_MASK,   DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN__SHIFT,  0x0001 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN_MASK,   DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT,  0x0001 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,   DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT,  0x0001 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,   DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT,  0xffff },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN_MASK,   DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN__SHIFT,  0x0000 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN_MASK,   DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN__SHIFT,  0x0000 },
+	{  ixDIDT_TD_CTRL0,                   DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,   DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT,  0x0000 },
+	/* DIDT_TCP */
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK,  DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__PHASE_OFFSET_MASK,  DIDT_TCP_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_CTRL_RST_MASK,  DIDT_TCP_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,  DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN_MASK,  DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN__SHIFT, 0x0001 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN_MASK,  DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT, 0x0001 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,  DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT, 0x0001 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,  DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT, 0xffff },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN_MASK,  DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN__SHIFT, 0x0000 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN_MASK,  DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN__SHIFT, 0x0000 },
+	{  ixDIDT_TCP_CTRL0,                  DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,  DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT, 0x0000 },
+	/* DIDT_DB */
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK,   DIDT_DB_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__PHASE_OFFSET_MASK,   DIDT_DB_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_CTRL_RST_MASK,   DIDT_DB_CTRL0__DIDT_CTRL_RST__SHIFT,  0x0000 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,   DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN_MASK,   DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN__SHIFT,  0x0001 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN_MASK,   DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT,  0x0001 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,   DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT,  0x0001 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,   DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT,  0xffff },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN_MASK,   DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN__SHIFT,  0x0000 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN_MASK,   DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN__SHIFT,  0x0000 },
+	{  ixDIDT_DB_CTRL0,                   DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,   DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT,  0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+
+static const struct vega10_didt_config_reg SEDiDtStallCtrlConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                   Mask                                                     Shift                                                      Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ */
+	{   ixDIDT_SQ_STALL_CTRL,    DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,    DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,     0x0004 },
+	{   ixDIDT_SQ_STALL_CTRL,    DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,    DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,     0x0004 },
+	{   ixDIDT_SQ_STALL_CTRL,    DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,    DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,     0x000a },
+	{   ixDIDT_SQ_STALL_CTRL,    DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,    DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,     0x000a },
+
+	/* DIDT_TD */
+	{   ixDIDT_TD_STALL_CTRL,    DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,    DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,     0x0001 },
+	{   ixDIDT_TD_STALL_CTRL,    DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,    DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,     0x0001 },
+	{   ixDIDT_TD_STALL_CTRL,    DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,    DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,     0x000a },
+	{   ixDIDT_TD_STALL_CTRL,    DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,    DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,     0x000a },
+
+	/* DIDT_TCP */
+	{   ixDIDT_TCP_STALL_CTRL,   DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,   DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,    0x0001 },
+	{   ixDIDT_TCP_STALL_CTRL,   DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,   DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,    0x0001 },
+	{   ixDIDT_TCP_STALL_CTRL,   DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,   DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,    0x000a },
+	{   ixDIDT_TCP_STALL_CTRL,   DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,   DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,    0x000a },
+
+	/* DIDT_DB */
+	{   ixDIDT_DB_STALL_CTRL,    DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,    DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,     0x0004 },
+	{   ixDIDT_DB_STALL_CTRL,    DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,    DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,     0x0004 },
+	{   ixDIDT_DB_STALL_CTRL,    DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,    DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,     0x000a },
+	{   ixDIDT_DB_STALL_CTRL,    DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,    DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,     0x000a },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEDiDtStallPatternConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                        Mask                                                      Shift                                                    Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* DIDT_SQ_STALL_PATTERN_1_2 */
+	{   ixDIDT_SQ_STALL_PATTERN_1_2,  DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,    DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT,  0x0001 },
+	{   ixDIDT_SQ_STALL_PATTERN_1_2,  DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,    DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT,  0x0001 },
+
+	/* DIDT_SQ_STALL_PATTERN_3_4 */
+	{   ixDIDT_SQ_STALL_PATTERN_3_4,  DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,    DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT,  0x0001 },
+	{   ixDIDT_SQ_STALL_PATTERN_3_4,  DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,    DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT,  0x0001 },
+
+	/* DIDT_SQ_STALL_PATTERN_5_6 */
+	{   ixDIDT_SQ_STALL_PATTERN_5_6,  DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,    DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_STALL_PATTERN_5_6,  DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,    DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT,  0x0000 },
+
+	/* DIDT_SQ_STALL_PATTERN_7 */
+	{   ixDIDT_SQ_STALL_PATTERN_7,    DIDT_SQ_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,      DIDT_SQ_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,    0x0000 },
+
+	/* DIDT_TCP_STALL_PATTERN_1_2 */
+	{   ixDIDT_TCP_STALL_PATTERN_1_2, DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,   DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT, 0x0001 },
+	{   ixDIDT_TCP_STALL_PATTERN_1_2, DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,   DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT, 0x0001 },
+
+	/* DIDT_TCP_STALL_PATTERN_3_4 */
+	{   ixDIDT_TCP_STALL_PATTERN_3_4, DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,   DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT, 0x0001 },
+	{   ixDIDT_TCP_STALL_PATTERN_3_4, DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,   DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT, 0x0001 },
+
+	/* DIDT_TCP_STALL_PATTERN_5_6 */
+	{   ixDIDT_TCP_STALL_PATTERN_5_6, DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,   DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT, 0x0000 },
+	{   ixDIDT_TCP_STALL_PATTERN_5_6, DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,   DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT, 0x0000 },
+
+	/* DIDT_TCP_STALL_PATTERN_7 */
+	{   ixDIDT_TCP_STALL_PATTERN_7,   DIDT_TCP_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,     DIDT_TCP_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,   0x0000 },
+
+	/* DIDT_TD_STALL_PATTERN_1_2 */
+	{   ixDIDT_TD_STALL_PATTERN_1_2,  DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,    DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT,  0x0001 },
+	{   ixDIDT_TD_STALL_PATTERN_1_2,  DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,    DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT,  0x0001 },
+
+	/* DIDT_TD_STALL_PATTERN_3_4 */
+	{   ixDIDT_TD_STALL_PATTERN_3_4,  DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,    DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT,  0x0001 },
+	{   ixDIDT_TD_STALL_PATTERN_3_4,  DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,    DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT,  0x0001 },
+
+	/* DIDT_TD_STALL_PATTERN_5_6 */
+	{   ixDIDT_TD_STALL_PATTERN_5_6,  DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,    DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT,  0x0000 },
+	{   ixDIDT_TD_STALL_PATTERN_5_6,  DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,    DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT,  0x0000 },
+
+	/* DIDT_TD_STALL_PATTERN_7 */
+	{   ixDIDT_TD_STALL_PATTERN_7,    DIDT_TD_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,      DIDT_TD_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,    0x0000 },
+
+	/* DIDT_DB_STALL_PATTERN_1_2 */
+	{   ixDIDT_DB_STALL_PATTERN_1_2,  DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,    DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT,  0x0001 },
+	{   ixDIDT_DB_STALL_PATTERN_1_2,  DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,    DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT,  0x0001 },
+
+	/* DIDT_DB_STALL_PATTERN_3_4 */
+	{   ixDIDT_DB_STALL_PATTERN_3_4,  DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,    DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT,  0x0001 },
+	{   ixDIDT_DB_STALL_PATTERN_3_4,  DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,    DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT,  0x0001 },
+
+	/* DIDT_DB_STALL_PATTERN_5_6 */
+	{   ixDIDT_DB_STALL_PATTERN_5_6,  DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,    DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT,  0x0000 },
+	{   ixDIDT_DB_STALL_PATTERN_5_6,  DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,    DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT,  0x0000 },
+
+	/* DIDT_DB_STALL_PATTERN_7 */
+	{   ixDIDT_DB_STALL_PATTERN_7,    DIDT_DB_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,      DIDT_DB_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,    0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SELCacConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x00060021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x00860021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x01060021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x01860021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x02060021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x02860021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x03060021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x03860021 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x04060021 },
+	/* TD */
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x000E0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x008E0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x010E0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x018E0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x020E0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x028E0020 },
+	/* TCP */
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x001c0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x009c0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x011c0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x019c0020 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x021c0020 },
+	/* DB */
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x00200008 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x00820008 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x01020008 },
+	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,                                                     0x01820008 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+
+static const struct vega10_didt_config_reg SEEDCStallPatternConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,                                          0,                                                     0x00030001 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,                                          0,                                                     0x000F0007 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,                                          0,                                                     0x003F001F },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_7,     0xFFFFFFFF,                                          0,                                                     0x0000007F },
+	/* TD */
+	{   ixDIDT_TD_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_PATTERN_7,     0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	/* TCP */
+	{   ixDIDT_TCP_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,                                         0,                                                     0x00000000 },
+	{   ixDIDT_TCP_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,                                         0,                                                     0x00000000 },
+	{   ixDIDT_TCP_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,                                         0,                                                     0x00000000 },
+	{   ixDIDT_TCP_EDC_STALL_PATTERN_7,     0xFFFFFFFF,                                         0,                                                     0x00000000 },
+	/* DB */
+	{   ixDIDT_DB_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_DB_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_DB_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_DB_EDC_STALL_PATTERN_7,     0xFFFFFFFF,                                          0,                                                     0x00000000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEEDCForceStallPatternConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,                                          0,                                                     0x00000015 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_7,     0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	/* TD */
+	{   ixDIDT_TD_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,                                          0,                                                     0x00000015 },
+	{   ixDIDT_TD_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_PATTERN_7,     0xFFFFFFFF,                                          0,                                                     0x00000000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEEDCStallDelayConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixDIDT_SQ_EDC_STALL_DELAY_1,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_2,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_3,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_4,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	/* TD */
+	{   ixDIDT_TD_EDC_STALL_DELAY_1,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_DELAY_2,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_DELAY_3,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TD_EDC_STALL_DELAY_4,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	/* TCP */
+	{   ixDIDT_TCP_EDC_STALL_DELAY_1,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TCP_EDC_STALL_DELAY_2,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TCP_EDC_STALL_DELAY_3,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	{   ixDIDT_TCP_EDC_STALL_DELAY_4,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
+	/* DB */
+	{   ixDIDT_DB_EDC_STALL_DELAY_1,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEEDCThresholdConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   ixDIDT_SQ_EDC_THRESHOLD,           0xFFFFFFFF,                                          0,                                                     0x0000010E },
+	{   ixDIDT_TD_EDC_THRESHOLD,           0xFFFFFFFF,                                          0,                                                     0xFFFFFFFF },
+	{   ixDIDT_TCP_EDC_THRESHOLD,          0xFFFFFFFF,                                          0,                                                     0xFFFFFFFF },
+	{   ixDIDT_DB_EDC_THRESHOLD,           0xFFFFFFFF,                                          0,                                                     0xFFFFFFFF },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEEDCCtrlResetConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,   DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEEDCCtrlConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0004 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,   DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x0006 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg SEEDCCtrlForceStallConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ */
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,   DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x000C },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
+
+	/* TD */
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_EN_MASK,                       DIDT_TD_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_TD_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0001 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0001 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,   DIDT_TD_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x000E },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_TD_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,         DIDT_TD_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+	{   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,         DIDT_TD_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg    GCDiDtDroopCtrlConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN__SHIFT,  0x0000 },
+	{   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD__SHIFT,  0x0000 },
+	{   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX__SHIFT,  0x0000 },
+	{   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL_MASK,   GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL__SHIFT,  0x0000 },
+	{   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW__SHIFT,  0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg    GCDiDtCtrl0Config_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_CTRL_EN_MASK,   GC_DIDT_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
+	{   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__PHASE_OFFSET_MASK,   GC_DIDT_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
+	{   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_SW_RST_MASK,   GC_DIDT_CTRL0__DIDT_SW_RST__SHIFT,  0x0000 },
+	{   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,   GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
+	{   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,   GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,  0x0000 },
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+
+static const struct vega10_didt_config_reg   PSMSEEDCStallPatternConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ EDC STALL PATTERNs */
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,  DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_1_MASK,   DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_1__SHIFT,   0x0101 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,  DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_2_MASK,   DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_2__SHIFT,   0x0101 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,  DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_3_MASK,   DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_3__SHIFT,   0x1111 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,  DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_4_MASK,   DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_4__SHIFT,   0x1111 },
+
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,  DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_5_MASK,   DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_5__SHIFT,   0x1515 },
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,  DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_6_MASK,   DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_6__SHIFT,   0x1515 },
+
+	{   ixDIDT_SQ_EDC_STALL_PATTERN_7,  DIDT_SQ_EDC_STALL_PATTERN_7__EDC_STALL_PATTERN_7_MASK,   DIDT_SQ_EDC_STALL_PATTERN_7__EDC_STALL_PATTERN_7__SHIFT,     0x5555 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMSEEDCStallDelayConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ EDC STALL DELAYs */
+	{   ixDIDT_SQ_EDC_STALL_DELAY_1,      DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ0_MASK,  DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ0__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_1,      DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ1_MASK,  DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ1__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_1,      DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ2_MASK,  DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ2__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_1,      DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ3_MASK,  DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ3__SHIFT,  0x0000 },
+
+	{   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ4_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ4__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7__SHIFT,  0x0000 },
+
+	{   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8_MASK,  DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9_MASK,  DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9__SHIFT,  0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10_MASK, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10__SHIFT, 0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11_MASK, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11__SHIFT, 0x0000 },
+
+	{   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12__SHIFT, 0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ13__SHIFT, 0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14__SHIFT, 0x0000 },
+	{   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15__SHIFT, 0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMSEEDCThresholdConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ EDC THRESHOLD */
+	{   ixDIDT_SQ_EDC_THRESHOLD,           DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD_MASK,           DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT,            0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMSEEDCCtrlResetConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ EDC CTRL */
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,   DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMSEEDCCtrlConfig_Vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	/* SQ EDC CTRL */
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,   DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x000E },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0003 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
+	{   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,         DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMGCEDCThresholdConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   mmGC_EDC_THRESHOLD,                GC_EDC_THRESHOLD__EDC_THRESHOLD_MASK,                GC_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT,                 0x0000000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMGCEDCDroopCtrlConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN_MASK,          GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN__SHIFT,           0x0001 },
+	{   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD_MASK,         GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD__SHIFT,          0x0384 },
+	{   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX_MASK,       GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX__SHIFT,        0x0001 },
+	{   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__AVG_PSM_SEL_MASK,                 GC_EDC_DROOP_CTRL__AVG_PSM_SEL__SHIFT,                  0x0001 },
+	{   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL_MASK,               GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL__SHIFT,                0x0001 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMGCEDCCtrlResetConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_EN_MASK,                            GC_EDC_CTRL__EDC_EN__SHIFT,                             0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_SW_RST_MASK,                        GC_EDC_CTRL__EDC_SW_RST__SHIFT,                         0x0001 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,               GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,                0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_FORCE_STALL_MASK,                   GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT,                    0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,       GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,        0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,          GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,           0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg   PSMGCEDCCtrlConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_EN_MASK,                            GC_EDC_CTRL__EDC_EN__SHIFT,                             0x0001 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_SW_RST_MASK,                        GC_EDC_CTRL__EDC_SW_RST__SHIFT,                         0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,               GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,                0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_FORCE_STALL_MASK,                   GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT,                    0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,       GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,        0x0000 },
+	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,          GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,           0x0000 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg    AvfsPSMResetConfig_vega10[]=
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   0x16A02,                         0xFFFFFFFF,                                            0x0,                                                    0x0000005F },
+	{   0x16A05,                         0xFFFFFFFF,                                            0x0,                                                    0x00000001 },
+	{   0x16A06,                         0x00000001,                                            0x0,                                                    0x02000000 },
+	{   0x16A01,                         0xFFFFFFFF,                                            0x0,                                                    0x00003027 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static const struct vega10_didt_config_reg    AvfsPSMInitConfig_vega10[] =
+{
+/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *      Offset                             Mask                                                 Shift                                                  Value
+ * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ */
+	{   0x16A05,                         0xFFFFFFFF,                                            0x18,                                                    0x00000001 },
+	{   0x16A05,                         0xFFFFFFFF,                                            0x8,                                                     0x00000003 },
+	{   0x16A05,                         0xFFFFFFFF,                                            0xa,                                                     0x00000006 },
+	{   0x16A05,                         0xFFFFFFFF,                                            0x7,                                                     0x00000000 },
+	{   0x16A06,                         0xFFFFFFFF,                                            0x18,                                                    0x00000001 },
+	{   0x16A06,                         0xFFFFFFFF,                                            0x19,                                                    0x00000001 },
+	{   0x16A01,                         0xFFFFFFFF,                                            0x0,                                                     0x00003027 },
+
+	{   0xFFFFFFFF  }  /* End of list */
+};
+
+static int vega10_program_didt_config_registers(struct pp_hwmgr *hwmgr, const struct vega10_didt_config_reg *config_regs, enum vega10_didt_config_reg_type reg_type)
+{
+	uint32_t data;
+
+	PP_ASSERT_WITH_CODE((config_regs != NULL), "[vega10_program_didt_config_registers] Invalid config register table!", return -EINVAL);
+
+	while (config_regs->offset != 0xFFFFFFFF) {
+		switch (reg_type) {
+		case VEGA10_CONFIGREG_DIDT:
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, config_regs->offset);
+			data &= ~config_regs->mask;
+			data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, config_regs->offset, data);
+			break;
+		case VEGA10_CONFIGREG_GCCAC:
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG_GC_CAC, config_regs->offset);
+			data &= ~config_regs->mask;
+			data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG_GC_CAC, config_regs->offset, data);
+			break;
+		case VEGA10_CONFIGREG_SECAC:
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG_SE_CAC, config_regs->offset);
+			data &= ~config_regs->mask;
+			data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG_SE_CAC, config_regs->offset, data);
+			break;
+		default:
+			return -EINVAL;
+		}
+
+		config_regs++;
+	}
+
+	return 0;
+}
+
+static int vega10_program_gc_didt_config_registers(struct pp_hwmgr *hwmgr, const struct vega10_didt_config_reg *config_regs)
+{
+	uint32_t data;
+
+	while (config_regs->offset != 0xFFFFFFFF) {
+		data = cgs_read_register(hwmgr->device, config_regs->offset);
+		data &= ~config_regs->mask;
+		data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
+		cgs_write_register(hwmgr->device, config_regs->offset, data);
+		config_regs++;
+	}
+
+	return 0;
+}
+
+static void vega10_didt_set_mask(struct pp_hwmgr *hwmgr, const bool enable)
+{
+	uint32_t data;
+	int result;
+	uint32_t en = (enable ? 1 : 0);
+	uint32_t didt_block_info = SQ_IR_MASK | TCP_IR_MASK | TD_PCC_MASK;
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_SQRamping)) {
+		data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_CTRL0);
+		data &= ~DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK;
+		data |= ((en << DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT) & DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK);
+		cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_CTRL0, data);
+		didt_block_info &= ~SQ_Enable_MASK;
+		didt_block_info |= en << SQ_Enable_SHIFT;
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DBRamping)) {
+		data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_CTRL0);
+		data &= ~DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK;
+		data |= ((en << DIDT_DB_CTRL0__DIDT_CTRL_EN__SHIFT) & DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK);
+		cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_CTRL0, data);
+		didt_block_info &= ~DB_Enable_MASK;
+		didt_block_info |= en << DB_Enable_SHIFT;
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_TDRamping)) {
+		data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_CTRL0);
+		data &= ~DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK;
+		data |= ((en << DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT) & DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK);
+		cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_CTRL0, data);
+		didt_block_info &= ~TD_Enable_MASK;
+		didt_block_info |= en << TD_Enable_SHIFT;
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_TCPRamping)) {
+		data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_CTRL0);
+		data &= ~DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK;
+		data |= ((en << DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT) & DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK);
+		cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_CTRL0, data);
+		didt_block_info &= ~TCP_Enable_MASK;
+		didt_block_info |= en << TCP_Enable_SHIFT;
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DBRRamping)) {
+		data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_CTRL0);
+		data &= ~DIDT_DBR_CTRL0__DIDT_CTRL_EN_MASK;
+		data |= ((en << DIDT_DBR_CTRL0__DIDT_CTRL_EN__SHIFT) & DIDT_DBR_CTRL0__DIDT_CTRL_EN_MASK);
+		cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_CTRL0, data);
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DiDtEDCEnable)) {
+		if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_SQRamping)) {
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL);
+			data &= ~DIDT_SQ_EDC_CTRL__EDC_EN_MASK;
+			data |= ((en << DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT) & DIDT_SQ_EDC_CTRL__EDC_EN_MASK);
+			data &= ~DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK;
+			data |= ((~en << DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT) & DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL, data);
+		}
+
+		if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DBRamping)) {
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL);
+			data &= ~DIDT_DB_EDC_CTRL__EDC_EN_MASK;
+			data |= ((en << DIDT_DB_EDC_CTRL__EDC_EN__SHIFT) & DIDT_DB_EDC_CTRL__EDC_EN_MASK);
+			data &= ~DIDT_DB_EDC_CTRL__EDC_SW_RST_MASK;
+			data |= ((~en << DIDT_DB_EDC_CTRL__EDC_SW_RST__SHIFT) & DIDT_DB_EDC_CTRL__EDC_SW_RST_MASK);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL, data);
+		}
+
+		if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_TDRamping)) {
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL);
+			data &= ~DIDT_TD_EDC_CTRL__EDC_EN_MASK;
+			data |= ((en << DIDT_TD_EDC_CTRL__EDC_EN__SHIFT) & DIDT_TD_EDC_CTRL__EDC_EN_MASK);
+			data &= ~DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK;
+			data |= ((~en << DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT) & DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL, data);
+		}
+
+		if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_TCPRamping)) {
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL);
+			data &= ~DIDT_TCP_EDC_CTRL__EDC_EN_MASK;
+			data |= ((en << DIDT_TCP_EDC_CTRL__EDC_EN__SHIFT) & DIDT_TCP_EDC_CTRL__EDC_EN_MASK);
+			data &= ~DIDT_TCP_EDC_CTRL__EDC_SW_RST_MASK;
+			data |= ((~en << DIDT_TCP_EDC_CTRL__EDC_SW_RST__SHIFT) & DIDT_TCP_EDC_CTRL__EDC_SW_RST_MASK);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL, data);
+		}
+
+		if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_DBRRamping)) {
+			data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL);
+			data &= ~DIDT_DBR_EDC_CTRL__EDC_EN_MASK;
+			data |= ((en << DIDT_DBR_EDC_CTRL__EDC_EN__SHIFT) & DIDT_DBR_EDC_CTRL__EDC_EN_MASK);
+			data &= ~DIDT_DBR_EDC_CTRL__EDC_SW_RST_MASK;
+			data |= ((~en << DIDT_DBR_EDC_CTRL__EDC_SW_RST__SHIFT) & DIDT_DBR_EDC_CTRL__EDC_SW_RST_MASK);
+			cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL, data);
+		}
+	}
+
+	if (enable) {
+		/* For Vega10, SMC does not support any mask yet. */
+		result = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, PPSMC_MSG_ConfigureGfxDidt, didt_block_info);
+		PP_ASSERT((0 == result), "[EnableDiDtConfig] SMC Configure Gfx Didt Failed!");
+	}
+}
+
+static int vega10_enable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr)
+{
+	int result;
+	uint32_t num_se, count, data;
+	struct cgs_system_info sys_info = {0};
+	uint32_t reg;
+
+	sys_info.size = sizeof(struct cgs_system_info);
+	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+		num_se = sys_info.value;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	cgs_lock_grbm_idx(hwmgr->device, true);
+	reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
+	for (count = 0; count < num_se; count++) {
+		data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
+		cgs_write_register(hwmgr->device, reg, data);
+
+		result =  vega10_program_didt_config_registers(hwmgr, SEDiDtStallCtrlConfig_vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtStallPatternConfig_vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtWeightConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl1Config_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl2Config_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl3Config_vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtTuningCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SELCacConfig_Vega10, VEGA10_CONFIGREG_SECAC);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl0Config_Vega10, VEGA10_CONFIGREG_DIDT);
+
+		if (0 != result)
+			break;
+	}
+	cgs_write_register(hwmgr->device, reg, 0xE0000000);
+	cgs_lock_grbm_idx(hwmgr->device, false);
+
+	vega10_didt_set_mask(hwmgr, true);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	return 0;
+}
+
+static int vega10_disable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr)
+{
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	vega10_didt_set_mask(hwmgr, false);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	return 0;
+}
+
+static int vega10_enable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
+{
+	int result;
+	uint32_t num_se, count, data;
+	struct cgs_system_info sys_info = {0};
+	uint32_t reg;
+
+	sys_info.size = sizeof(struct cgs_system_info);
+	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+		num_se = sys_info.value;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	cgs_lock_grbm_idx(hwmgr->device, true);
+	reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
+	for (count = 0; count < num_se; count++) {
+		data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
+		cgs_write_register(hwmgr->device, reg, data);
+
+		result = vega10_program_didt_config_registers(hwmgr, SEDiDtStallCtrlConfig_vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtStallPatternConfig_vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl3Config_vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl0Config_Vega10, VEGA10_CONFIGREG_DIDT);
+		if (0 != result)
+			break;
+	}
+	cgs_write_register(hwmgr->device, reg, 0xE0000000);
+	cgs_lock_grbm_idx(hwmgr->device, false);
+
+	vega10_didt_set_mask(hwmgr, true);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	vega10_program_gc_didt_config_registers(hwmgr, GCDiDtDroopCtrlConfig_vega10);
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_GCEDC))
+		vega10_program_gc_didt_config_registers(hwmgr, GCDiDtCtrl0Config_vega10);
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_PSM))
+		vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMInitConfig_vega10);
+
+	return 0;
+}
+
+static int vega10_disable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
+{
+	uint32_t data;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	vega10_didt_set_mask(hwmgr, false);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_GCEDC)) {
+		data = 0x00000000;
+		cgs_write_register(hwmgr->device, mmGC_DIDT_CTRL0, data);
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_PSM))
+		vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMResetConfig_vega10);
+
+	return 0;
+}
+
+static int vega10_enable_se_edc_config(struct pp_hwmgr *hwmgr)
+{
+	int result;
+	uint32_t num_se, count, data;
+	struct cgs_system_info sys_info = {0};
+	uint32_t reg;
+
+	sys_info.size = sizeof(struct cgs_system_info);
+	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+		num_se = sys_info.value;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	cgs_lock_grbm_idx(hwmgr->device, true);
+	reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
+	for (count = 0; count < num_se; count++) {
+		data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
+		cgs_write_register(hwmgr->device, reg, data);
+		result = vega10_program_didt_config_registers(hwmgr, SEDiDtWeightConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEEDCStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEEDCStallDelayConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEEDCThresholdConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEEDCCtrlResetConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, SEEDCCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+
+		if (0 != result)
+			break;
+	}
+	cgs_write_register(hwmgr->device, reg, 0xE0000000);
+	cgs_lock_grbm_idx(hwmgr->device, false);
+
+	vega10_didt_set_mask(hwmgr, true);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	return 0;
+}
+
+static int vega10_disable_se_edc_config(struct pp_hwmgr *hwmgr)
+{
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	vega10_didt_set_mask(hwmgr, false);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	return 0;
+}
+
+static int vega10_enable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
+{
+	int result;
+	uint32_t num_se;
+	uint32_t count, data;
+	struct cgs_system_info sys_info = {0};
+	uint32_t reg;
+
+	sys_info.size = sizeof(struct cgs_system_info);
+	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+		num_se = sys_info.value;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	vega10_program_gc_didt_config_registers(hwmgr, AvfsPSMResetConfig_vega10);
+
+	cgs_lock_grbm_idx(hwmgr->device, true);
+	reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
+	for (count = 0; count < num_se; count++) {
+		data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
+		cgs_write_register(hwmgr->device, reg, data);
+		result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCStallDelayConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCCtrlResetConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+		result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+
+		if (0 != result)
+			break;
+	}
+	cgs_write_register(hwmgr->device, reg, 0xE0000000);
+	cgs_lock_grbm_idx(hwmgr->device, false);
+
+	vega10_didt_set_mask(hwmgr, true);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	vega10_program_gc_didt_config_registers(hwmgr, PSMGCEDCDroopCtrlConfig_vega10);
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_GCEDC)) {
+		vega10_program_gc_didt_config_registers(hwmgr, PSMGCEDCCtrlResetConfig_vega10);
+		vega10_program_gc_didt_config_registers(hwmgr, PSMGCEDCCtrlConfig_vega10);
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_PSM))
+		vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMInitConfig_vega10);
+
+	return 0;
+}
+
+static int vega10_disable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
+{
+	uint32_t data;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	vega10_didt_set_mask(hwmgr, false);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_GCEDC)) {
+		data = 0x00000000;
+		cgs_write_register(hwmgr->device, mmGC_EDC_CTRL, data);
+	}
+
+	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_PSM))
+		vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMResetConfig_vega10);
+
+	return 0;
+}
+
+static int vega10_enable_se_edc_force_stall_config(struct pp_hwmgr *hwmgr)
+{
+	uint32_t reg;
+	int result;
+
+	cgs_enter_safe_mode(hwmgr->device, true);
+
+	cgs_lock_grbm_idx(hwmgr->device, true);
+	reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
+	cgs_write_register(hwmgr->device, reg, 0xE0000000);
+	cgs_lock_grbm_idx(hwmgr->device, false);
+
+	result = vega10_program_didt_config_registers(hwmgr, SEEDCForceStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+	result |= vega10_program_didt_config_registers(hwmgr, SEEDCCtrlForceStallConfig_Vega10, VEGA10_CONFIGREG_DIDT);
+	if (0 != result)
+		return result;
+
+	vega10_didt_set_mask(hwmgr, true);
+
+	cgs_enter_safe_mode(hwmgr->device, false);
+
+	return 0;
+}
+
+static int vega10_disable_se_edc_force_stall_config(struct pp_hwmgr *hwmgr)
+{
+	int result;
+
+	result = vega10_disable_se_edc_config(hwmgr);
+	PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDtConfig] Pre DIDT disable clock gating failed!", return result);
+
+	return 0;
+}
+
+int vega10_enable_didt_config(struct pp_hwmgr *hwmgr)
+{
+	int result = 0;
+	struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr->backend);
+
+	if (data->smu_features[GNLD_DIDT].supported) {
+		if (data->smu_features[GNLD_DIDT].enabled)
+			PP_DBG_LOG("[EnableDiDtConfig] Feature DiDt Already enabled!\n");
+
+		switch (data->registry_data.didt_mode) {
+		case 0:
+			result = vega10_enable_cac_driving_se_didt_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 0 Failed!", return result);
+			break;
+		case 2:
+			result = vega10_enable_psm_gc_didt_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 2 Failed!", return result);
+			break;
+		case 3:
+			result = vega10_enable_se_edc_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 3 Failed!", return result);
+			break;
+		case 1:
+		case 4:
+		case 5:
+			result = vega10_enable_psm_gc_edc_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 5 Failed!", return result);
+			break;
+		case 6:
+			result = vega10_enable_se_edc_force_stall_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 6 Failed!", return result);
+			break;
+		default:
+			result = -EINVAL;
+			break;
+		}
+
+		if (0 == result) {
+			PP_ASSERT_WITH_CODE((!vega10_enable_smc_features(hwmgr->smumgr, true, data->smu_features[GNLD_DIDT].smu_feature_bitmap)),
+				"[EnableDiDtConfig] Attempt to Enable DiDt feature Failed!", return result);
+			data->smu_features[GNLD_DIDT].enabled = true;
+		}
+	}
+
+	return result;
+}
+
+int vega10_disable_didt_config(struct pp_hwmgr *hwmgr)
+{
+	int result = 0;
+	struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr->backend);
+
+	if (data->smu_features[GNLD_DIDT].supported) {
+		if (!data->smu_features[GNLD_DIDT].enabled)
+			PP_DBG_LOG("[DisableDiDtConfig] Feature DiDt Already Disabled!\n");
+
+		switch (data->registry_data.didt_mode) {
+		case 0:
+			result = vega10_disable_cac_driving_se_didt_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 0 Failed!", return result);
+			break;
+		case 2:
+			result = vega10_disable_psm_gc_didt_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 2 Failed!", return result);
+			break;
+		case 3:
+			result = vega10_disable_se_edc_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 3 Failed!", return result);
+			break;
+		case 1:
+		case 4:
+		case 5:
+			result = vega10_disable_psm_gc_edc_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 5 Failed!", return result);
+			break;
+		case 6:
+			result = vega10_disable_se_edc_force_stall_config(hwmgr);
+			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 6 Failed!", return result);
+			break;
+		default:
+			result = -EINVAL;
+			break;
+		}
+
+		if (0 == result) {
+			PP_ASSERT_WITH_CODE((0 != vega10_enable_smc_features(hwmgr->smumgr, false, data->smu_features[GNLD_DIDT].smu_feature_bitmap)),
+					"[DisableDiDtConfig] Attempt to Disable DiDt feature Failed!", return result);
+			data->smu_features[GNLD_DIDT].enabled = false;
+		}
+	}
+
+	return result;
+}
 
 void vega10_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
 {
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
index 9ecaa27..b95771a 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
@@ -31,6 +31,12 @@ enum vega10_pt_config_reg_type {
 	VEGA10_CONFIGREG_MAX
 };
 
+enum vega10_didt_config_reg_type {
+	VEGA10_CONFIGREG_DIDT = 0,
+	VEGA10_CONFIGREG_GCCAC,
+	VEGA10_CONFIGREG_SECAC
+};
+
 /* PowerContainment Features */
 #define POWERCONTAINMENT_FEATURE_DTE             0x00000001
 #define POWERCONTAINMENT_FEATURE_TDCLimit        0x00000002
@@ -44,6 +50,13 @@ struct vega10_pt_config_reg {
 	enum vega10_pt_config_reg_type       type;
 };
 
+struct vega10_didt_config_reg {
+	uint32_t		offset;
+	uint32_t		mask;
+	uint32_t		shift;
+	uint32_t		value;
+};
+
 struct vega10_pt_defaults {
     uint8_t   SviLoadLineEn;
     uint8_t   SviLoadLineVddC;
@@ -62,5 +75,8 @@ int vega10_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n);
 int vega10_power_control_set_level(struct pp_hwmgr *hwmgr);
 int vega10_disable_power_containment(struct pp_hwmgr *hwmgr);
 
+int vega10_enable_didt_config(struct pp_hwmgr *hwmgr);
+int vega10_disable_didt_config(struct pp_hwmgr *hwmgr);
+
 #endif  /* _VEGA10_POWERTUNE_H_ */
 
diff --git a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
index a1ebe10..a4c8b09 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
@@ -164,9 +164,14 @@ enum phm_platform_caps {
 	PHM_PlatformCaps_EnablePlatformPowerManagement,         /* indicates that Platform Power Management feature is supported */
 	PHM_PlatformCaps_SurpriseRemoval,                       /* indicates that surprise removal feature is requested */
 	PHM_PlatformCaps_NewCACVoltage,                         /* indicates new CAC voltage table support */
+	PHM_PlatformCaps_DiDtSupport,                           /* for dI/dT feature */
 	PHM_PlatformCaps_DBRamping,                             /* for dI/dT feature */
 	PHM_PlatformCaps_TDRamping,                             /* for dI/dT feature */
 	PHM_PlatformCaps_TCPRamping,                            /* for dI/dT feature */
+	PHM_PlatformCaps_DBRRamping,                            /* for dI/dT feature */
+	PHM_PlatformCaps_DiDtEDCEnable,                         /* for dI/dT feature */
+	PHM_PlatformCaps_GCEDC,                                 /* for dI/dT feature */
+	PHM_PlatformCaps_PSM,                                   /* for dI/dT feature */
 	PHM_PlatformCaps_EnableSMU7ThermalManagement,           /* SMC will manage thermal events */
 	PHM_PlatformCaps_FPS,                                   /* FPS support */
 	PHM_PlatformCaps_ACP,                                   /* ACP support */
diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h b/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
index f3f9ebb..822cd8b 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
@@ -42,6 +42,12 @@
 		}				\
 	} while (0)
 
+#define PP_ASSERT(cond, msg)	\
+	do {					\
+		if (!(cond)) {			\
+			pr_warn("%s\n", msg);	\
+		}				\
+	} while (0)
 
 #define PP_DBG_LOG(fmt, ...) \
 	do { \
diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h b/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
index 227d999..a511611 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
@@ -41,6 +41,8 @@ inline static uint32_t soc15_get_register_offset(
 		reg = MP1_BASE.instance[inst].segment[segment] + offset;
 	else if (hw_id == DF_HWID)
 		reg = DF_BASE.instance[inst].segment[segment] + offset;
+	else if (hw_id == GC_HWID)
+		reg = GC_BASE.instance[inst].segment[segment] + offset;
 
 	return reg;
 }
-- 
2.7.4

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* RE: [PATCH 6/6] drm/amd/powerplay: added didt support for vega10
       [not found]     ` <1499392755-23507-6-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
@ 2017-07-07  3:30       ` Deucher, Alexander
  0 siblings, 0 replies; 7+ messages in thread
From: Deucher, Alexander @ 2017-07-07  3:30 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Quan, Evan

> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org] On Behalf
> Of Evan Quan
> Sent: Thursday, July 06, 2017 9:59 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander; Quan, Evan
> Subject: [PATCH 6/6] drm/amd/powerplay: added didt support for vega10
> 
> Change-Id: If2f955469e5b037e0726999b10eb10c08740b208
> Signed-off-by: Evan Quan <evan.quan@amd.com>

Series is:
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c |   56 +
>  drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h |    5 +
>  .../gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c | 1291
> ++++++++++++++++++++
>  .../gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h |   16 +
>  .../gpu/drm/amd/powerplay/inc/hardwaremanager.h    |    5 +
>  drivers/gpu/drm/amd/powerplay/inc/pp_debug.h       |    6 +
>  drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h       |    2 +
>  7 files changed, 1381 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
> index 780efaf..ae11d30 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
> @@ -145,6 +145,19 @@ static void vega10_set_default_registry_data(struct
> pp_hwmgr *hwmgr)
>  	data->registry_data.vr1hot_enabled = 1;
>  	data->registry_data.regulator_hot_gpio_support = 1;
> 
> +	data->registry_data.didt_support = 1;
> +	if (data->registry_data.didt_support) {
> +		data->registry_data.didt_mode = 6;
> +		data->registry_data.sq_ramping_support = 1;
> +		data->registry_data.db_ramping_support = 0;
> +		data->registry_data.td_ramping_support = 0;
> +		data->registry_data.tcp_ramping_support = 0;
> +		data->registry_data.dbr_ramping_support = 0;
> +		data->registry_data.edc_didt_support = 1;
> +		data->registry_data.gc_didt_support = 0;
> +		data->registry_data.psm_didt_support = 0;
> +	}
> +
>  	data->display_voltage_mode =
> PPVEGA10_VEGA10DISPLAYVOLTAGEMODE_DFLT;
>  	data->dcef_clk_quad_eqn_a =
> PPREGKEY_VEGA10QUADRATICEQUATION_DFLT;
>  	data->dcef_clk_quad_eqn_b =
> PPREGKEY_VEGA10QUADRATICEQUATION_DFLT;
> @@ -222,6 +235,8 @@ static int vega10_set_features_platform_caps(struct
> pp_hwmgr *hwmgr)
>  	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
>  			PHM_PlatformCaps_PowerContainment);
>  	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> +			PHM_PlatformCaps_DiDtSupport);
> +	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
>  			PHM_PlatformCaps_SQRamping);
>  	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
>  			PHM_PlatformCaps_DBRamping);
> @@ -229,6 +244,34 @@ static int vega10_set_features_platform_caps(struct
> pp_hwmgr *hwmgr)
>  			PHM_PlatformCaps_TDRamping);
>  	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
>  			PHM_PlatformCaps_TCPRamping);
> +	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> +			PHM_PlatformCaps_DBRRamping);
> +	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> +			PHM_PlatformCaps_DiDtEDCEnable);
> +	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> +			PHM_PlatformCaps_GCEDC);
> +	phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> +			PHM_PlatformCaps_PSM);
> +
> +	if (data->registry_data.didt_support) {
> +		phm_cap_set(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_DiDtSupport);
> +		if (data->registry_data.sq_ramping_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_SQRamping);
> +		if (data->registry_data.db_ramping_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_DBRamping);
> +		if (data->registry_data.td_ramping_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_TDRamping);
> +		if (data->registry_data.tcp_ramping_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_TCPRamping);
> +		if (data->registry_data.dbr_ramping_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_DBRRamping);
> +		if (data->registry_data.edc_didt_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_DiDtEDCEnable);
> +		if (data->registry_data.gc_didt_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_GCEDC);
> +		if (data->registry_data.psm_didt_support)
> +			phm_cap_set(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_PSM);
> +	}
> 
>  	if (data->registry_data.power_containment_support)
>  		phm_cap_set(hwmgr->platform_descriptor.platformCaps,
> @@ -321,6 +364,7 @@ static void vega10_init_dpm_defaults(struct
> pp_hwmgr *hwmgr)
>  	data->smu_features[GNLD_FAN_CONTROL].smu_feature_id =
>  			FEATURE_FAN_CONTROL_BIT;
>  	data->smu_features[GNLD_ACG].smu_feature_id =
> FEATURE_ACG_BIT;
> +	data->smu_features[GNLD_DIDT].smu_feature_id =
> FEATURE_GFX_EDC_BIT;
> 
>  	if (!data->registry_data.prefetcher_dpm_key_disabled)
>  		data->smu_features[GNLD_DPM_PREFETCHER].supported =
> true;
> @@ -390,6 +434,9 @@ static void vega10_init_dpm_defaults(struct
> pp_hwmgr *hwmgr)
>  	if ((data->smu_version & 0xff000000) == 0x5000000)
>  		data->smu_features[GNLD_ACG].supported = true;
> 
> +	if (data->registry_data.didt_support)
> +		data->smu_features[GNLD_DIDT].supported = true;
> +
>  }
> 
>  #ifdef PPLIB_VEGA10_EVV_SUPPORT
> @@ -2906,6 +2953,11 @@ static int vega10_enable_dpm_tasks(struct
> pp_hwmgr *hwmgr)
>  	PP_ASSERT_WITH_CODE(!tmp_result,
>  			"Failed to start DPM!", result = tmp_result);
> 
> +	/* enable didt, do not abort if failed didt */
> +	tmp_result = vega10_enable_didt_config(hwmgr);
> +	PP_ASSERT(!tmp_result,
> +			"Failed to enable didt config!");
> +
>  	tmp_result = vega10_enable_power_containment(hwmgr);
>  	PP_ASSERT_WITH_CODE(!tmp_result,
>  			"Failed to enable power containment!",
> @@ -4735,6 +4787,10 @@ static int vega10_disable_dpm_tasks(struct
> pp_hwmgr *hwmgr)
>  	PP_ASSERT_WITH_CODE((tmp_result == 0),
>  			"Failed to disable power containment!", result =
> tmp_result);
> 
> +	tmp_result = vega10_disable_didt_config(hwmgr);
> +	PP_ASSERT_WITH_CODE((tmp_result == 0),
> +			"Failed to disable didt config!", result = tmp_result);
> +
>  	tmp_result = vega10_avfs_enable(hwmgr, false);
>  	PP_ASSERT_WITH_CODE((tmp_result == 0),
>  			"Failed to disable AVFS!", result = tmp_result);
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
> index 4150801..5c97a8b 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.h
> @@ -232,7 +232,9 @@ struct vega10_registry_data {
>  	uint8_t   cac_support;
>  	uint8_t   clock_stretcher_support;
>  	uint8_t   db_ramping_support;
> +	uint8_t   didt_mode;
>  	uint8_t   didt_support;
> +	uint8_t   edc_didt_support;
>  	uint8_t   dynamic_state_patching_support;
>  	uint8_t   enable_pkg_pwr_tracking_feature;
>  	uint8_t   enable_tdc_limit_feature;
> @@ -265,6 +267,9 @@ struct vega10_registry_data {
>  	uint8_t   tcp_ramping_support;
>  	uint8_t   tdc_support;
>  	uint8_t   td_ramping_support;
> +	uint8_t   dbr_ramping_support;
> +	uint8_t   gc_didt_support;
> +	uint8_t   psm_didt_support;
>  	uint8_t   thermal_out_gpio_support;
>  	uint8_t   thermal_support;
>  	uint8_t   fw_ctf_enabled;
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
> index 3f72268..22334a1 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
> @@ -26,7 +26,1298 @@
>  #include "vega10_powertune.h"
>  #include "vega10_smumgr.h"
>  #include "vega10_ppsmc.h"
> +#include "vega10_inc.h"
>  #include "pp_debug.h"
> +#include "pp_soc15.h"
> +
> +static const struct vega10_didt_config_reg
> SEDiDtTuningCtrlConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ */
> +	{   ixDIDT_SQ_TUNING_CTRL,
> DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,
> DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,        0x3853 },
> +	{   ixDIDT_SQ_TUNING_CTRL,
> DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,
> DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,        0x3153 },
> +
> +	/* DIDT_TD */
> +	{   ixDIDT_TD_TUNING_CTRL,
> DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,
> DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,        0x0dde },
> +	{   ixDIDT_TD_TUNING_CTRL,
> DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,
> DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,        0x0dde },
> +
> +	/* DIDT_TCP */
> +	{   ixDIDT_TCP_TUNING_CTRL,
> DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,
> DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,       0x3dde },
> +	{   ixDIDT_TCP_TUNING_CTRL,
> DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,
> DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,       0x3dde },
> +
> +	/* DIDT_DB */
> +	{   ixDIDT_DB_TUNING_CTRL,
> DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK,
> DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT,        0x3dde },
> +	{   ixDIDT_DB_TUNING_CTRL,
> DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK,
> DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT,        0x3dde },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEDiDtCtrl3Config_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset               Mask                                                     Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/*DIDT_SQ_CTRL3 */
> +	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__GC_DIDT_ENABLE_MASK,
> DIDT_SQ_CTRL3__GC_DIDT_ENABLE__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__THROTTLE_POLICY_MASK,
> DIDT_SQ_CTRL3__THROTTLE_POLICY__SHIFT,             0x0003 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,             0x0000
> },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,
> DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,             0x0003
> },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__QUALIFY_STALL_EN_MASK,
> DIDT_SQ_CTRL3__QUALIFY_STALL_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,     DIDT_SQ_CTRL3__DIDT_STALL_SEL_MASK,
> DIDT_SQ_CTRL3__DIDT_STALL_SEL__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__DIDT_FORCE_STALL_MASK,
> DIDT_SQ_CTRL3__DIDT_FORCE_STALL__SHIFT,             0x0000 },
> +	{   ixDIDT_SQ_CTRL3,
> DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN_MASK,
> DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,             0x0000 },
> +
> +	/*DIDT_TCP_CTRL3 */
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__GC_DIDT_ENABLE_MASK,
> DIDT_TCP_CTRL3__GC_DIDT_ENABLE__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__THROTTLE_POLICY_MASK,
> DIDT_TCP_CTRL3__THROTTLE_POLICY__SHIFT,            0x0003 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,            0x0000
> },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,
> DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,            0x0003
> },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__QUALIFY_STALL_EN_MASK,
> DIDT_TCP_CTRL3__QUALIFY_STALL_EN__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,    DIDT_TCP_CTRL3__DIDT_STALL_SEL_MASK,
> DIDT_TCP_CTRL3__DIDT_STALL_SEL__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__DIDT_FORCE_STALL_MASK,
> DIDT_TCP_CTRL3__DIDT_FORCE_STALL__SHIFT,            0x0000 },
> +	{   ixDIDT_TCP_CTRL3,
> DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN_MASK,
> DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,            0x0000 },
> +
> +	/*DIDT_TD_CTRL3 */
> +	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__GC_DIDT_ENABLE_MASK,
> DIDT_TD_CTRL3__GC_DIDT_ENABLE__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__THROTTLE_POLICY_MASK,
> DIDT_TD_CTRL3__THROTTLE_POLICY__SHIFT,             0x0003 },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,             0x0000
> },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,
> DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,             0x0003
> },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__QUALIFY_STALL_EN_MASK,
> DIDT_TD_CTRL3__QUALIFY_STALL_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_STALL_SEL_MASK,
> DIDT_TD_CTRL3__DIDT_STALL_SEL__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,     DIDT_TD_CTRL3__DIDT_FORCE_STALL_MASK,
> DIDT_TD_CTRL3__DIDT_FORCE_STALL__SHIFT,             0x0000 },
> +	{   ixDIDT_TD_CTRL3,
> DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN_MASK,
> DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,             0x0000 },
> +
> +	/*DIDT_DB_CTRL3 */
> +	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__GC_DIDT_ENABLE_MASK,
> DIDT_DB_CTRL3__GC_DIDT_ENABLE__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__THROTTLE_POLICY_MASK,
> DIDT_DB_CTRL3__THROTTLE_POLICY__SHIFT,             0x0003 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,             0x0000
> },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK,
> DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT,             0x0003
> },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK,
> DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__QUALIFY_STALL_EN_MASK,
> DIDT_DB_CTRL3__QUALIFY_STALL_EN__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,     DIDT_DB_CTRL3__DIDT_STALL_SEL_MASK,
> DIDT_DB_CTRL3__DIDT_STALL_SEL__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__DIDT_FORCE_STALL_MASK,
> DIDT_DB_CTRL3__DIDT_FORCE_STALL__SHIFT,             0x0000 },
> +	{   ixDIDT_DB_CTRL3,
> DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN_MASK,
> DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN__SHIFT,             0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEDiDtCtrl2Config_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                            Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ */
> +	{   ixDIDT_SQ_CTRL2,
> DIDT_SQ_CTRL2__MAX_POWER_DELTA_MASK,
> DIDT_SQ_CTRL2__MAX_POWER_DELTA__SHIFT,                 0x3853 },
> +	{   ixDIDT_SQ_CTRL2,
> DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,
> DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,        0x00c0 },
> +	{   ixDIDT_SQ_CTRL2,
> DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,
> DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,        0x0000 },
> +
> +	/* DIDT_TD */
> +	{   ixDIDT_TD_CTRL2,
> DIDT_TD_CTRL2__MAX_POWER_DELTA_MASK,
> DIDT_TD_CTRL2__MAX_POWER_DELTA__SHIFT,                 0x3fff },
> +	{   ixDIDT_TD_CTRL2,
> DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,
> DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,        0x00c0 },
> +	{   ixDIDT_TD_CTRL2,
> DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,
> DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,        0x0001 },
> +
> +	/* DIDT_TCP */
> +	{   ixDIDT_TCP_CTRL2,
> DIDT_TCP_CTRL2__MAX_POWER_DELTA_MASK,
> DIDT_TCP_CTRL2__MAX_POWER_DELTA__SHIFT,                0x3dde },
> +	{   ixDIDT_TCP_CTRL2,
> DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,
> DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,       0x00c0 },
> +	{   ixDIDT_TCP_CTRL2,
> DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,
> DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,       0x0001 },
> +
> +	/* DIDT_DB */
> +	{   ixDIDT_DB_CTRL2,
> DIDT_DB_CTRL2__MAX_POWER_DELTA_MASK,
> DIDT_DB_CTRL2__MAX_POWER_DELTA__SHIFT,                 0x3dde },
> +	{   ixDIDT_DB_CTRL2,
> DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK,
> DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT,        0x00c0 },
> +	{   ixDIDT_DB_CTRL2,
> DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK,
> DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT,        0x0001 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEDiDtCtrl1Config_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ */
> +	{   ixDIDT_SQ_CTRL1,
> DIDT_SQ_CTRL1__MIN_POWER_MASK,
> DIDT_SQ_CTRL1__MIN_POWER__SHIFT,                       0x0000 },
> +	{   ixDIDT_SQ_CTRL1,
> DIDT_SQ_CTRL1__MAX_POWER_MASK,
> DIDT_SQ_CTRL1__MAX_POWER__SHIFT,                       0xffff },
> +	/* DIDT_TD */
> +	{   ixDIDT_TD_CTRL1,
> DIDT_TD_CTRL1__MIN_POWER_MASK,
> DIDT_TD_CTRL1__MIN_POWER__SHIFT,                       0x0000 },
> +	{   ixDIDT_TD_CTRL1,
> DIDT_TD_CTRL1__MAX_POWER_MASK,
> DIDT_TD_CTRL1__MAX_POWER__SHIFT,                       0xffff },
> +	/* DIDT_TCP */
> +	{   ixDIDT_TCP_CTRL1,
> DIDT_TCP_CTRL1__MIN_POWER_MASK,
> DIDT_TCP_CTRL1__MIN_POWER__SHIFT,                      0x0000 },
> +	{   ixDIDT_TCP_CTRL1,
> DIDT_TCP_CTRL1__MAX_POWER_MASK,
> DIDT_TCP_CTRL1__MAX_POWER__SHIFT,                      0xffff },
> +	/* DIDT_DB */
> +	{   ixDIDT_DB_CTRL1,
> DIDT_DB_CTRL1__MIN_POWER_MASK,
> DIDT_DB_CTRL1__MIN_POWER__SHIFT,                       0x0000 },
> +	{   ixDIDT_DB_CTRL1,
> DIDT_DB_CTRL1__MAX_POWER_MASK,
> DIDT_DB_CTRL1__MAX_POWER__SHIFT,                       0xffff },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +
> +static const struct vega10_didt_config_reg SEDiDtWeightConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                  Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ */
> +	{   ixDIDT_SQ_WEIGHT0_3,               0xFFFFFFFF,                                           0,
> 0x2B363B1A },
> +	{   ixDIDT_SQ_WEIGHT4_7,               0xFFFFFFFF,                                           0,
> 0x270B2432 },
> +	{   ixDIDT_SQ_WEIGHT8_11,              0xFFFFFFFF,
> 0,                                                    0x00000018 },
> +
> +	/* DIDT_TD */
> +	{   ixDIDT_TD_WEIGHT0_3,               0xFFFFFFFF,                                           0,
> 0x2B1D220F },
> +	{   ixDIDT_TD_WEIGHT4_7,               0xFFFFFFFF,                                           0,
> 0x00007558 },
> +	{   ixDIDT_TD_WEIGHT8_11,              0xFFFFFFFF,
> 0,                                                    0x00000000 },
> +
> +	/* DIDT_TCP */
> +	{   ixDIDT_TCP_WEIGHT0_3,               0xFFFFFFFF,
> 0,                                                    0x5ACE160D },
> +	{   ixDIDT_TCP_WEIGHT4_7,               0xFFFFFFFF,
> 0,                                                    0x00000000 },
> +	{   ixDIDT_TCP_WEIGHT8_11,              0xFFFFFFFF,
> 0,                                                    0x00000000 },
> +
> +	/* DIDT_DB */
> +	{   ixDIDT_DB_WEIGHT0_3,                0xFFFFFFFF,                                          0,
> 0x0E152A0F },
> +	{   ixDIDT_DB_WEIGHT4_7,                0xFFFFFFFF,                                          0,
> 0x09061813 },
> +	{   ixDIDT_DB_WEIGHT8_11,               0xFFFFFFFF,
> 0,                                                    0x00000013 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEDiDtCtrl0Config_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ */
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK,
> DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__PHASE_OFFSET_MASK,
> DIDT_SQ_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_CTRL_RST_MASK,
> DIDT_SQ_CTRL0__DIDT_CTRL_RST__SHIFT,  0x0000 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN_MASK,
> DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN_MASK,
> DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,
> DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,
> DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT,  0xffff },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN_MASK,
> DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN_MASK,
> DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_SQ_CTRL0,
> DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,
> DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT,  0x0000 },
> +	/* DIDT_TD */
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK,
> DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__PHASE_OFFSET_MASK,
> DIDT_TD_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_CTRL_RST_MASK,
> DIDT_TD_CTRL0__DIDT_CTRL_RST__SHIFT,  0x0000 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN_MASK,
> DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN_MASK,
> DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,
> DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,
> DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT,  0xffff },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN_MASK,
> DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN_MASK,
> DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_TD_CTRL0,
> DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,
> DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT,  0x0000 },
> +	/* DIDT_TCP */
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK,
> DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__PHASE_OFFSET_MASK,
> DIDT_TCP_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_CTRL_RST_MASK,
> DIDT_TCP_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN_MASK,
> DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN__SHIFT, 0x0001 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN_MASK,
> DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT, 0x0001 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,
> DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT, 0x0001 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,
> DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT, 0xffff },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN_MASK,
> DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN__SHIFT, 0x0000 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN_MASK,
> DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN__SHIFT, 0x0000 },
> +	{  ixDIDT_TCP_CTRL0,
> DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,
> DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT, 0x0000 },
> +	/* DIDT_DB */
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK,
> DIDT_DB_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__PHASE_OFFSET_MASK,
> DIDT_DB_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_CTRL_RST_MASK,
> DIDT_DB_CTRL0__DIDT_CTRL_RST__SHIFT,  0x0000 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,
> DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN_MASK,
> DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN_MASK,
> DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK,
> DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT,  0x0001 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK,
> DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT,  0xffff },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN_MASK,
> DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN_MASK,
> DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN__SHIFT,  0x0000 },
> +	{  ixDIDT_DB_CTRL0,
> DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK,
> DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT,  0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +
> +static const struct vega10_didt_config_reg SEDiDtStallCtrlConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                   Mask                                                     Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ */
> +	{   ixDIDT_SQ_STALL_CTRL,
> DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,
> DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,     0x0004 },
> +	{   ixDIDT_SQ_STALL_CTRL,
> DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,
> DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,     0x0004 },
> +	{   ixDIDT_SQ_STALL_CTRL,
> DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,
> DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,     0x000a
> },
> +	{   ixDIDT_SQ_STALL_CTRL,
> DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,
> DIDT_SQ_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,     0x000a
> },
> +
> +	/* DIDT_TD */
> +	{   ixDIDT_TD_STALL_CTRL,
> DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,
> DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,     0x0001 },
> +	{   ixDIDT_TD_STALL_CTRL,
> DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,
> DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,     0x0001 },
> +	{   ixDIDT_TD_STALL_CTRL,
> DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,
> DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,     0x000a
> },
> +	{   ixDIDT_TD_STALL_CTRL,
> DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,
> DIDT_TD_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,     0x000a
> },
> +
> +	/* DIDT_TCP */
> +	{   ixDIDT_TCP_STALL_CTRL,
> DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,
> DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,    0x0001 },
> +	{   ixDIDT_TCP_STALL_CTRL,
> DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,
> DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,    0x0001 },
> +	{   ixDIDT_TCP_STALL_CTRL,
> DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,
> DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,    0x000a
> },
> +	{   ixDIDT_TCP_STALL_CTRL,
> DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,
> DIDT_TCP_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,
> 0x000a },
> +
> +	/* DIDT_DB */
> +	{   ixDIDT_DB_STALL_CTRL,
> DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK,
> DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT,     0x0004 },
> +	{   ixDIDT_DB_STALL_CTRL,
> DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK,
> DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT,     0x0004 },
> +	{   ixDIDT_DB_STALL_CTRL,
> DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI_MASK,
> DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT,     0x000a
> },
> +	{   ixDIDT_DB_STALL_CTRL,
> DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO_MASK,
> DIDT_DB_STALL_CTRL__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT,     0x000a
> },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> SEDiDtStallPatternConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                        Mask                                                      Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* DIDT_SQ_STALL_PATTERN_1_2 */
> +	{   ixDIDT_SQ_STALL_PATTERN_1_2,
> DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,
> DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT,  0x0001
> },
> +	{   ixDIDT_SQ_STALL_PATTERN_1_2,
> DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,
> DIDT_SQ_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT,  0x0001
> },
> +
> +	/* DIDT_SQ_STALL_PATTERN_3_4 */
> +	{   ixDIDT_SQ_STALL_PATTERN_3_4,
> DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,
> DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT,  0x0001
> },
> +	{   ixDIDT_SQ_STALL_PATTERN_3_4,
> DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,
> DIDT_SQ_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT,  0x0001
> },
> +
> +	/* DIDT_SQ_STALL_PATTERN_5_6 */
> +	{   ixDIDT_SQ_STALL_PATTERN_5_6,
> DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,
> DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT,  0x0000
> },
> +	{   ixDIDT_SQ_STALL_PATTERN_5_6,
> DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,
> DIDT_SQ_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT,  0x0000
> },
> +
> +	/* DIDT_SQ_STALL_PATTERN_7 */
> +	{   ixDIDT_SQ_STALL_PATTERN_7,
> DIDT_SQ_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,
> DIDT_SQ_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,    0x0000 },
> +
> +	/* DIDT_TCP_STALL_PATTERN_1_2 */
> +	{   ixDIDT_TCP_STALL_PATTERN_1_2,
> DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,
> DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT, 0x0001
> },
> +	{   ixDIDT_TCP_STALL_PATTERN_1_2,
> DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,
> DIDT_TCP_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT, 0x0001
> },
> +
> +	/* DIDT_TCP_STALL_PATTERN_3_4 */
> +	{   ixDIDT_TCP_STALL_PATTERN_3_4,
> DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,
> DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT, 0x0001
> },
> +	{   ixDIDT_TCP_STALL_PATTERN_3_4,
> DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,
> DIDT_TCP_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT, 0x0001
> },
> +
> +	/* DIDT_TCP_STALL_PATTERN_5_6 */
> +	{   ixDIDT_TCP_STALL_PATTERN_5_6,
> DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,
> DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT, 0x0000
> },
> +	{   ixDIDT_TCP_STALL_PATTERN_5_6,
> DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,
> DIDT_TCP_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT, 0x0000
> },
> +
> +	/* DIDT_TCP_STALL_PATTERN_7 */
> +	{   ixDIDT_TCP_STALL_PATTERN_7,
> DIDT_TCP_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,
> DIDT_TCP_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,   0x0000 },
> +
> +	/* DIDT_TD_STALL_PATTERN_1_2 */
> +	{   ixDIDT_TD_STALL_PATTERN_1_2,
> DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,
> DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT,  0x0001
> },
> +	{   ixDIDT_TD_STALL_PATTERN_1_2,
> DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,
> DIDT_TD_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT,  0x0001
> },
> +
> +	/* DIDT_TD_STALL_PATTERN_3_4 */
> +	{   ixDIDT_TD_STALL_PATTERN_3_4,
> DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,
> DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT,  0x0001
> },
> +	{   ixDIDT_TD_STALL_PATTERN_3_4,
> DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,
> DIDT_TD_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT,  0x0001
> },
> +
> +	/* DIDT_TD_STALL_PATTERN_5_6 */
> +	{   ixDIDT_TD_STALL_PATTERN_5_6,
> DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,
> DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT,  0x0000
> },
> +	{   ixDIDT_TD_STALL_PATTERN_5_6,
> DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,
> DIDT_TD_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT,  0x0000
> },
> +
> +	/* DIDT_TD_STALL_PATTERN_7 */
> +	{   ixDIDT_TD_STALL_PATTERN_7,
> DIDT_TD_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,
> DIDT_TD_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,    0x0000 },
> +
> +	/* DIDT_DB_STALL_PATTERN_1_2 */
> +	{   ixDIDT_DB_STALL_PATTERN_1_2,
> DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1_MASK,
> DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_1__SHIFT,  0x0001
> },
> +	{   ixDIDT_DB_STALL_PATTERN_1_2,
> DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2_MASK,
> DIDT_DB_STALL_PATTERN_1_2__DIDT_STALL_PATTERN_2__SHIFT,  0x0001
> },
> +
> +	/* DIDT_DB_STALL_PATTERN_3_4 */
> +	{   ixDIDT_DB_STALL_PATTERN_3_4,
> DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3_MASK,
> DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_3__SHIFT,  0x0001
> },
> +	{   ixDIDT_DB_STALL_PATTERN_3_4,
> DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4_MASK,
> DIDT_DB_STALL_PATTERN_3_4__DIDT_STALL_PATTERN_4__SHIFT,  0x0001
> },
> +
> +	/* DIDT_DB_STALL_PATTERN_5_6 */
> +	{   ixDIDT_DB_STALL_PATTERN_5_6,
> DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5_MASK,
> DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_5__SHIFT,  0x0000
> },
> +	{   ixDIDT_DB_STALL_PATTERN_5_6,
> DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6_MASK,
> DIDT_DB_STALL_PATTERN_5_6__DIDT_STALL_PATTERN_6__SHIFT,  0x0000
> },
> +
> +	/* DIDT_DB_STALL_PATTERN_7 */
> +	{   ixDIDT_DB_STALL_PATTERN_7,
> DIDT_DB_STALL_PATTERN_7__DIDT_STALL_PATTERN_7_MASK,
> DIDT_DB_STALL_PATTERN_7__DIDT_STALL_PATTERN_7__SHIFT,    0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SELCacConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x00060021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x00860021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x01060021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x01860021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x02060021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x02860021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x03060021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x03860021 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x04060021 },
> +	/* TD */
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x000E0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x008E0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x010E0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x018E0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x020E0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x028E0020 },
> +	/* TCP */
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x001c0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x009c0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x011c0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x019c0020 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x021c0020 },
> +	/* DB */
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x00200008 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x00820008 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x01020008 },
> +	{   ixSE_CAC_CNTL,                     0xFFFFFFFF,                                          0,
> 0x01820008 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +
> +static const struct vega10_didt_config_reg
> SEEDCStallPatternConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,
> 0,                                                     0x00030001 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,
> 0,                                                     0x000F0007 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,
> 0,                                                     0x003F001F },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_7,     0xFFFFFFFF,
> 0,                                                     0x0000007F },
> +	/* TD */
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_7,     0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	/* TCP */
> +	{   ixDIDT_TCP_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TCP_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TCP_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TCP_EDC_STALL_PATTERN_7,     0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	/* DB */
> +	{   ixDIDT_DB_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_DB_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_DB_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_DB_EDC_STALL_PATTERN_7,     0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> SEEDCForceStallPatternConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,
> 0,                                                     0x00000015 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_7,     0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	/* TD */
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_1_2,   0xFFFFFFFF,
> 0,                                                     0x00000015 },
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_3_4,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_5_6,   0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_PATTERN_7,     0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEEDCStallDelayConfig_Vega10[]
> =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_1,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_2,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_3,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_4,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	/* TD */
> +	{   ixDIDT_TD_EDC_STALL_DELAY_1,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_DELAY_2,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_DELAY_3,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TD_EDC_STALL_DELAY_4,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	/* TCP */
> +	{   ixDIDT_TCP_EDC_STALL_DELAY_1,      0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TCP_EDC_STALL_DELAY_2,      0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TCP_EDC_STALL_DELAY_3,      0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	{   ixDIDT_TCP_EDC_STALL_DELAY_4,      0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +	/* DB */
> +	{   ixDIDT_DB_EDC_STALL_DELAY_1,       0xFFFFFFFF,
> 0,                                                     0x00000000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEEDCThresholdConfig_Vega10[]
> =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   ixDIDT_SQ_EDC_THRESHOLD,           0xFFFFFFFF,
> 0,                                                     0x0000010E },
> +	{   ixDIDT_TD_EDC_THRESHOLD,           0xFFFFFFFF,
> 0,                                                     0xFFFFFFFF },
> +	{   ixDIDT_TCP_EDC_THRESHOLD,          0xFFFFFFFF,
> 0,                                                     0xFFFFFFFF },
> +	{   ixDIDT_DB_EDC_THRESHOLD,           0xFFFFFFFF,
> 0,                                                     0xFFFFFFFF },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEEDCCtrlResetConfig_Vega10[]
> =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg SEEDCCtrlConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0004 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x0006 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> SEEDCCtrlForceStallConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ */
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x000C },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
> +
> +	/* TD */
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_EN_MASK,
> DIDT_TD_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK,
> DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_FORCE_STALL_MASK,
> DIDT_TD_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0001 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0001 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_TD_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x000E },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__GC_EDC_EN_MASK,
> DIDT_TD_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,
> DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,
> DIDT_TD_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +	{   ixDIDT_TD_EDC_CTRL,
> DIDT_TD_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,
> DIDT_TD_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> GCDiDtDroopCtrlConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   mmGC_DIDT_DROOP_CTRL,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN_MASK,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_DROOP_CTRL,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD_MASK,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_DROOP_CTRL,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX_MASK,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_DROOP_CTRL,
> GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL_MASK,
> GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_DROOP_CTRL,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW_MASK,
> GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW__SHIFT,  0x0000
> },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg    GCDiDtCtrl0Config_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   mmGC_DIDT_CTRL0,
> GC_DIDT_CTRL0__DIDT_CTRL_EN_MASK,
> GC_DIDT_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_CTRL0,
> GC_DIDT_CTRL0__PHASE_OFFSET_MASK,
> GC_DIDT_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_CTRL0,
> GC_DIDT_CTRL0__DIDT_SW_RST_MASK,
> GC_DIDT_CTRL0__DIDT_SW_RST__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_CTRL0,
> GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,
> GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
> +	{   mmGC_DIDT_CTRL0,
> GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,
> GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,  0x0000 },
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +
> +static const struct vega10_didt_config_reg
> PSMSEEDCStallPatternConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ EDC STALL PATTERNs */
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,
> DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_1_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_1__SHIFT,
> 0x0101 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_1_2,
> DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_2_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_1_2__EDC_STALL_PATTERN_2__SHIFT,
> 0x0101 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,
> DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_3_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_3__SHIFT,
> 0x1111 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_3_4,
> DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_4_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_3_4__EDC_STALL_PATTERN_4__SHIFT,
> 0x1111 },
> +
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,
> DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_5_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_5__SHIFT,
> 0x1515 },
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_5_6,
> DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_6_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_5_6__EDC_STALL_PATTERN_6__SHIFT,
> 0x1515 },
> +
> +	{   ixDIDT_SQ_EDC_STALL_PATTERN_7,
> DIDT_SQ_EDC_STALL_PATTERN_7__EDC_STALL_PATTERN_7_MASK,
> DIDT_SQ_EDC_STALL_PATTERN_7__EDC_STALL_PATTERN_7__SHIFT,
> 0x5555 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> PSMSEEDCStallDelayConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ EDC STALL DELAYs */
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_1,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ0_MASK,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ0__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_1,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ1_MASK,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ1__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_1,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ2_MASK,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ2__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_1,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ3_MASK,
> DIDT_SQ_EDC_STALL_DELAY_1__EDC_STALL_DELAY_SQ3__SHIFT,  0x0000 },
> +
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_2,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ4_MASK,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ4__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_2,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5_MASK,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_2,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6_MASK,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_2,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7_MASK,
> DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7__SHIFT,  0x0000 },
> +
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_3,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8_MASK,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_3,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9_MASK,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9__SHIFT,  0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_3,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10_MASK,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10__SHIFT, 0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_3,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11_MASK,
> DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11__SHIFT, 0x0000 },
> +
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_4,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12__SHIFT, 0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_4,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ13__SHIFT, 0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_4,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14_MASK,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14__SHIFT, 0x0000 },
> +	{   ixDIDT_SQ_EDC_STALL_DELAY_4,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15_MASK,
> DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15__SHIFT, 0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> PSMSEEDCThresholdConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ EDC THRESHOLD */
> +	{   ixDIDT_SQ_EDC_THRESHOLD,
> DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD_MASK,
> DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT,            0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> PSMSEEDCCtrlResetConfig_Vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ EDC CTRL */
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg   PSMSEEDCCtrlConfig_Vega10[]
> =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	/* SQ EDC CTRL */
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,
> DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,
> DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS_MASK,
> DIDT_SQ_EDC_CTRL__EDC_STALL_PATTERN_BIT_NUMS__SHIFT,    0x000E },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0003 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__GC_EDC_LEVEL_COMB_EN__SHIFT,          0x0001 },
> +	{   ixDIDT_SQ_EDC_CTRL,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN_MASK,
> DIDT_SQ_EDC_CTRL__SE_EDC_LEVEL_COMB_EN__SHIFT,          0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> PSMGCEDCThresholdConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   mmGC_EDC_THRESHOLD,
> GC_EDC_THRESHOLD__EDC_THRESHOLD_MASK,
> GC_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT,                 0x0000000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> PSMGCEDCDroopCtrlConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   mmGC_EDC_DROOP_CTRL,
> GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN_MASK,
> GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN__SHIFT,           0x0001 },
> +	{   mmGC_EDC_DROOP_CTRL,
> GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD_MASK,
> GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD__SHIFT,          0x0384 },
> +	{   mmGC_EDC_DROOP_CTRL,
> GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX_MASK,
> GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX__SHIFT,        0x0001 },
> +	{   mmGC_EDC_DROOP_CTRL,
> GC_EDC_DROOP_CTRL__AVG_PSM_SEL_MASK,
> GC_EDC_DROOP_CTRL__AVG_PSM_SEL__SHIFT,                  0x0001 },
> +	{   mmGC_EDC_DROOP_CTRL,
> GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL_MASK,
> GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL__SHIFT,                0x0001 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> PSMGCEDCCtrlResetConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_EN_MASK,
> GC_EDC_CTRL__EDC_EN__SHIFT,                             0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_SW_RST_MASK,
> GC_EDC_CTRL__EDC_SW_RST__SHIFT,                         0x0001 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,                0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_FORCE_STALL_MASK,
> GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT,                    0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,        0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,           0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg   PSMGCEDCCtrlConfig_vega10[]
> =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_EN_MASK,
> GC_EDC_CTRL__EDC_EN__SHIFT,                             0x0001 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_SW_RST_MASK,
> GC_EDC_CTRL__EDC_SW_RST__SHIFT,                         0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,
> GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,                0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_FORCE_STALL_MASK,
> GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT,                    0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,
> GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,        0x0000 },
> +	{   mmGC_EDC_CTRL,
> GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,
> GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,           0x0000 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg
> AvfsPSMResetConfig_vega10[]=
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   0x16A02,                         0xFFFFFFFF,                                            0x0,
> 0x0000005F },
> +	{   0x16A05,                         0xFFFFFFFF,                                            0x0,
> 0x00000001 },
> +	{   0x16A06,                         0x00000001,                                            0x0,
> 0x02000000 },
> +	{   0x16A01,                         0xFFFFFFFF,                                            0x0,
> 0x00003027 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static const struct vega10_didt_config_reg    AvfsPSMInitConfig_vega10[] =
> +{
> +/* -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + *      Offset                             Mask                                                 Shift
> Value
> + * -----------------------------------------------------------------------------------------
> ----------------------------------------------------------------------------------------
> + */
> +	{   0x16A05,                         0xFFFFFFFF,                                            0x18,
> 0x00000001 },
> +	{   0x16A05,                         0xFFFFFFFF,                                            0x8,
> 0x00000003 },
> +	{   0x16A05,                         0xFFFFFFFF,                                            0xa,
> 0x00000006 },
> +	{   0x16A05,                         0xFFFFFFFF,                                            0x7,
> 0x00000000 },
> +	{   0x16A06,                         0xFFFFFFFF,                                            0x18,
> 0x00000001 },
> +	{   0x16A06,                         0xFFFFFFFF,                                            0x19,
> 0x00000001 },
> +	{   0x16A01,                         0xFFFFFFFF,                                            0x0,
> 0x00003027 },
> +
> +	{   0xFFFFFFFF  }  /* End of list */
> +};
> +
> +static int vega10_program_didt_config_registers(struct pp_hwmgr
> *hwmgr, const struct vega10_didt_config_reg *config_regs, enum
> vega10_didt_config_reg_type reg_type)
> +{
> +	uint32_t data;
> +
> +	PP_ASSERT_WITH_CODE((config_regs != NULL),
> "[vega10_program_didt_config_registers] Invalid config register table!",
> return -EINVAL);
> +
> +	while (config_regs->offset != 0xFFFFFFFF) {
> +		switch (reg_type) {
> +		case VEGA10_CONFIGREG_DIDT:
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, config_regs->offset);
> +			data &= ~config_regs->mask;
> +			data |= ((config_regs->value << config_regs->shift) &
> config_regs->mask);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, config_regs->offset, data);
> +			break;
> +		case VEGA10_CONFIGREG_GCCAC:
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG_GC_CAC, config_regs->offset);
> +			data &= ~config_regs->mask;
> +			data |= ((config_regs->value << config_regs->shift) &
> config_regs->mask);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG_GC_CAC, config_regs->offset, data);
> +			break;
> +		case VEGA10_CONFIGREG_SECAC:
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG_SE_CAC, config_regs->offset);
> +			data &= ~config_regs->mask;
> +			data |= ((config_regs->value << config_regs->shift) &
> config_regs->mask);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG_SE_CAC, config_regs->offset, data);
> +			break;
> +		default:
> +			return -EINVAL;
> +		}
> +
> +		config_regs++;
> +	}
> +
> +	return 0;
> +}
> +
> +static int vega10_program_gc_didt_config_registers(struct pp_hwmgr
> *hwmgr, const struct vega10_didt_config_reg *config_regs)
> +{
> +	uint32_t data;
> +
> +	while (config_regs->offset != 0xFFFFFFFF) {
> +		data = cgs_read_register(hwmgr->device, config_regs-
> >offset);
> +		data &= ~config_regs->mask;
> +		data |= ((config_regs->value << config_regs->shift) &
> config_regs->mask);
> +		cgs_write_register(hwmgr->device, config_regs->offset,
> data);
> +		config_regs++;
> +	}
> +
> +	return 0;
> +}
> +
> +static void vega10_didt_set_mask(struct pp_hwmgr *hwmgr, const bool
> enable)
> +{
> +	uint32_t data;
> +	int result;
> +	uint32_t en = (enable ? 1 : 0);
> +	uint32_t didt_block_info = SQ_IR_MASK | TCP_IR_MASK |
> TD_PCC_MASK;
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_SQRamping)) {
> +		data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_SQ_CTRL0);
> +		data &= ~DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK;
> +		data |= ((en << DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT) &
> DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK);
> +		cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_SQ_CTRL0, data);
> +		didt_block_info &= ~SQ_Enable_MASK;
> +		didt_block_info |= en << SQ_Enable_SHIFT;
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_DBRamping)) {
> +		data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DB_CTRL0);
> +		data &= ~DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK;
> +		data |= ((en << DIDT_DB_CTRL0__DIDT_CTRL_EN__SHIFT) &
> DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK);
> +		cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DB_CTRL0, data);
> +		didt_block_info &= ~DB_Enable_MASK;
> +		didt_block_info |= en << DB_Enable_SHIFT;
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_TDRamping)) {
> +		data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TD_CTRL0);
> +		data &= ~DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK;
> +		data |= ((en << DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT) &
> DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK);
> +		cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TD_CTRL0, data);
> +		didt_block_info &= ~TD_Enable_MASK;
> +		didt_block_info |= en << TD_Enable_SHIFT;
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_TCPRamping)) {
> +		data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TCP_CTRL0);
> +		data &= ~DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK;
> +		data |= ((en << DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT)
> & DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK);
> +		cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TCP_CTRL0, data);
> +		didt_block_info &= ~TCP_Enable_MASK;
> +		didt_block_info |= en << TCP_Enable_SHIFT;
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_DBRRamping)) {
> +		data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DBR_CTRL0);
> +		data &= ~DIDT_DBR_CTRL0__DIDT_CTRL_EN_MASK;
> +		data |= ((en << DIDT_DBR_CTRL0__DIDT_CTRL_EN__SHIFT)
> & DIDT_DBR_CTRL0__DIDT_CTRL_EN_MASK);
> +		cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DBR_CTRL0, data);
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_DiDtEDCEnable)) {
> +		if (phm_cap_enabled(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_SQRamping)) {
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL);
> +			data &= ~DIDT_SQ_EDC_CTRL__EDC_EN_MASK;
> +			data |= ((en <<
> DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT) &
> DIDT_SQ_EDC_CTRL__EDC_EN_MASK);
> +			data &=
> ~DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK;
> +			data |= ((~en <<
> DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT) &
> DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL, data);
> +		}
> +
> +		if (phm_cap_enabled(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_DBRamping)) {
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL);
> +			data &= ~DIDT_DB_EDC_CTRL__EDC_EN_MASK;
> +			data |= ((en <<
> DIDT_DB_EDC_CTRL__EDC_EN__SHIFT) &
> DIDT_DB_EDC_CTRL__EDC_EN_MASK);
> +			data &=
> ~DIDT_DB_EDC_CTRL__EDC_SW_RST_MASK;
> +			data |= ((~en <<
> DIDT_DB_EDC_CTRL__EDC_SW_RST__SHIFT) &
> DIDT_DB_EDC_CTRL__EDC_SW_RST_MASK);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL, data);
> +		}
> +
> +		if (phm_cap_enabled(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_TDRamping)) {
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL);
> +			data &= ~DIDT_TD_EDC_CTRL__EDC_EN_MASK;
> +			data |= ((en <<
> DIDT_TD_EDC_CTRL__EDC_EN__SHIFT) &
> DIDT_TD_EDC_CTRL__EDC_EN_MASK);
> +			data &=
> ~DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK;
> +			data |= ((~en <<
> DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT) &
> DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL, data);
> +		}
> +
> +		if (phm_cap_enabled(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_TCPRamping)) {
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL);
> +			data &= ~DIDT_TCP_EDC_CTRL__EDC_EN_MASK;
> +			data |= ((en <<
> DIDT_TCP_EDC_CTRL__EDC_EN__SHIFT) &
> DIDT_TCP_EDC_CTRL__EDC_EN_MASK);
> +			data &=
> ~DIDT_TCP_EDC_CTRL__EDC_SW_RST_MASK;
> +			data |= ((~en <<
> DIDT_TCP_EDC_CTRL__EDC_SW_RST__SHIFT) &
> DIDT_TCP_EDC_CTRL__EDC_SW_RST_MASK);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL, data);
> +		}
> +
> +		if (phm_cap_enabled(hwmgr-
> >platform_descriptor.platformCaps, PHM_PlatformCaps_DBRRamping)) {
> +			data = cgs_read_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL);
> +			data &= ~DIDT_DBR_EDC_CTRL__EDC_EN_MASK;
> +			data |= ((en <<
> DIDT_DBR_EDC_CTRL__EDC_EN__SHIFT) &
> DIDT_DBR_EDC_CTRL__EDC_EN_MASK);
> +			data &=
> ~DIDT_DBR_EDC_CTRL__EDC_SW_RST_MASK;
> +			data |= ((~en <<
> DIDT_DBR_EDC_CTRL__EDC_SW_RST__SHIFT) &
> DIDT_DBR_EDC_CTRL__EDC_SW_RST_MASK);
> +			cgs_write_ind_register(hwmgr->device,
> CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL, data);
> +		}
> +	}
> +
> +	if (enable) {
> +		/* For Vega10, SMC does not support any mask yet. */
> +		result = smum_send_msg_to_smc_with_parameter(hwmgr-
> >smumgr, PPSMC_MSG_ConfigureGfxDidt, didt_block_info);
> +		PP_ASSERT((0 == result), "[EnableDiDtConfig] SMC Configure
> Gfx Didt Failed!");
> +	}
> +}
> +
> +static int vega10_enable_cac_driving_se_didt_config(struct pp_hwmgr
> *hwmgr)
> +{
> +	int result;
> +	uint32_t num_se, count, data;
> +	struct cgs_system_info sys_info = {0};
> +	uint32_t reg;
> +
> +	sys_info.size = sizeof(struct cgs_system_info);
> +	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
> +	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
> +		num_se = sys_info.value;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	cgs_lock_grbm_idx(hwmgr->device, true);
> +	reg = soc15_get_register_offset(GC_HWID, 0,
> mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
> +	for (count = 0; count < num_se; count++) {
> +		data =
> GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK |
> GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count <<
> GRBM_GFX_INDEX__SE_INDEX__SHIFT);
> +		cgs_write_register(hwmgr->device, reg, data);
> +
> +		result =  vega10_program_didt_config_registers(hwmgr,
> SEDiDtStallCtrlConfig_vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtStallPatternConfig_vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtWeightConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtCtrl1Config_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtCtrl2Config_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtCtrl3Config_vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtTuningCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SELCacConfig_Vega10, VEGA10_CONFIGREG_SECAC);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtCtrl0Config_Vega10, VEGA10_CONFIGREG_DIDT);
> +
> +		if (0 != result)
> +			break;
> +	}
> +	cgs_write_register(hwmgr->device, reg, 0xE0000000);
> +	cgs_lock_grbm_idx(hwmgr->device, false);
> +
> +	vega10_didt_set_mask(hwmgr, true);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	return 0;
> +}
> +
> +static int vega10_disable_cac_driving_se_didt_config(struct pp_hwmgr
> *hwmgr)
> +{
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	vega10_didt_set_mask(hwmgr, false);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	return 0;
> +}
> +
> +static int vega10_enable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
> +{
> +	int result;
> +	uint32_t num_se, count, data;
> +	struct cgs_system_info sys_info = {0};
> +	uint32_t reg;
> +
> +	sys_info.size = sizeof(struct cgs_system_info);
> +	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
> +	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
> +		num_se = sys_info.value;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	cgs_lock_grbm_idx(hwmgr->device, true);
> +	reg = soc15_get_register_offset(GC_HWID, 0,
> mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
> +	for (count = 0; count < num_se; count++) {
> +		data =
> GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK |
> GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count <<
> GRBM_GFX_INDEX__SE_INDEX__SHIFT);
> +		cgs_write_register(hwmgr->device, reg, data);
> +
> +		result = vega10_program_didt_config_registers(hwmgr,
> SEDiDtStallCtrlConfig_vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtStallPatternConfig_vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtCtrl3Config_vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEDiDtCtrl0Config_Vega10, VEGA10_CONFIGREG_DIDT);
> +		if (0 != result)
> +			break;
> +	}
> +	cgs_write_register(hwmgr->device, reg, 0xE0000000);
> +	cgs_lock_grbm_idx(hwmgr->device, false);
> +
> +	vega10_didt_set_mask(hwmgr, true);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	vega10_program_gc_didt_config_registers(hwmgr,
> GCDiDtDroopCtrlConfig_vega10);
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_GCEDC))
> +		vega10_program_gc_didt_config_registers(hwmgr,
> GCDiDtCtrl0Config_vega10);
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_PSM))
> +		vega10_program_gc_didt_config_registers(hwmgr,
> AvfsPSMInitConfig_vega10);
> +
> +	return 0;
> +}
> +
> +static int vega10_disable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
> +{
> +	uint32_t data;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	vega10_didt_set_mask(hwmgr, false);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_GCEDC)) {
> +		data = 0x00000000;
> +		cgs_write_register(hwmgr->device, mmGC_DIDT_CTRL0,
> data);
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_PSM))
> +		vega10_program_gc_didt_config_registers(hwmgr,
> AvfsPSMResetConfig_vega10);
> +
> +	return 0;
> +}
> +
> +static int vega10_enable_se_edc_config(struct pp_hwmgr *hwmgr)
> +{
> +	int result;
> +	uint32_t num_se, count, data;
> +	struct cgs_system_info sys_info = {0};
> +	uint32_t reg;
> +
> +	sys_info.size = sizeof(struct cgs_system_info);
> +	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
> +	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
> +		num_se = sys_info.value;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	cgs_lock_grbm_idx(hwmgr->device, true);
> +	reg = soc15_get_register_offset(GC_HWID, 0,
> mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
> +	for (count = 0; count < num_se; count++) {
> +		data =
> GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK |
> GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count <<
> GRBM_GFX_INDEX__SE_INDEX__SHIFT);
> +		cgs_write_register(hwmgr->device, reg, data);
> +		result = vega10_program_didt_config_registers(hwmgr,
> SEDiDtWeightConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEEDCStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEEDCStallDelayConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEEDCThresholdConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEEDCCtrlResetConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> SEEDCCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +
> +		if (0 != result)
> +			break;
> +	}
> +	cgs_write_register(hwmgr->device, reg, 0xE0000000);
> +	cgs_lock_grbm_idx(hwmgr->device, false);
> +
> +	vega10_didt_set_mask(hwmgr, true);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	return 0;
> +}
> +
> +static int vega10_disable_se_edc_config(struct pp_hwmgr *hwmgr)
> +{
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	vega10_didt_set_mask(hwmgr, false);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	return 0;
> +}
> +
> +static int vega10_enable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
> +{
> +	int result;
> +	uint32_t num_se;
> +	uint32_t count, data;
> +	struct cgs_system_info sys_info = {0};
> +	uint32_t reg;
> +
> +	sys_info.size = sizeof(struct cgs_system_info);
> +	sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
> +	if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
> +		num_se = sys_info.value;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	vega10_program_gc_didt_config_registers(hwmgr,
> AvfsPSMResetConfig_vega10);
> +
> +	cgs_lock_grbm_idx(hwmgr->device, true);
> +	reg = soc15_get_register_offset(GC_HWID, 0,
> mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
> +	for (count = 0; count < num_se; count++) {
> +		data =
> GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK |
> GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count <<
> GRBM_GFX_INDEX__SE_INDEX__SHIFT);
> +		cgs_write_register(hwmgr->device, reg, data);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> PSMSEEDCStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> PSMSEEDCStallDelayConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> PSMSEEDCCtrlResetConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +		result |= vega10_program_didt_config_registers(hwmgr,
> PSMSEEDCCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +
> +		if (0 != result)
> +			break;
> +	}
> +	cgs_write_register(hwmgr->device, reg, 0xE0000000);
> +	cgs_lock_grbm_idx(hwmgr->device, false);
> +
> +	vega10_didt_set_mask(hwmgr, true);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	vega10_program_gc_didt_config_registers(hwmgr,
> PSMGCEDCDroopCtrlConfig_vega10);
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_GCEDC)) {
> +		vega10_program_gc_didt_config_registers(hwmgr,
> PSMGCEDCCtrlResetConfig_vega10);
> +		vega10_program_gc_didt_config_registers(hwmgr,
> PSMGCEDCCtrlConfig_vega10);
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_PSM))
> +		vega10_program_gc_didt_config_registers(hwmgr,
> AvfsPSMInitConfig_vega10);
> +
> +	return 0;
> +}
> +
> +static int vega10_disable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
> +{
> +	uint32_t data;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	vega10_didt_set_mask(hwmgr, false);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_GCEDC)) {
> +		data = 0x00000000;
> +		cgs_write_register(hwmgr->device, mmGC_EDC_CTRL,
> data);
> +	}
> +
> +	if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_PSM))
> +		vega10_program_gc_didt_config_registers(hwmgr,
> AvfsPSMResetConfig_vega10);
> +
> +	return 0;
> +}
> +
> +static int vega10_enable_se_edc_force_stall_config(struct pp_hwmgr
> *hwmgr)
> +{
> +	uint32_t reg;
> +	int result;
> +
> +	cgs_enter_safe_mode(hwmgr->device, true);
> +
> +	cgs_lock_grbm_idx(hwmgr->device, true);
> +	reg = soc15_get_register_offset(GC_HWID, 0,
> mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX);
> +	cgs_write_register(hwmgr->device, reg, 0xE0000000);
> +	cgs_lock_grbm_idx(hwmgr->device, false);
> +
> +	result = vega10_program_didt_config_registers(hwmgr,
> SEEDCForceStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +	result |= vega10_program_didt_config_registers(hwmgr,
> SEEDCCtrlForceStallConfig_Vega10, VEGA10_CONFIGREG_DIDT);
> +	if (0 != result)
> +		return result;
> +
> +	vega10_didt_set_mask(hwmgr, true);
> +
> +	cgs_enter_safe_mode(hwmgr->device, false);
> +
> +	return 0;
> +}
> +
> +static int vega10_disable_se_edc_force_stall_config(struct pp_hwmgr
> *hwmgr)
> +{
> +	int result;
> +
> +	result = vega10_disable_se_edc_config(hwmgr);
> +	PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDtConfig] Pre DIDT
> disable clock gating failed!", return result);
> +
> +	return 0;
> +}
> +
> +int vega10_enable_didt_config(struct pp_hwmgr *hwmgr)
> +{
> +	int result = 0;
> +	struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr-
> >backend);
> +
> +	if (data->smu_features[GNLD_DIDT].supported) {
> +		if (data->smu_features[GNLD_DIDT].enabled)
> +			PP_DBG_LOG("[EnableDiDtConfig] Feature DiDt
> Already enabled!\n");
> +
> +		switch (data->registry_data.didt_mode) {
> +		case 0:
> +			result =
> vega10_enable_cac_driving_se_didt_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt]
> Attempt to enable DiDt Mode 0 Failed!", return result);
> +			break;
> +		case 2:
> +			result =
> vega10_enable_psm_gc_didt_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt]
> Attempt to enable DiDt Mode 2 Failed!", return result);
> +			break;
> +		case 3:
> +			result = vega10_enable_se_edc_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt]
> Attempt to enable DiDt Mode 3 Failed!", return result);
> +			break;
> +		case 1:
> +		case 4:
> +		case 5:
> +			result =
> vega10_enable_psm_gc_edc_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt]
> Attempt to enable DiDt Mode 5 Failed!", return result);
> +			break;
> +		case 6:
> +			result =
> vega10_enable_se_edc_force_stall_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt]
> Attempt to enable DiDt Mode 6 Failed!", return result);
> +			break;
> +		default:
> +			result = -EINVAL;
> +			break;
> +		}
> +
> +		if (0 == result) {
> +
> 	PP_ASSERT_WITH_CODE((!vega10_enable_smc_features(hwmgr-
> >smumgr, true, data->smu_features[GNLD_DIDT].smu_feature_bitmap)),
> +				"[EnableDiDtConfig] Attempt to Enable DiDt
> feature Failed!", return result);
> +			data->smu_features[GNLD_DIDT].enabled = true;
> +		}
> +	}
> +
> +	return result;
> +}
> +
> +int vega10_disable_didt_config(struct pp_hwmgr *hwmgr)
> +{
> +	int result = 0;
> +	struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr-
> >backend);
> +
> +	if (data->smu_features[GNLD_DIDT].supported) {
> +		if (!data->smu_features[GNLD_DIDT].enabled)
> +			PP_DBG_LOG("[DisableDiDtConfig] Feature DiDt
> Already Disabled!\n");
> +
> +		switch (data->registry_data.didt_mode) {
> +		case 0:
> +			result =
> vega10_disable_cac_driving_se_didt_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt]
> Attempt to disable DiDt Mode 0 Failed!", return result);
> +			break;
> +		case 2:
> +			result =
> vega10_disable_psm_gc_didt_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt]
> Attempt to disable DiDt Mode 2 Failed!", return result);
> +			break;
> +		case 3:
> +			result = vega10_disable_se_edc_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt]
> Attempt to disable DiDt Mode 3 Failed!", return result);
> +			break;
> +		case 1:
> +		case 4:
> +		case 5:
> +			result =
> vega10_disable_psm_gc_edc_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt]
> Attempt to disable DiDt Mode 5 Failed!", return result);
> +			break;
> +		case 6:
> +			result =
> vega10_disable_se_edc_force_stall_config(hwmgr);
> +			PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt]
> Attempt to disable DiDt Mode 6 Failed!", return result);
> +			break;
> +		default:
> +			result = -EINVAL;
> +			break;
> +		}
> +
> +		if (0 == result) {
> +			PP_ASSERT_WITH_CODE((0 !=
> vega10_enable_smc_features(hwmgr->smumgr, false, data-
> >smu_features[GNLD_DIDT].smu_feature_bitmap)),
> +					"[DisableDiDtConfig] Attempt to
> Disable DiDt feature Failed!", return result);
> +			data->smu_features[GNLD_DIDT].enabled = false;
> +		}
> +	}
> +
> +	return result;
> +}
> 
>  void vega10_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
>  {
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
> index 9ecaa27..b95771a 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.h
> @@ -31,6 +31,12 @@ enum vega10_pt_config_reg_type {
>  	VEGA10_CONFIGREG_MAX
>  };
> 
> +enum vega10_didt_config_reg_type {
> +	VEGA10_CONFIGREG_DIDT = 0,
> +	VEGA10_CONFIGREG_GCCAC,
> +	VEGA10_CONFIGREG_SECAC
> +};
> +
>  /* PowerContainment Features */
>  #define POWERCONTAINMENT_FEATURE_DTE             0x00000001
>  #define POWERCONTAINMENT_FEATURE_TDCLimit        0x00000002
> @@ -44,6 +50,13 @@ struct vega10_pt_config_reg {
>  	enum vega10_pt_config_reg_type       type;
>  };
> 
> +struct vega10_didt_config_reg {
> +	uint32_t		offset;
> +	uint32_t		mask;
> +	uint32_t		shift;
> +	uint32_t		value;
> +};
> +
>  struct vega10_pt_defaults {
>      uint8_t   SviLoadLineEn;
>      uint8_t   SviLoadLineVddC;
> @@ -62,5 +75,8 @@ int vega10_set_power_limit(struct pp_hwmgr *hwmgr,
> uint32_t n);
>  int vega10_power_control_set_level(struct pp_hwmgr *hwmgr);
>  int vega10_disable_power_containment(struct pp_hwmgr *hwmgr);
> 
> +int vega10_enable_didt_config(struct pp_hwmgr *hwmgr);
> +int vega10_disable_didt_config(struct pp_hwmgr *hwmgr);
> +
>  #endif  /* _VEGA10_POWERTUNE_H_ */
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
> b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
> index a1ebe10..a4c8b09 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
> @@ -164,9 +164,14 @@ enum phm_platform_caps {
>  	PHM_PlatformCaps_EnablePlatformPowerManagement,         /*
> indicates that Platform Power Management feature is supported */
>  	PHM_PlatformCaps_SurpriseRemoval,                       /* indicates that
> surprise removal feature is requested */
>  	PHM_PlatformCaps_NewCACVoltage,                         /* indicates new
> CAC voltage table support */
> +	PHM_PlatformCaps_DiDtSupport,                           /* for dI/dT feature
> */
>  	PHM_PlatformCaps_DBRamping,                             /* for dI/dT feature
> */
>  	PHM_PlatformCaps_TDRamping,                             /* for dI/dT feature
> */
>  	PHM_PlatformCaps_TCPRamping,                            /* for dI/dT feature
> */
> +	PHM_PlatformCaps_DBRRamping,                            /* for dI/dT feature
> */
> +	PHM_PlatformCaps_DiDtEDCEnable,                         /* for dI/dT feature
> */
> +	PHM_PlatformCaps_GCEDC,                                 /* for dI/dT feature */
> +	PHM_PlatformCaps_PSM,                                   /* for dI/dT feature */
>  	PHM_PlatformCaps_EnableSMU7ThermalManagement,           /* SMC
> will manage thermal events */
>  	PHM_PlatformCaps_FPS,                                   /* FPS support */
>  	PHM_PlatformCaps_ACP,                                   /* ACP support */
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
> b/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
> index f3f9ebb..822cd8b 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/pp_debug.h
> @@ -42,6 +42,12 @@
>  		}				\
>  	} while (0)
> 
> +#define PP_ASSERT(cond, msg)	\
> +	do {					\
> +		if (!(cond)) {			\
> +			pr_warn("%s\n", msg);	\
> +		}				\
> +	} while (0)
> 
>  #define PP_DBG_LOG(fmt, ...) \
>  	do { \
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
> b/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
> index 227d999..a511611 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/pp_soc15.h
> @@ -41,6 +41,8 @@ inline static uint32_t soc15_get_register_offset(
>  		reg = MP1_BASE.instance[inst].segment[segment] + offset;
>  	else if (hw_id == DF_HWID)
>  		reg = DF_BASE.instance[inst].segment[segment] + offset;
> +	else if (hw_id == GC_HWID)
> +		reg = GC_BASE.instance[inst].segment[segment] + offset;
> 
>  	return reg;
>  }
> --
> 2.7.4
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-07-07  3:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-07  1:59 [PATCH 1/6] drm/amd/powerplay: added index gc cac read/write apis for vega10 Evan Quan
     [not found] ` <1499392755-23507-1-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
2017-07-07  1:59   ` [PATCH 2/6] drm/amd/powerplay: added new se_cac_idx r/w APIs v2 - v2: added missing spinlock init Evan Quan
2017-07-07  1:59   ` [PATCH 3/6] drm/amd/powerplay: added soc15 support for new se_cac_idx APIs Evan Quan
2017-07-07  1:59   ` [PATCH 4/6] drm/amd/powerplay: added support for new se_cac_idx APIs to cgs Evan Quan
2017-07-07  1:59   ` [PATCH 5/6] drm/amd/powerplay: added grbm_idx_mutex lock/unlock to cgs v2 - v2: rename param 'en' as 'lock' Evan Quan
2017-07-07  1:59   ` [PATCH 6/6] drm/amd/powerplay: added didt support for vega10 Evan Quan
     [not found]     ` <1499392755-23507-6-git-send-email-evan.quan-5C7GfCeVMHo@public.gmane.org>
2017-07-07  3:30       ` Deucher, Alexander

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.