diff options
author | Rex Zhu <Rex.Zhu@amd.com> | 2018-03-23 03:51:54 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-04-03 13:52:57 -0400 |
commit | 29b443d016a59bc29e5aaf2887994f9ced21d79d (patch) | |
tree | dbd778084dc940aad08382735aed89f14df0da2e /drivers | |
parent | 326a59e78a05e0a4941463d16ea427337d90e0f5 (diff) |
drm/amd/pp: Remove Dead functions on Vega12
Remove Vega12 DIDT config functions.
Reviewed-by: Huang Rui <ray.huang@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/Makefile | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c | 23 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.c | 1364 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.h | 53 |
4 files changed, 23 insertions, 1419 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile b/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile index faf9c880e4f7..210fb3ecd213 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/Makefile | |||
@@ -32,7 +32,7 @@ HARDWARE_MGR = hwmgr.o processpptables.o \ | |||
32 | vega10_processpptables.o vega10_hwmgr.o vega10_powertune.o \ | 32 | vega10_processpptables.o vega10_hwmgr.o vega10_powertune.o \ |
33 | vega10_thermal.o smu10_hwmgr.o pp_psm.o\ | 33 | vega10_thermal.o smu10_hwmgr.o pp_psm.o\ |
34 | vega12_processpptables.o vega12_hwmgr.o \ | 34 | vega12_processpptables.o vega12_hwmgr.o \ |
35 | vega12_powertune.o vega12_thermal.o \ | 35 | vega12_thermal.o \ |
36 | pp_overdriver.o smu_helper.o | 36 | pp_overdriver.o smu_helper.o |
37 | 37 | ||
38 | AMD_PP_HWMGR = $(addprefix $(AMD_PP_PATH)/hwmgr/,$(HARDWARE_MGR)) | 38 | AMD_PP_HWMGR = $(addprefix $(AMD_PP_PATH)/hwmgr/,$(HARDWARE_MGR)) |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c index 15ce1e825021..200de46bd06b 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include "ppatomfwctrl.h" | 33 | #include "ppatomfwctrl.h" |
34 | #include "atomfirmware.h" | 34 | #include "atomfirmware.h" |
35 | #include "cgs_common.h" | 35 | #include "cgs_common.h" |
36 | #include "vega12_powertune.h" | ||
37 | #include "vega12_inc.h" | 36 | #include "vega12_inc.h" |
38 | #include "pp_soc15.h" | 37 | #include "pp_soc15.h" |
39 | #include "pppcielanes.h" | 38 | #include "pppcielanes.h" |
@@ -893,6 +892,28 @@ static int vega12_odn_initialize_default_settings( | |||
893 | return 0; | 892 | return 0; |
894 | } | 893 | } |
895 | 894 | ||
895 | static int vega12_set_overdrive_target_percentage(struct pp_hwmgr *hwmgr, | ||
896 | uint32_t adjust_percent) | ||
897 | { | ||
898 | return smum_send_msg_to_smc_with_parameter(hwmgr, | ||
899 | PPSMC_MSG_OverDriveSetPercentage, adjust_percent); | ||
900 | } | ||
901 | |||
902 | static int vega12_power_control_set_level(struct pp_hwmgr *hwmgr) | ||
903 | { | ||
904 | int adjust_percent, result = 0; | ||
905 | |||
906 | if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { | ||
907 | adjust_percent = | ||
908 | hwmgr->platform_descriptor.TDPAdjustmentPolarity ? | ||
909 | hwmgr->platform_descriptor.TDPAdjustment : | ||
910 | (-1 * hwmgr->platform_descriptor.TDPAdjustment); | ||
911 | result = vega12_set_overdrive_target_percentage(hwmgr, | ||
912 | (uint32_t)adjust_percent); | ||
913 | } | ||
914 | return result; | ||
915 | } | ||
916 | |||
896 | static int vega12_enable_dpm_tasks(struct pp_hwmgr *hwmgr) | 917 | static int vega12_enable_dpm_tasks(struct pp_hwmgr *hwmgr) |
897 | { | 918 | { |
898 | int tmp_result, result = 0; | 919 | int tmp_result, result = 0; |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.c deleted file mode 100644 index 76e60c0181ac..000000000000 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.c +++ /dev/null | |||
@@ -1,1364 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2017 Advanced Micro Devices, Inc. | ||
3 | * | ||
4 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
5 | * copy of this software and associated documentation files (the "Software"), | ||
6 | * to deal in the Software without restriction, including without limitation | ||
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
8 | * and/or sell copies of the Software, and to permit persons to whom the | ||
9 | * Software is furnished to do so, subject to the following conditions: | ||
10 | * | ||
11 | * The above copyright notice and this permission notice shall be included in | ||
12 | * all copies or substantial portions of the Software. | ||
13 | * | ||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
20 | * OTHER DEALINGS IN THE SOFTWARE. | ||
21 | * | ||
22 | */ | ||
23 | |||
24 | #include "hwmgr.h" | ||
25 | #include "vega12_hwmgr.h" | ||
26 | #include "vega12_powertune.h" | ||
27 | #include "vega12_smumgr.h" | ||
28 | #include "vega12_ppsmc.h" | ||
29 | #include "vega12_inc.h" | ||
30 | #include "pp_debug.h" | ||
31 | #include "pp_soc15.h" | ||
32 | |||
33 | static const struct vega12_didt_config_reg SEDiDtTuningCtrlConfig_Vega12[] = | ||
34 | { | ||
35 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
36 | * Offset Mask Shift Value | ||
37 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
38 | */ | ||
39 | /* DIDT_SQ */ | ||
40 | { ixDIDT_SQ_TUNING_CTRL, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x3853 }, | ||
41 | { ixDIDT_SQ_TUNING_CTRL, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x3153 }, | ||
42 | |||
43 | /* DIDT_TD */ | ||
44 | { ixDIDT_TD_TUNING_CTRL, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x0dde }, | ||
45 | { ixDIDT_TD_TUNING_CTRL, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x0dde }, | ||
46 | |||
47 | /* DIDT_TCP */ | ||
48 | { ixDIDT_TCP_TUNING_CTRL, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x3dde }, | ||
49 | { ixDIDT_TCP_TUNING_CTRL, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x3dde }, | ||
50 | |||
51 | /* DIDT_DB */ | ||
52 | { ixDIDT_DB_TUNING_CTRL, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x3dde }, | ||
53 | { ixDIDT_DB_TUNING_CTRL, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_DB_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x3dde }, | ||
54 | |||
55 | { 0xFFFFFFFF } /* End of list */ | ||
56 | }; | ||
57 | |||
58 | static const struct vega12_didt_config_reg SEDiDtCtrl3Config_vega12[] = | ||
59 | { | ||
60 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
61 | * Offset Mask Shift Value | ||
62 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
63 | */ | ||
64 | /*DIDT_SQ_CTRL3 */ | ||
65 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__GC_DIDT_ENABLE_MASK, DIDT_SQ_CTRL3__GC_DIDT_ENABLE__SHIFT, 0x0000 }, | ||
66 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK, DIDT_SQ_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
67 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__THROTTLE_POLICY_MASK, DIDT_SQ_CTRL3__THROTTLE_POLICY__SHIFT, 0x0003 }, | ||
68 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_SQ_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
69 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK, DIDT_SQ_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT, 0x0000 }, | ||
70 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK, DIDT_SQ_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT, 0x0003 }, | ||
71 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK, DIDT_SQ_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
72 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK, DIDT_SQ_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
73 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__QUALIFY_STALL_EN_MASK, DIDT_SQ_CTRL3__QUALIFY_STALL_EN__SHIFT, 0x0000 }, | ||
74 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__DIDT_STALL_SEL_MASK, DIDT_SQ_CTRL3__DIDT_STALL_SEL__SHIFT, 0x0000 }, | ||
75 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__DIDT_FORCE_STALL_MASK, DIDT_SQ_CTRL3__DIDT_FORCE_STALL__SHIFT, 0x0000 }, | ||
76 | { ixDIDT_SQ_CTRL3, DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN_MASK, DIDT_SQ_CTRL3__DIDT_STALL_DELAY_EN__SHIFT, 0x0000 }, | ||
77 | |||
78 | /*DIDT_TCP_CTRL3 */ | ||
79 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__GC_DIDT_ENABLE_MASK, DIDT_TCP_CTRL3__GC_DIDT_ENABLE__SHIFT, 0x0000 }, | ||
80 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK, DIDT_TCP_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
81 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__THROTTLE_POLICY_MASK, DIDT_TCP_CTRL3__THROTTLE_POLICY__SHIFT, 0x0003 }, | ||
82 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_TCP_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
83 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK, DIDT_TCP_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT, 0x0000 }, | ||
84 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK, DIDT_TCP_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT, 0x0003 }, | ||
85 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK, DIDT_TCP_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
86 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK, DIDT_TCP_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
87 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__QUALIFY_STALL_EN_MASK, DIDT_TCP_CTRL3__QUALIFY_STALL_EN__SHIFT, 0x0000 }, | ||
88 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__DIDT_STALL_SEL_MASK, DIDT_TCP_CTRL3__DIDT_STALL_SEL__SHIFT, 0x0000 }, | ||
89 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__DIDT_FORCE_STALL_MASK, DIDT_TCP_CTRL3__DIDT_FORCE_STALL__SHIFT, 0x0000 }, | ||
90 | { ixDIDT_TCP_CTRL3, DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN_MASK, DIDT_TCP_CTRL3__DIDT_STALL_DELAY_EN__SHIFT, 0x0000 }, | ||
91 | |||
92 | /*DIDT_TD_CTRL3 */ | ||
93 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__GC_DIDT_ENABLE_MASK, DIDT_TD_CTRL3__GC_DIDT_ENABLE__SHIFT, 0x0000 }, | ||
94 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK, DIDT_TD_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
95 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__THROTTLE_POLICY_MASK, DIDT_TD_CTRL3__THROTTLE_POLICY__SHIFT, 0x0003 }, | ||
96 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_TD_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
97 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK, DIDT_TD_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT, 0x0000 }, | ||
98 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK, DIDT_TD_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT, 0x0003 }, | ||
99 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK, DIDT_TD_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
100 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK, DIDT_TD_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
101 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__QUALIFY_STALL_EN_MASK, DIDT_TD_CTRL3__QUALIFY_STALL_EN__SHIFT, 0x0000 }, | ||
102 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__DIDT_STALL_SEL_MASK, DIDT_TD_CTRL3__DIDT_STALL_SEL__SHIFT, 0x0000 }, | ||
103 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__DIDT_FORCE_STALL_MASK, DIDT_TD_CTRL3__DIDT_FORCE_STALL__SHIFT, 0x0000 }, | ||
104 | { ixDIDT_TD_CTRL3, DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN_MASK, DIDT_TD_CTRL3__DIDT_STALL_DELAY_EN__SHIFT, 0x0000 }, | ||
105 | |||
106 | /*DIDT_DB_CTRL3 */ | ||
107 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__GC_DIDT_ENABLE_MASK, DIDT_DB_CTRL3__GC_DIDT_ENABLE__SHIFT, 0x0000 }, | ||
108 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE_MASK, DIDT_DB_CTRL3__GC_DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
109 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__THROTTLE_POLICY_MASK, DIDT_DB_CTRL3__THROTTLE_POLICY__SHIFT, 0x0003 }, | ||
110 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_DB_CTRL3__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
111 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT_MASK, DIDT_DB_CTRL3__DIDT_POWER_LEVEL_LOWBIT__SHIFT, 0x0000 }, | ||
112 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS_MASK, DIDT_DB_CTRL3__DIDT_STALL_PATTERN_BIT_NUMS__SHIFT, 0x0003 }, | ||
113 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN_MASK, DIDT_DB_CTRL3__GC_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
114 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN_MASK, DIDT_DB_CTRL3__SE_DIDT_LEVEL_COMB_EN__SHIFT, 0x0000 }, | ||
115 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__QUALIFY_STALL_EN_MASK, DIDT_DB_CTRL3__QUALIFY_STALL_EN__SHIFT, 0x0000 }, | ||
116 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__DIDT_STALL_SEL_MASK, DIDT_DB_CTRL3__DIDT_STALL_SEL__SHIFT, 0x0000 }, | ||
117 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__DIDT_FORCE_STALL_MASK, DIDT_DB_CTRL3__DIDT_FORCE_STALL__SHIFT, 0x0000 }, | ||
118 | { ixDIDT_DB_CTRL3, DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN_MASK, DIDT_DB_CTRL3__DIDT_STALL_DELAY_EN__SHIFT, 0x0000 }, | ||
119 | |||
120 | { 0xFFFFFFFF } /* End of list */ | ||
121 | }; | ||
122 | |||
123 | static const struct vega12_didt_config_reg SEDiDtCtrl2Config_Vega12[] = | ||
124 | { | ||
125 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
126 | * Offset Mask Shift Value | ||
127 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
128 | */ | ||
129 | /* DIDT_SQ */ | ||
130 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__MAX_POWER_DELTA_MASK, DIDT_SQ_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3853 }, | ||
131 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x00c0 }, | ||
132 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0000 }, | ||
133 | |||
134 | /* DIDT_TD */ | ||
135 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__MAX_POWER_DELTA_MASK, DIDT_TD_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3fff }, | ||
136 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x00c0 }, | ||
137 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0001 }, | ||
138 | |||
139 | /* DIDT_TCP */ | ||
140 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__MAX_POWER_DELTA_MASK, DIDT_TCP_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3dde }, | ||
141 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x00c0 }, | ||
142 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0001 }, | ||
143 | |||
144 | /* DIDT_DB */ | ||
145 | { ixDIDT_DB_CTRL2, DIDT_DB_CTRL2__MAX_POWER_DELTA_MASK, DIDT_DB_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3dde }, | ||
146 | { ixDIDT_DB_CTRL2, DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_DB_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x00c0 }, | ||
147 | { ixDIDT_DB_CTRL2, DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_DB_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0001 }, | ||
148 | |||
149 | { 0xFFFFFFFF } /* End of list */ | ||
150 | }; | ||
151 | |||
152 | static const struct vega12_didt_config_reg SEDiDtCtrl1Config_Vega12[] = | ||
153 | { | ||
154 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
155 | * Offset Mask Shift Value | ||
156 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
157 | */ | ||
158 | /* DIDT_SQ */ | ||
159 | { ixDIDT_SQ_CTRL1, DIDT_SQ_CTRL1__MIN_POWER_MASK, DIDT_SQ_CTRL1__MIN_POWER__SHIFT, 0x0000 }, | ||
160 | { ixDIDT_SQ_CTRL1, DIDT_SQ_CTRL1__MAX_POWER_MASK, DIDT_SQ_CTRL1__MAX_POWER__SHIFT, 0xffff }, | ||
161 | /* DIDT_TD */ | ||
162 | { ixDIDT_TD_CTRL1, DIDT_TD_CTRL1__MIN_POWER_MASK, DIDT_TD_CTRL1__MIN_POWER__SHIFT, 0x0000 }, | ||
163 | { ixDIDT_TD_CTRL1, DIDT_TD_CTRL1__MAX_POWER_MASK, DIDT_TD_CTRL1__MAX_POWER__SHIFT, 0xffff }, | ||
164 | /* DIDT_TCP */ | ||
165 | { ixDIDT_TCP_CTRL1, DIDT_TCP_CTRL1__MIN_POWER_MASK, DIDT_TCP_CTRL1__MIN_POWER__SHIFT, 0x0000 }, | ||
166 | { ixDIDT_TCP_CTRL1, DIDT_TCP_CTRL1__MAX_POWER_MASK, DIDT_TCP_CTRL1__MAX_POWER__SHIFT, 0xffff }, | ||
167 | /* DIDT_DB */ | ||
168 | { ixDIDT_DB_CTRL1, DIDT_DB_CTRL1__MIN_POWER_MASK, DIDT_DB_CTRL1__MIN_POWER__SHIFT, 0x0000 }, | ||
169 | { ixDIDT_DB_CTRL1, DIDT_DB_CTRL1__MAX_POWER_MASK, DIDT_DB_CTRL1__MAX_POWER__SHIFT, 0xffff }, | ||
170 | |||
171 | { 0xFFFFFFFF } /* End of list */ | ||
172 | }; | ||
173 | |||
174 | |||
175 | static const struct vega12_didt_config_reg SEDiDtWeightConfig_Vega12[] = | ||
176 | { | ||
177 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
178 | * Offset Mask Shift Value | ||
179 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
180 | */ | ||
181 | /* DIDT_SQ */ | ||
182 | { ixDIDT_SQ_WEIGHT0_3, 0xFFFFFFFF, 0, 0x2B363B1A }, | ||
183 | { ixDIDT_SQ_WEIGHT4_7, 0xFFFFFFFF, 0, 0x270B2432 }, | ||
184 | { ixDIDT_SQ_WEIGHT8_11, 0xFFFFFFFF, 0, 0x00000018 }, | ||
185 | |||
186 | /* DIDT_TD */ | ||
187 | { ixDIDT_TD_WEIGHT0_3, 0xFFFFFFFF, 0, 0x2B1D220F }, | ||
188 | { ixDIDT_TD_WEIGHT4_7, 0xFFFFFFFF, 0, 0x00007558 }, | ||
189 | { ixDIDT_TD_WEIGHT8_11, 0xFFFFFFFF, 0, 0x00000000 }, | ||
190 | |||
191 | /* DIDT_TCP */ | ||
192 | { ixDIDT_TCP_WEIGHT0_3, 0xFFFFFFFF, 0, 0x5ACE160D }, | ||
193 | { ixDIDT_TCP_WEIGHT4_7, 0xFFFFFFFF, 0, 0x00000000 }, | ||
194 | { ixDIDT_TCP_WEIGHT8_11, 0xFFFFFFFF, 0, 0x00000000 }, | ||
195 | |||
196 | /* DIDT_DB */ | ||
197 | { ixDIDT_DB_WEIGHT0_3, 0xFFFFFFFF, 0, 0x0E152A0F }, | ||
198 | { ixDIDT_DB_WEIGHT4_7, 0xFFFFFFFF, 0, 0x09061813 }, | ||
199 | { ixDIDT_DB_WEIGHT8_11, 0xFFFFFFFF, 0, 0x00000013 }, | ||
200 | |||
201 | { 0xFFFFFFFF } /* End of list */ | ||
202 | }; | ||
203 | |||
204 | static const struct vega12_didt_config_reg SEDiDtCtrl0Config_Vega12[] = | ||
205 | { | ||
206 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
207 | * Offset Mask Shift Value | ||
208 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
209 | */ | ||
210 | /* DIDT_SQ */ | ||
211 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK, DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 }, | ||
212 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__PHASE_OFFSET_MASK, DIDT_SQ_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 }, | ||
213 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_CTRL_RST_MASK, DIDT_SQ_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000 }, | ||
214 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
215 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN_MASK, DIDT_SQ_CTRL0__DIDT_STALL_CTRL_EN__SHIFT, 0x0001 }, | ||
216 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN_MASK, DIDT_SQ_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT, 0x0001 }, | ||
217 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK, DIDT_SQ_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT, 0x0001 }, | ||
218 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_SQ_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT, 0xffff }, | ||
219 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN_MASK, DIDT_SQ_CTRL0__DIDT_AUTO_MPD_EN__SHIFT, 0x0000 }, | ||
220 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN_MASK, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_EN__SHIFT, 0x0000 }, | ||
221 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK, DIDT_SQ_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT, 0x0000 }, | ||
222 | /* DIDT_TD */ | ||
223 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK, DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 }, | ||
224 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__PHASE_OFFSET_MASK, DIDT_TD_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 }, | ||
225 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_CTRL_RST_MASK, DIDT_TD_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000 }, | ||
226 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
227 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN_MASK, DIDT_TD_CTRL0__DIDT_STALL_CTRL_EN__SHIFT, 0x0001 }, | ||
228 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN_MASK, DIDT_TD_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT, 0x0001 }, | ||
229 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK, DIDT_TD_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT, 0x0001 }, | ||
230 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_TD_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT, 0xffff }, | ||
231 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN_MASK, DIDT_TD_CTRL0__DIDT_AUTO_MPD_EN__SHIFT, 0x0000 }, | ||
232 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN_MASK, DIDT_TD_CTRL0__DIDT_STALL_EVENT_EN__SHIFT, 0x0000 }, | ||
233 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK, DIDT_TD_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT, 0x0000 }, | ||
234 | /* DIDT_TCP */ | ||
235 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK, DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 }, | ||
236 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__PHASE_OFFSET_MASK, DIDT_TCP_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 }, | ||
237 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_CTRL_RST_MASK, DIDT_TCP_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000 }, | ||
238 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
239 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN_MASK, DIDT_TCP_CTRL0__DIDT_STALL_CTRL_EN__SHIFT, 0x0001 }, | ||
240 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN_MASK, DIDT_TCP_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT, 0x0001 }, | ||
241 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK, DIDT_TCP_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT, 0x0001 }, | ||
242 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_TCP_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT, 0xffff }, | ||
243 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN_MASK, DIDT_TCP_CTRL0__DIDT_AUTO_MPD_EN__SHIFT, 0x0000 }, | ||
244 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN_MASK, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_EN__SHIFT, 0x0000 }, | ||
245 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK, DIDT_TCP_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT, 0x0000 }, | ||
246 | /* DIDT_DB */ | ||
247 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_CTRL_EN_MASK, DIDT_DB_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 }, | ||
248 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__PHASE_OFFSET_MASK, DIDT_DB_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 }, | ||
249 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_CTRL_RST_MASK, DIDT_DB_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000 }, | ||
250 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_DB_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
251 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN_MASK, DIDT_DB_CTRL0__DIDT_STALL_CTRL_EN__SHIFT, 0x0001 }, | ||
252 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN_MASK, DIDT_DB_CTRL0__DIDT_TUNING_CTRL_EN__SHIFT, 0x0001 }, | ||
253 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN_MASK, DIDT_DB_CTRL0__DIDT_STALL_AUTO_RELEASE_EN__SHIFT, 0x0001 }, | ||
254 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_DB_CTRL0__DIDT_HI_POWER_THRESHOLD__SHIFT, 0xffff }, | ||
255 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN_MASK, DIDT_DB_CTRL0__DIDT_AUTO_MPD_EN__SHIFT, 0x0000 }, | ||
256 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN_MASK, DIDT_DB_CTRL0__DIDT_STALL_EVENT_EN__SHIFT, 0x0000 }, | ||
257 | { ixDIDT_DB_CTRL0, DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR_MASK, DIDT_DB_CTRL0__DIDT_STALL_EVENT_COUNTER_CLEAR__SHIFT, 0x0000 }, | ||
258 | |||
259 | { 0xFFFFFFFF } /* End of list */ | ||
260 | }; | ||
261 | |||
262 | |||
263 | static const struct vega12_didt_config_reg SEDiDtStallCtrlConfig_vega12[] = | ||
264 | { | ||
265 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
266 | * Offset Mask Shift Value | ||
267 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
268 | */ | ||
269 | /* DIDT_SQ */ | ||
270 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0004 }, | ||
271 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0004 }, | ||
272 | { 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 }, | ||
273 | { 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 }, | ||
274 | |||
275 | /* DIDT_TD */ | ||
276 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0001 }, | ||
277 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0001 }, | ||
278 | { 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 }, | ||
279 | { 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 }, | ||
280 | |||
281 | /* DIDT_TCP */ | ||
282 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0001 }, | ||
283 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0001 }, | ||
284 | { 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 }, | ||
285 | { 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 }, | ||
286 | |||
287 | /* DIDT_DB */ | ||
288 | { ixDIDT_DB_STALL_CTRL, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0004 }, | ||
289 | { ixDIDT_DB_STALL_CTRL, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_DB_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0004 }, | ||
290 | { 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 }, | ||
291 | { 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 }, | ||
292 | |||
293 | { 0xFFFFFFFF } /* End of list */ | ||
294 | }; | ||
295 | |||
296 | static const struct vega12_didt_config_reg SEDiDtStallPatternConfig_vega12[] = | ||
297 | { | ||
298 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
299 | * Offset Mask Shift Value | ||
300 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
301 | */ | ||
302 | /* DIDT_SQ_STALL_PATTERN_1_2 */ | ||
303 | { 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 }, | ||
304 | { 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 }, | ||
305 | |||
306 | /* DIDT_SQ_STALL_PATTERN_3_4 */ | ||
307 | { 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 }, | ||
308 | { 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 }, | ||
309 | |||
310 | /* DIDT_SQ_STALL_PATTERN_5_6 */ | ||
311 | { 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 }, | ||
312 | { 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 }, | ||
313 | |||
314 | /* DIDT_SQ_STALL_PATTERN_7 */ | ||
315 | { 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 }, | ||
316 | |||
317 | /* DIDT_TCP_STALL_PATTERN_1_2 */ | ||
318 | { 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 }, | ||
319 | { 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 }, | ||
320 | |||
321 | /* DIDT_TCP_STALL_PATTERN_3_4 */ | ||
322 | { 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 }, | ||
323 | { 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 }, | ||
324 | |||
325 | /* DIDT_TCP_STALL_PATTERN_5_6 */ | ||
326 | { 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 }, | ||
327 | { 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 }, | ||
328 | |||
329 | /* DIDT_TCP_STALL_PATTERN_7 */ | ||
330 | { 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 }, | ||
331 | |||
332 | /* DIDT_TD_STALL_PATTERN_1_2 */ | ||
333 | { 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 }, | ||
334 | { 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 }, | ||
335 | |||
336 | /* DIDT_TD_STALL_PATTERN_3_4 */ | ||
337 | { 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 }, | ||
338 | { 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 }, | ||
339 | |||
340 | /* DIDT_TD_STALL_PATTERN_5_6 */ | ||
341 | { 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 }, | ||
342 | { 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 }, | ||
343 | |||
344 | /* DIDT_TD_STALL_PATTERN_7 */ | ||
345 | { 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 }, | ||
346 | |||
347 | /* DIDT_DB_STALL_PATTERN_1_2 */ | ||
348 | { 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 }, | ||
349 | { 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 }, | ||
350 | |||
351 | /* DIDT_DB_STALL_PATTERN_3_4 */ | ||
352 | { 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 }, | ||
353 | { 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 }, | ||
354 | |||
355 | /* DIDT_DB_STALL_PATTERN_5_6 */ | ||
356 | { 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 }, | ||
357 | { 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 }, | ||
358 | |||
359 | /* DIDT_DB_STALL_PATTERN_7 */ | ||
360 | { 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 }, | ||
361 | |||
362 | { 0xFFFFFFFF } /* End of list */ | ||
363 | }; | ||
364 | |||
365 | static const struct vega12_didt_config_reg SELCacConfig_Vega12[] = | ||
366 | { | ||
367 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
368 | * Offset Mask Shift Value | ||
369 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
370 | */ | ||
371 | /* SQ */ | ||
372 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x00060021 }, | ||
373 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x00860021 }, | ||
374 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x01060021 }, | ||
375 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x01860021 }, | ||
376 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x02060021 }, | ||
377 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x02860021 }, | ||
378 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x03060021 }, | ||
379 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x03860021 }, | ||
380 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x04060021 }, | ||
381 | /* TD */ | ||
382 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x000E0020 }, | ||
383 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x008E0020 }, | ||
384 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x010E0020 }, | ||
385 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x018E0020 }, | ||
386 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x020E0020 }, | ||
387 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x028E0020 }, | ||
388 | /* TCP */ | ||
389 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x001c0020 }, | ||
390 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x009c0020 }, | ||
391 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x011c0020 }, | ||
392 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x019c0020 }, | ||
393 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x021c0020 }, | ||
394 | /* DB */ | ||
395 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x00200008 }, | ||
396 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x00820008 }, | ||
397 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x01020008 }, | ||
398 | { ixSE_CAC_CNTL, 0xFFFFFFFF, 0, 0x01820008 }, | ||
399 | |||
400 | { 0xFFFFFFFF } /* End of list */ | ||
401 | }; | ||
402 | |||
403 | |||
404 | static const struct vega12_didt_config_reg SEEDCStallPatternConfig_Vega12[] = | ||
405 | { | ||
406 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
407 | * Offset Mask Shift Value | ||
408 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
409 | */ | ||
410 | /* SQ */ | ||
411 | { ixDIDT_SQ_EDC_STALL_PATTERN_1_2, 0xFFFFFFFF, 0, 0x00030001 }, | ||
412 | { ixDIDT_SQ_EDC_STALL_PATTERN_3_4, 0xFFFFFFFF, 0, 0x000F0007 }, | ||
413 | { ixDIDT_SQ_EDC_STALL_PATTERN_5_6, 0xFFFFFFFF, 0, 0x003F001F }, | ||
414 | { ixDIDT_SQ_EDC_STALL_PATTERN_7, 0xFFFFFFFF, 0, 0x0000007F }, | ||
415 | /* TD */ | ||
416 | { ixDIDT_TD_EDC_STALL_PATTERN_1_2, 0xFFFFFFFF, 0, 0x00000000 }, | ||
417 | { ixDIDT_TD_EDC_STALL_PATTERN_3_4, 0xFFFFFFFF, 0, 0x00000000 }, | ||
418 | { ixDIDT_TD_EDC_STALL_PATTERN_5_6, 0xFFFFFFFF, 0, 0x00000000 }, | ||
419 | { ixDIDT_TD_EDC_STALL_PATTERN_7, 0xFFFFFFFF, 0, 0x00000000 }, | ||
420 | /* TCP */ | ||
421 | { ixDIDT_TCP_EDC_STALL_PATTERN_1_2, 0xFFFFFFFF, 0, 0x00000000 }, | ||
422 | { ixDIDT_TCP_EDC_STALL_PATTERN_3_4, 0xFFFFFFFF, 0, 0x00000000 }, | ||
423 | { ixDIDT_TCP_EDC_STALL_PATTERN_5_6, 0xFFFFFFFF, 0, 0x00000000 }, | ||
424 | { ixDIDT_TCP_EDC_STALL_PATTERN_7, 0xFFFFFFFF, 0, 0x00000000 }, | ||
425 | /* DB */ | ||
426 | { ixDIDT_DB_EDC_STALL_PATTERN_1_2, 0xFFFFFFFF, 0, 0x00000000 }, | ||
427 | { ixDIDT_DB_EDC_STALL_PATTERN_3_4, 0xFFFFFFFF, 0, 0x00000000 }, | ||
428 | { ixDIDT_DB_EDC_STALL_PATTERN_5_6, 0xFFFFFFFF, 0, 0x00000000 }, | ||
429 | { ixDIDT_DB_EDC_STALL_PATTERN_7, 0xFFFFFFFF, 0, 0x00000000 }, | ||
430 | |||
431 | { 0xFFFFFFFF } /* End of list */ | ||
432 | }; | ||
433 | |||
434 | static const struct vega12_didt_config_reg SEEDCForceStallPatternConfig_Vega12[] = | ||
435 | { | ||
436 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
437 | * Offset Mask Shift Value | ||
438 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
439 | */ | ||
440 | /* SQ */ | ||
441 | { ixDIDT_SQ_EDC_STALL_PATTERN_1_2, 0xFFFFFFFF, 0, 0x00000015 }, | ||
442 | { ixDIDT_SQ_EDC_STALL_PATTERN_3_4, 0xFFFFFFFF, 0, 0x00000000 }, | ||
443 | { ixDIDT_SQ_EDC_STALL_PATTERN_5_6, 0xFFFFFFFF, 0, 0x00000000 }, | ||
444 | { ixDIDT_SQ_EDC_STALL_PATTERN_7, 0xFFFFFFFF, 0, 0x00000000 }, | ||
445 | /* TD */ | ||
446 | { ixDIDT_TD_EDC_STALL_PATTERN_1_2, 0xFFFFFFFF, 0, 0x00000015 }, | ||
447 | { ixDIDT_TD_EDC_STALL_PATTERN_3_4, 0xFFFFFFFF, 0, 0x00000000 }, | ||
448 | { ixDIDT_TD_EDC_STALL_PATTERN_5_6, 0xFFFFFFFF, 0, 0x00000000 }, | ||
449 | { ixDIDT_TD_EDC_STALL_PATTERN_7, 0xFFFFFFFF, 0, 0x00000000 }, | ||
450 | |||
451 | { 0xFFFFFFFF } /* End of list */ | ||
452 | }; | ||
453 | |||
454 | static const struct vega12_didt_config_reg SEEDCStallDelayConfig_Vega12[] = | ||
455 | { | ||
456 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
457 | * Offset Mask Shift Value | ||
458 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
459 | */ | ||
460 | /* SQ */ | ||
461 | { ixDIDT_SQ_EDC_STALL_DELAY_1, 0xFFFFFFFF, 0, 0x00000000 }, | ||
462 | { ixDIDT_SQ_EDC_STALL_DELAY_2, 0xFFFFFFFF, 0, 0x00000000 }, | ||
463 | /* TD */ | ||
464 | { ixDIDT_TD_EDC_STALL_DELAY_1, 0xFFFFFFFF, 0, 0x00000000 }, | ||
465 | { ixDIDT_TD_EDC_STALL_DELAY_2, 0xFFFFFFFF, 0, 0x00000000 }, | ||
466 | /* TCP */ | ||
467 | { ixDIDT_TCP_EDC_STALL_DELAY_1, 0xFFFFFFFF, 0, 0x00000000 }, | ||
468 | { ixDIDT_TCP_EDC_STALL_DELAY_2, 0xFFFFFFFF, 0, 0x00000000 }, | ||
469 | /* DB */ | ||
470 | { ixDIDT_DB_EDC_STALL_DELAY_1, 0xFFFFFFFF, 0, 0x00000000 }, | ||
471 | |||
472 | { 0xFFFFFFFF } /* End of list */ | ||
473 | }; | ||
474 | |||
475 | static const struct vega12_didt_config_reg SEEDCThresholdConfig_Vega12[] = | ||
476 | { | ||
477 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
478 | * Offset Mask Shift Value | ||
479 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
480 | */ | ||
481 | { ixDIDT_SQ_EDC_THRESHOLD, 0xFFFFFFFF, 0, 0x0000010E }, | ||
482 | { ixDIDT_TD_EDC_THRESHOLD, 0xFFFFFFFF, 0, 0xFFFFFFFF }, | ||
483 | { ixDIDT_TCP_EDC_THRESHOLD, 0xFFFFFFFF, 0, 0xFFFFFFFF }, | ||
484 | { ixDIDT_DB_EDC_THRESHOLD, 0xFFFFFFFF, 0, 0xFFFFFFFF }, | ||
485 | |||
486 | { 0xFFFFFFFF } /* End of list */ | ||
487 | }; | ||
488 | |||
489 | static const struct vega12_didt_config_reg SEEDCCtrlResetConfig_Vega12[] = | ||
490 | { | ||
491 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
492 | * Offset Mask Shift Value | ||
493 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
494 | */ | ||
495 | /* SQ */ | ||
496 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_EN_MASK, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT, 0x0000 }, | ||
497 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0001 }, | ||
498 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
499 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0000 }, | ||
500 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
501 | { 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 }, | ||
502 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
503 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT, 0x0000 }, | ||
504 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT, 0x0000 }, | ||
505 | { 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 }, | ||
506 | { 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 }, | ||
507 | |||
508 | { 0xFFFFFFFF } /* End of list */ | ||
509 | }; | ||
510 | |||
511 | static const struct vega12_didt_config_reg SEEDCCtrlConfig_Vega12[] = | ||
512 | { | ||
513 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
514 | * Offset Mask Shift Value | ||
515 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
516 | */ | ||
517 | /* SQ */ | ||
518 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_EN_MASK, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT, 0x0001 }, | ||
519 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0000 }, | ||
520 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
521 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0000 }, | ||
522 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0004 }, | ||
523 | { 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 }, | ||
524 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
525 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT, 0x0000 }, | ||
526 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT, 0x0000 }, | ||
527 | { 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 }, | ||
528 | { 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 }, | ||
529 | |||
530 | { 0xFFFFFFFF } /* End of list */ | ||
531 | }; | ||
532 | |||
533 | static const struct vega12_didt_config_reg SEEDCCtrlForceStallConfig_Vega12[] = | ||
534 | { | ||
535 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
536 | * Offset Mask Shift Value | ||
537 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
538 | */ | ||
539 | /* SQ */ | ||
540 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_EN_MASK, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT, 0x0000 }, | ||
541 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0000 }, | ||
542 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
543 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0001 }, | ||
544 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0001 }, | ||
545 | { 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 }, | ||
546 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
547 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT, 0x0000 }, | ||
548 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT, 0x0000 }, | ||
549 | { 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 }, | ||
550 | { 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 }, | ||
551 | |||
552 | /* TD */ | ||
553 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__EDC_EN_MASK, DIDT_TD_EDC_CTRL__EDC_EN__SHIFT, 0x0000 }, | ||
554 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK, DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0000 }, | ||
555 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
556 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__EDC_FORCE_STALL_MASK, DIDT_TD_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0001 }, | ||
557 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0001 }, | ||
558 | { 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 }, | ||
559 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
560 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__GC_EDC_EN_MASK, DIDT_TD_EDC_CTRL__GC_EDC_EN__SHIFT, 0x0000 }, | ||
561 | { ixDIDT_TD_EDC_CTRL, DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY_MASK, DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT, 0x0000 }, | ||
562 | { 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 }, | ||
563 | { 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 }, | ||
564 | |||
565 | { 0xFFFFFFFF } /* End of list */ | ||
566 | }; | ||
567 | |||
568 | static const struct vega12_didt_config_reg GCDiDtDroopCtrlConfig_vega12[] = | ||
569 | { | ||
570 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
571 | * Offset Mask Shift Value | ||
572 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
573 | */ | ||
574 | { mmGC_DIDT_DROOP_CTRL, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN_MASK, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN__SHIFT, 0x0000 }, | ||
575 | { mmGC_DIDT_DROOP_CTRL, GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD_MASK, GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD__SHIFT, 0x0000 }, | ||
576 | { mmGC_DIDT_DROOP_CTRL, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX_MASK, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX__SHIFT, 0x0000 }, | ||
577 | { mmGC_DIDT_DROOP_CTRL, GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL_MASK, GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL__SHIFT, 0x0000 }, | ||
578 | { mmGC_DIDT_DROOP_CTRL, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW_MASK, GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW__SHIFT, 0x0000 }, | ||
579 | |||
580 | { 0xFFFFFFFF } /* End of list */ | ||
581 | }; | ||
582 | |||
583 | static const struct vega12_didt_config_reg GCDiDtCtrl0Config_vega12[] = | ||
584 | { | ||
585 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
586 | * Offset Mask Shift Value | ||
587 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
588 | */ | ||
589 | { mmGC_DIDT_CTRL0, GC_DIDT_CTRL0__DIDT_CTRL_EN_MASK, GC_DIDT_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0000 }, | ||
590 | { mmGC_DIDT_CTRL0, GC_DIDT_CTRL0__PHASE_OFFSET_MASK, GC_DIDT_CTRL0__PHASE_OFFSET__SHIFT, 0x0000 }, | ||
591 | { mmGC_DIDT_CTRL0, GC_DIDT_CTRL0__DIDT_SW_RST_MASK, GC_DIDT_CTRL0__DIDT_SW_RST__SHIFT, 0x0000 }, | ||
592 | { mmGC_DIDT_CTRL0, GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
593 | { mmGC_DIDT_CTRL0, GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK, GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
594 | { 0xFFFFFFFF } /* End of list */ | ||
595 | }; | ||
596 | |||
597 | |||
598 | static const struct vega12_didt_config_reg PSMSEEDCStallPatternConfig_Vega12[] = | ||
599 | { | ||
600 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
601 | * Offset Mask Shift Value | ||
602 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
603 | */ | ||
604 | /* SQ EDC STALL PATTERNs */ | ||
605 | { 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 }, | ||
606 | { 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 }, | ||
607 | { 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 }, | ||
608 | { 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 }, | ||
609 | |||
610 | { 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 }, | ||
611 | { 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 }, | ||
612 | |||
613 | { 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 }, | ||
614 | |||
615 | { 0xFFFFFFFF } /* End of list */ | ||
616 | }; | ||
617 | |||
618 | static const struct vega12_didt_config_reg PSMSEEDCStallDelayConfig_Vega12[] = | ||
619 | { | ||
620 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
621 | * Offset Mask Shift Value | ||
622 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
623 | */ | ||
624 | /* SQ EDC STALL DELAYs */ | ||
625 | { 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 }, | ||
626 | { 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 }, | ||
627 | { 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 }, | ||
628 | { 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 }, | ||
629 | |||
630 | { 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 }, | ||
631 | |||
632 | { 0xFFFFFFFF } /* End of list */ | ||
633 | }; | ||
634 | |||
635 | static const struct vega12_didt_config_reg PSMSEEDCThresholdConfig_Vega12[] = | ||
636 | { | ||
637 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
638 | * Offset Mask Shift Value | ||
639 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
640 | */ | ||
641 | /* SQ EDC THRESHOLD */ | ||
642 | { ixDIDT_SQ_EDC_THRESHOLD, DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD_MASK, DIDT_SQ_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT, 0x0000 }, | ||
643 | |||
644 | { 0xFFFFFFFF } /* End of list */ | ||
645 | }; | ||
646 | |||
647 | static const struct vega12_didt_config_reg PSMSEEDCCtrlResetConfig_Vega12[] = | ||
648 | { | ||
649 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
650 | * Offset Mask Shift Value | ||
651 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
652 | */ | ||
653 | /* SQ EDC CTRL */ | ||
654 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_EN_MASK, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT, 0x0000 }, | ||
655 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0001 }, | ||
656 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
657 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0000 }, | ||
658 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
659 | { 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 }, | ||
660 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
661 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT, 0x0000 }, | ||
662 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT, 0x0000 }, | ||
663 | { 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 }, | ||
664 | { 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 }, | ||
665 | |||
666 | { 0xFFFFFFFF } /* End of list */ | ||
667 | }; | ||
668 | |||
669 | static const struct vega12_didt_config_reg PSMSEEDCCtrlConfig_Vega12[] = | ||
670 | { | ||
671 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
672 | * Offset Mask Shift Value | ||
673 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
674 | */ | ||
675 | /* SQ EDC CTRL */ | ||
676 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_EN_MASK, DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT, 0x0001 }, | ||
677 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK, DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0000 }, | ||
678 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
679 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK, DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0000 }, | ||
680 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
681 | { 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 }, | ||
682 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
683 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT, 0x0001 }, | ||
684 | { ixDIDT_SQ_EDC_CTRL, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK, DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT, 0x0003 }, | ||
685 | { 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 }, | ||
686 | { 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 }, | ||
687 | |||
688 | { 0xFFFFFFFF } /* End of list */ | ||
689 | }; | ||
690 | |||
691 | static const struct vega12_didt_config_reg PSMGCEDCThresholdConfig_vega12[] = | ||
692 | { | ||
693 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
694 | * Offset Mask Shift Value | ||
695 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
696 | */ | ||
697 | { mmGC_EDC_THRESHOLD, GC_EDC_THRESHOLD__EDC_THRESHOLD_MASK, GC_EDC_THRESHOLD__EDC_THRESHOLD__SHIFT, 0x0000000 }, | ||
698 | |||
699 | { 0xFFFFFFFF } /* End of list */ | ||
700 | }; | ||
701 | |||
702 | static const struct vega12_didt_config_reg PSMGCEDCDroopCtrlConfig_vega12[] = | ||
703 | { | ||
704 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
705 | * Offset Mask Shift Value | ||
706 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
707 | */ | ||
708 | { mmGC_EDC_DROOP_CTRL, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN_MASK, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN__SHIFT, 0x0001 }, | ||
709 | { mmGC_EDC_DROOP_CTRL, GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD_MASK, GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD__SHIFT, 0x0384 }, | ||
710 | { mmGC_EDC_DROOP_CTRL, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX_MASK, GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX__SHIFT, 0x0001 }, | ||
711 | { mmGC_EDC_DROOP_CTRL, GC_EDC_DROOP_CTRL__AVG_PSM_SEL_MASK, GC_EDC_DROOP_CTRL__AVG_PSM_SEL__SHIFT, 0x0001 }, | ||
712 | { mmGC_EDC_DROOP_CTRL, GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL_MASK, GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL__SHIFT, 0x0001 }, | ||
713 | |||
714 | { 0xFFFFFFFF } /* End of list */ | ||
715 | }; | ||
716 | |||
717 | static const struct vega12_didt_config_reg PSMGCEDCCtrlResetConfig_vega12[] = | ||
718 | { | ||
719 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
720 | * Offset Mask Shift Value | ||
721 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
722 | */ | ||
723 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_EN_MASK, GC_EDC_CTRL__EDC_EN__SHIFT, 0x0000 }, | ||
724 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_SW_RST_MASK, GC_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0001 }, | ||
725 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
726 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_FORCE_STALL_MASK, GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0000 }, | ||
727 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
728 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
729 | |||
730 | { 0xFFFFFFFF } /* End of list */ | ||
731 | }; | ||
732 | |||
733 | static const struct vega12_didt_config_reg PSMGCEDCCtrlConfig_vega12[] = | ||
734 | { | ||
735 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
736 | * Offset Mask Shift Value | ||
737 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
738 | */ | ||
739 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_EN_MASK, GC_EDC_CTRL__EDC_EN__SHIFT, 0x0001 }, | ||
740 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_SW_RST_MASK, GC_EDC_CTRL__EDC_SW_RST__SHIFT, 0x0000 }, | ||
741 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK, GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT, 0x0000 }, | ||
742 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_FORCE_STALL_MASK, GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT, 0x0000 }, | ||
743 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK, GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT, 0x0000 }, | ||
744 | { mmGC_EDC_CTRL, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK, GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT, 0x0000 }, | ||
745 | |||
746 | { 0xFFFFFFFF } /* End of list */ | ||
747 | }; | ||
748 | |||
749 | static const struct vega12_didt_config_reg AvfsPSMResetConfig_vega12[]= | ||
750 | { | ||
751 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
752 | * Offset Mask Shift Value | ||
753 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
754 | */ | ||
755 | { 0x16A02, 0xFFFFFFFF, 0x0, 0x0000005F }, | ||
756 | { 0x16A05, 0xFFFFFFFF, 0x0, 0x00000001 }, | ||
757 | { 0x16A06, 0x00000001, 0x0, 0x02000000 }, | ||
758 | { 0x16A01, 0xFFFFFFFF, 0x0, 0x00003027 }, | ||
759 | |||
760 | { 0xFFFFFFFF } /* End of list */ | ||
761 | }; | ||
762 | |||
763 | static const struct vega12_didt_config_reg AvfsPSMInitConfig_vega12[] = | ||
764 | { | ||
765 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
766 | * Offset Mask Shift Value | ||
767 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
768 | */ | ||
769 | { 0x16A05, 0xFFFFFFFF, 0x18, 0x00000001 }, | ||
770 | { 0x16A05, 0xFFFFFFFF, 0x8, 0x00000003 }, | ||
771 | { 0x16A05, 0xFFFFFFFF, 0xa, 0x00000006 }, | ||
772 | { 0x16A05, 0xFFFFFFFF, 0x7, 0x00000000 }, | ||
773 | { 0x16A06, 0xFFFFFFFF, 0x18, 0x00000001 }, | ||
774 | { 0x16A06, 0xFFFFFFFF, 0x19, 0x00000001 }, | ||
775 | { 0x16A01, 0xFFFFFFFF, 0x0, 0x00003027 }, | ||
776 | |||
777 | { 0xFFFFFFFF } /* End of list */ | ||
778 | }; | ||
779 | |||
780 | static int vega12_program_didt_config_registers(struct pp_hwmgr *hwmgr, const struct vega12_didt_config_reg *config_regs, enum vega12_didt_config_reg_type reg_type) | ||
781 | { | ||
782 | uint32_t data; | ||
783 | |||
784 | PP_ASSERT_WITH_CODE((config_regs != NULL), "[vega12_program_didt_config_registers] Invalid config register table!", return -EINVAL); | ||
785 | |||
786 | while (config_regs->offset != 0xFFFFFFFF) { | ||
787 | switch (reg_type) { | ||
788 | case VEGA12_CONFIGREG_DIDT: | ||
789 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, config_regs->offset); | ||
790 | data &= ~config_regs->mask; | ||
791 | data |= ((config_regs->value << config_regs->shift) & config_regs->mask); | ||
792 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, config_regs->offset, data); | ||
793 | break; | ||
794 | case VEGA12_CONFIGREG_GCCAC: | ||
795 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG_GC_CAC, config_regs->offset); | ||
796 | data &= ~config_regs->mask; | ||
797 | data |= ((config_regs->value << config_regs->shift) & config_regs->mask); | ||
798 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG_GC_CAC, config_regs->offset, data); | ||
799 | break; | ||
800 | case VEGA12_CONFIGREG_SECAC: | ||
801 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG_SE_CAC, config_regs->offset); | ||
802 | data &= ~config_regs->mask; | ||
803 | data |= ((config_regs->value << config_regs->shift) & config_regs->mask); | ||
804 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG_SE_CAC, config_regs->offset, data); | ||
805 | break; | ||
806 | default: | ||
807 | return -EINVAL; | ||
808 | } | ||
809 | |||
810 | config_regs++; | ||
811 | } | ||
812 | |||
813 | return 0; | ||
814 | } | ||
815 | |||
816 | static int vega12_program_gc_didt_config_registers(struct pp_hwmgr *hwmgr, const struct vega12_didt_config_reg *config_regs) | ||
817 | { | ||
818 | uint32_t data; | ||
819 | |||
820 | while (config_regs->offset != 0xFFFFFFFF) { | ||
821 | data = cgs_read_register(hwmgr->device, config_regs->offset); | ||
822 | data &= ~config_regs->mask; | ||
823 | data |= ((config_regs->value << config_regs->shift) & config_regs->mask); | ||
824 | cgs_write_register(hwmgr->device, config_regs->offset, data); | ||
825 | config_regs++; | ||
826 | } | ||
827 | |||
828 | return 0; | ||
829 | } | ||
830 | |||
831 | static void vega12_didt_set_mask(struct pp_hwmgr *hwmgr, const bool enable) | ||
832 | { | ||
833 | uint32_t data; | ||
834 | int result; | ||
835 | uint32_t en = (enable ? 1 : 0); | ||
836 | uint32_t didt_block_info = SQ_IR_MASK | TCP_IR_MASK | TD_PCC_MASK; | ||
837 | |||
838 | if (PP_CAP(PHM_PlatformCaps_SQRamping)) { | ||
839 | CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT, | ||
840 | DIDT_SQ_CTRL0, DIDT_CTRL_EN, en); | ||
841 | didt_block_info &= ~SQ_Enable_MASK; | ||
842 | didt_block_info |= en << SQ_Enable_SHIFT; | ||
843 | } | ||
844 | |||
845 | if (PP_CAP(PHM_PlatformCaps_DBRamping)) { | ||
846 | CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT, | ||
847 | DIDT_DB_CTRL0, DIDT_CTRL_EN, en); | ||
848 | didt_block_info &= ~DB_Enable_MASK; | ||
849 | didt_block_info |= en << DB_Enable_SHIFT; | ||
850 | } | ||
851 | |||
852 | if (PP_CAP(PHM_PlatformCaps_TDRamping)) { | ||
853 | CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT, | ||
854 | DIDT_TD_CTRL0, DIDT_CTRL_EN, en); | ||
855 | didt_block_info &= ~TD_Enable_MASK; | ||
856 | didt_block_info |= en << TD_Enable_SHIFT; | ||
857 | } | ||
858 | |||
859 | if (PP_CAP(PHM_PlatformCaps_TCPRamping)) { | ||
860 | CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT, | ||
861 | DIDT_TCP_CTRL0, DIDT_CTRL_EN, en); | ||
862 | didt_block_info &= ~TCP_Enable_MASK; | ||
863 | didt_block_info |= en << TCP_Enable_SHIFT; | ||
864 | } | ||
865 | |||
866 | #if 0 | ||
867 | if (PP_CAP(PHM_PlatformCaps_DBRRamping)) { | ||
868 | CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT, | ||
869 | DIDT_DBR_CTRL0, DIDT_CTRL_EN, en); | ||
870 | } | ||
871 | #endif | ||
872 | |||
873 | if (PP_CAP(PHM_PlatformCaps_DiDtEDCEnable)) { | ||
874 | if (PP_CAP(PHM_PlatformCaps_SQRamping)) { | ||
875 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL); | ||
876 | data = CGS_REG_SET_FIELD(data, DIDT_SQ_EDC_CTRL, EDC_EN, en); | ||
877 | data = CGS_REG_SET_FIELD(data, DIDT_SQ_EDC_CTRL, EDC_SW_RST, ~en); | ||
878 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL, data); | ||
879 | } | ||
880 | |||
881 | if (PP_CAP(PHM_PlatformCaps_DBRamping)) { | ||
882 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL); | ||
883 | data = CGS_REG_SET_FIELD(data, DIDT_DB_EDC_CTRL, EDC_EN, en); | ||
884 | data = CGS_REG_SET_FIELD(data, DIDT_DB_EDC_CTRL, EDC_SW_RST, ~en); | ||
885 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL, data); | ||
886 | } | ||
887 | |||
888 | if (PP_CAP(PHM_PlatformCaps_TDRamping)) { | ||
889 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL); | ||
890 | data = CGS_REG_SET_FIELD(data, DIDT_TD_EDC_CTRL, EDC_EN, en); | ||
891 | data = CGS_REG_SET_FIELD(data, DIDT_TD_EDC_CTRL, EDC_SW_RST, ~en); | ||
892 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL, data); | ||
893 | } | ||
894 | |||
895 | if (PP_CAP(PHM_PlatformCaps_TCPRamping)) { | ||
896 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL); | ||
897 | data = CGS_REG_SET_FIELD(data, DIDT_TCP_EDC_CTRL, EDC_EN, en); | ||
898 | data = CGS_REG_SET_FIELD(data, DIDT_TCP_EDC_CTRL, EDC_SW_RST, ~en); | ||
899 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL, data); | ||
900 | } | ||
901 | |||
902 | #if 0 | ||
903 | if (PP_CAP(PHM_PlatformCaps_DBRRamping)) { | ||
904 | data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL); | ||
905 | data = CGS_REG_SET_FIELD(data, DIDT_DBR_EDC_CTRL, EDC_EN, en); | ||
906 | data = CGS_REG_SET_FIELD(data, DIDT_DBR_EDC_CTRL, EDC_SW_RST, ~en); | ||
907 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL, data); | ||
908 | } | ||
909 | #endif | ||
910 | } | ||
911 | |||
912 | if (enable) { | ||
913 | /* For Vega12, SMC does not support any mask yet. */ | ||
914 | result = smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_ConfigureGfxDidt, didt_block_info); | ||
915 | PP_ASSERT((0 == result), "[EnableDiDtConfig] SMC Configure Gfx Didt Failed!"); | ||
916 | } | ||
917 | } | ||
918 | |||
919 | static int vega12_enable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr) | ||
920 | { | ||
921 | int result; | ||
922 | uint32_t num_se = 0, count, data; | ||
923 | struct amdgpu_device *adev = hwmgr->adev; | ||
924 | uint32_t reg; | ||
925 | |||
926 | num_se = adev->gfx.config.max_shader_engines; | ||
927 | |||
928 | cgs_enter_safe_mode(hwmgr->device, true); | ||
929 | |||
930 | cgs_lock_grbm_idx(hwmgr->device, true); | ||
931 | reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX); | ||
932 | for (count = 0; count < num_se; count++) { | ||
933 | data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT); | ||
934 | cgs_write_register(hwmgr->device, reg, data); | ||
935 | |||
936 | result = vega12_program_didt_config_registers(hwmgr, SEDiDtStallCtrlConfig_vega12, VEGA12_CONFIGREG_DIDT); | ||
937 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtStallPatternConfig_vega12, VEGA12_CONFIGREG_DIDT); | ||
938 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtWeightConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
939 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtCtrl1Config_Vega12, VEGA12_CONFIGREG_DIDT); | ||
940 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtCtrl2Config_Vega12, VEGA12_CONFIGREG_DIDT); | ||
941 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtCtrl3Config_vega12, VEGA12_CONFIGREG_DIDT); | ||
942 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtTuningCtrlConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
943 | result |= vega12_program_didt_config_registers(hwmgr, SELCacConfig_Vega12, VEGA12_CONFIGREG_SECAC); | ||
944 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtCtrl0Config_Vega12, VEGA12_CONFIGREG_DIDT); | ||
945 | |||
946 | if (0 != result) | ||
947 | break; | ||
948 | } | ||
949 | cgs_write_register(hwmgr->device, reg, 0xE0000000); | ||
950 | cgs_lock_grbm_idx(hwmgr->device, false); | ||
951 | |||
952 | vega12_didt_set_mask(hwmgr, true); | ||
953 | |||
954 | cgs_enter_safe_mode(hwmgr->device, false); | ||
955 | |||
956 | return 0; | ||
957 | } | ||
958 | |||
959 | static int vega12_disable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr) | ||
960 | { | ||
961 | cgs_enter_safe_mode(hwmgr->device, true); | ||
962 | |||
963 | vega12_didt_set_mask(hwmgr, false); | ||
964 | |||
965 | cgs_enter_safe_mode(hwmgr->device, false); | ||
966 | |||
967 | return 0; | ||
968 | } | ||
969 | |||
970 | static int vega12_enable_psm_gc_didt_config(struct pp_hwmgr *hwmgr) | ||
971 | { | ||
972 | int result; | ||
973 | uint32_t num_se = 0, count, data; | ||
974 | struct amdgpu_device *adev = hwmgr->adev; | ||
975 | uint32_t reg; | ||
976 | |||
977 | num_se = adev->gfx.config.max_shader_engines; | ||
978 | |||
979 | cgs_enter_safe_mode(hwmgr->device, true); | ||
980 | |||
981 | cgs_lock_grbm_idx(hwmgr->device, true); | ||
982 | reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX); | ||
983 | for (count = 0; count < num_se; count++) { | ||
984 | data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT); | ||
985 | cgs_write_register(hwmgr->device, reg, data); | ||
986 | |||
987 | result = vega12_program_didt_config_registers(hwmgr, SEDiDtStallCtrlConfig_vega12, VEGA12_CONFIGREG_DIDT); | ||
988 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtStallPatternConfig_vega12, VEGA12_CONFIGREG_DIDT); | ||
989 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtCtrl3Config_vega12, VEGA12_CONFIGREG_DIDT); | ||
990 | result |= vega12_program_didt_config_registers(hwmgr, SEDiDtCtrl0Config_Vega12, VEGA12_CONFIGREG_DIDT); | ||
991 | if (0 != result) | ||
992 | break; | ||
993 | } | ||
994 | cgs_write_register(hwmgr->device, reg, 0xE0000000); | ||
995 | cgs_lock_grbm_idx(hwmgr->device, false); | ||
996 | |||
997 | vega12_didt_set_mask(hwmgr, true); | ||
998 | |||
999 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1000 | |||
1001 | vega12_program_gc_didt_config_registers(hwmgr, GCDiDtDroopCtrlConfig_vega12); | ||
1002 | if (PP_CAP(PHM_PlatformCaps_GCEDC)) | ||
1003 | vega12_program_gc_didt_config_registers(hwmgr, GCDiDtCtrl0Config_vega12); | ||
1004 | |||
1005 | if (PP_CAP(PHM_PlatformCaps_PSM)) | ||
1006 | vega12_program_gc_didt_config_registers(hwmgr, AvfsPSMInitConfig_vega12); | ||
1007 | |||
1008 | return 0; | ||
1009 | } | ||
1010 | |||
1011 | static int vega12_disable_psm_gc_didt_config(struct pp_hwmgr *hwmgr) | ||
1012 | { | ||
1013 | uint32_t data; | ||
1014 | |||
1015 | cgs_enter_safe_mode(hwmgr->device, true); | ||
1016 | |||
1017 | vega12_didt_set_mask(hwmgr, false); | ||
1018 | |||
1019 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1020 | |||
1021 | if (PP_CAP(PHM_PlatformCaps_GCEDC)) { | ||
1022 | data = 0x00000000; | ||
1023 | cgs_write_register(hwmgr->device, mmGC_DIDT_CTRL0, data); | ||
1024 | } | ||
1025 | |||
1026 | if (PP_CAP(PHM_PlatformCaps_PSM)) | ||
1027 | vega12_program_gc_didt_config_registers(hwmgr, AvfsPSMResetConfig_vega12); | ||
1028 | |||
1029 | return 0; | ||
1030 | } | ||
1031 | |||
1032 | static int vega12_enable_se_edc_config(struct pp_hwmgr *hwmgr) | ||
1033 | { | ||
1034 | int result; | ||
1035 | uint32_t num_se = 0, count, data; | ||
1036 | struct amdgpu_device *adev = hwmgr->adev; | ||
1037 | uint32_t reg; | ||
1038 | |||
1039 | num_se = adev->gfx.config.max_shader_engines; | ||
1040 | |||
1041 | cgs_enter_safe_mode(hwmgr->device, true); | ||
1042 | |||
1043 | cgs_lock_grbm_idx(hwmgr->device, true); | ||
1044 | reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX); | ||
1045 | for (count = 0; count < num_se; count++) { | ||
1046 | data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT); | ||
1047 | cgs_write_register(hwmgr->device, reg, data); | ||
1048 | result = vega12_program_didt_config_registers(hwmgr, SEDiDtWeightConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1049 | result |= vega12_program_didt_config_registers(hwmgr, SEEDCStallPatternConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1050 | result |= vega12_program_didt_config_registers(hwmgr, SEEDCStallDelayConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1051 | result |= vega12_program_didt_config_registers(hwmgr, SEEDCThresholdConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1052 | result |= vega12_program_didt_config_registers(hwmgr, SEEDCCtrlResetConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1053 | result |= vega12_program_didt_config_registers(hwmgr, SEEDCCtrlConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1054 | |||
1055 | if (0 != result) | ||
1056 | break; | ||
1057 | } | ||
1058 | cgs_write_register(hwmgr->device, reg, 0xE0000000); | ||
1059 | cgs_lock_grbm_idx(hwmgr->device, false); | ||
1060 | |||
1061 | vega12_didt_set_mask(hwmgr, true); | ||
1062 | |||
1063 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1064 | |||
1065 | return 0; | ||
1066 | } | ||
1067 | |||
1068 | static int vega12_disable_se_edc_config(struct pp_hwmgr *hwmgr) | ||
1069 | { | ||
1070 | cgs_enter_safe_mode(hwmgr->device, true); | ||
1071 | |||
1072 | vega12_didt_set_mask(hwmgr, false); | ||
1073 | |||
1074 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1075 | |||
1076 | return 0; | ||
1077 | } | ||
1078 | |||
1079 | static int vega12_enable_psm_gc_edc_config(struct pp_hwmgr *hwmgr) | ||
1080 | { | ||
1081 | int result; | ||
1082 | uint32_t num_se = 0; | ||
1083 | uint32_t count, data; | ||
1084 | struct amdgpu_device *adev = hwmgr->adev; | ||
1085 | uint32_t reg; | ||
1086 | |||
1087 | num_se = adev->gfx.config.max_shader_engines; | ||
1088 | |||
1089 | cgs_enter_safe_mode(hwmgr->device, true); | ||
1090 | |||
1091 | vega12_program_gc_didt_config_registers(hwmgr, AvfsPSMResetConfig_vega12); | ||
1092 | |||
1093 | cgs_lock_grbm_idx(hwmgr->device, true); | ||
1094 | reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX); | ||
1095 | for (count = 0; count < num_se; count++) { | ||
1096 | data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT); | ||
1097 | cgs_write_register(hwmgr->device, reg, data); | ||
1098 | result |= vega12_program_didt_config_registers(hwmgr, PSMSEEDCStallPatternConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1099 | result |= vega12_program_didt_config_registers(hwmgr, PSMSEEDCStallDelayConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1100 | result |= vega12_program_didt_config_registers(hwmgr, PSMSEEDCCtrlResetConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1101 | result |= vega12_program_didt_config_registers(hwmgr, PSMSEEDCCtrlConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1102 | |||
1103 | if (0 != result) | ||
1104 | break; | ||
1105 | } | ||
1106 | cgs_write_register(hwmgr->device, reg, 0xE0000000); | ||
1107 | cgs_lock_grbm_idx(hwmgr->device, false); | ||
1108 | |||
1109 | vega12_didt_set_mask(hwmgr, true); | ||
1110 | |||
1111 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1112 | |||
1113 | vega12_program_gc_didt_config_registers(hwmgr, PSMGCEDCDroopCtrlConfig_vega12); | ||
1114 | |||
1115 | if (PP_CAP(PHM_PlatformCaps_GCEDC)) { | ||
1116 | vega12_program_gc_didt_config_registers(hwmgr, PSMGCEDCCtrlResetConfig_vega12); | ||
1117 | vega12_program_gc_didt_config_registers(hwmgr, PSMGCEDCCtrlConfig_vega12); | ||
1118 | } | ||
1119 | |||
1120 | if (PP_CAP(PHM_PlatformCaps_PSM)) | ||
1121 | vega12_program_gc_didt_config_registers(hwmgr, AvfsPSMInitConfig_vega12); | ||
1122 | |||
1123 | return 0; | ||
1124 | } | ||
1125 | |||
1126 | static int vega12_disable_psm_gc_edc_config(struct pp_hwmgr *hwmgr) | ||
1127 | { | ||
1128 | uint32_t data; | ||
1129 | |||
1130 | cgs_enter_safe_mode(hwmgr->device, true); | ||
1131 | |||
1132 | vega12_didt_set_mask(hwmgr, false); | ||
1133 | |||
1134 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1135 | |||
1136 | if (PP_CAP(PHM_PlatformCaps_GCEDC)) { | ||
1137 | data = 0x00000000; | ||
1138 | cgs_write_register(hwmgr->device, mmGC_EDC_CTRL, data); | ||
1139 | } | ||
1140 | |||
1141 | if (PP_CAP(PHM_PlatformCaps_PSM)) | ||
1142 | vega12_program_gc_didt_config_registers(hwmgr, AvfsPSMResetConfig_vega12); | ||
1143 | |||
1144 | return 0; | ||
1145 | } | ||
1146 | |||
1147 | static int vega12_enable_se_edc_force_stall_config(struct pp_hwmgr *hwmgr) | ||
1148 | { | ||
1149 | uint32_t reg; | ||
1150 | int result; | ||
1151 | |||
1152 | cgs_enter_safe_mode(hwmgr->device, true); | ||
1153 | |||
1154 | cgs_lock_grbm_idx(hwmgr->device, true); | ||
1155 | reg = soc15_get_register_offset(GC_HWID, 0, mmGRBM_GFX_INDEX_BASE_IDX, mmGRBM_GFX_INDEX); | ||
1156 | cgs_write_register(hwmgr->device, reg, 0xE0000000); | ||
1157 | cgs_lock_grbm_idx(hwmgr->device, false); | ||
1158 | |||
1159 | result = vega12_program_didt_config_registers(hwmgr, SEEDCForceStallPatternConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1160 | result |= vega12_program_didt_config_registers(hwmgr, SEEDCCtrlForceStallConfig_Vega12, VEGA12_CONFIGREG_DIDT); | ||
1161 | if (0 != result) | ||
1162 | return result; | ||
1163 | |||
1164 | vega12_didt_set_mask(hwmgr, false); | ||
1165 | |||
1166 | cgs_enter_safe_mode(hwmgr->device, false); | ||
1167 | |||
1168 | return 0; | ||
1169 | } | ||
1170 | |||
1171 | static int vega12_disable_se_edc_force_stall_config(struct pp_hwmgr *hwmgr) | ||
1172 | { | ||
1173 | int result; | ||
1174 | |||
1175 | result = vega12_disable_se_edc_config(hwmgr); | ||
1176 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDtConfig] Pre DIDT disable clock gating failed!", return result); | ||
1177 | |||
1178 | return 0; | ||
1179 | } | ||
1180 | |||
1181 | int vega12_enable_didt_config(struct pp_hwmgr *hwmgr) | ||
1182 | { | ||
1183 | int result = 0; | ||
1184 | struct vega12_hwmgr *data = (struct vega12_hwmgr *)(hwmgr->backend); | ||
1185 | |||
1186 | if (data->smu_features[GNLD_DIDT].supported) { | ||
1187 | if (data->smu_features[GNLD_DIDT].enabled) | ||
1188 | PP_DBG_LOG("[EnableDiDtConfig] Feature DiDt Already enabled!\n"); | ||
1189 | |||
1190 | switch (data->registry_data.didt_mode) { | ||
1191 | case 0: | ||
1192 | result = vega12_enable_cac_driving_se_didt_config(hwmgr); | ||
1193 | PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 0 Failed!", return result); | ||
1194 | break; | ||
1195 | case 2: | ||
1196 | result = vega12_enable_psm_gc_didt_config(hwmgr); | ||
1197 | PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 2 Failed!", return result); | ||
1198 | break; | ||
1199 | case 3: | ||
1200 | result = vega12_enable_se_edc_config(hwmgr); | ||
1201 | PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 3 Failed!", return result); | ||
1202 | break; | ||
1203 | case 1: | ||
1204 | case 4: | ||
1205 | case 5: | ||
1206 | result = vega12_enable_psm_gc_edc_config(hwmgr); | ||
1207 | PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 5 Failed!", return result); | ||
1208 | break; | ||
1209 | case 6: | ||
1210 | result = vega12_enable_se_edc_force_stall_config(hwmgr); | ||
1211 | PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 6 Failed!", return result); | ||
1212 | break; | ||
1213 | default: | ||
1214 | result = -EINVAL; | ||
1215 | break; | ||
1216 | } | ||
1217 | |||
1218 | #if 0 | ||
1219 | if (0 == result) { | ||
1220 | result = vega12_enable_smc_features(hwmgr, true, data->smu_features[GNLD_DIDT].smu_feature_bitmap); | ||
1221 | PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDtConfig] Attempt to Enable DiDt feature Failed!", return result); | ||
1222 | data->smu_features[GNLD_DIDT].enabled = true; | ||
1223 | } | ||
1224 | #endif | ||
1225 | } | ||
1226 | |||
1227 | return result; | ||
1228 | } | ||
1229 | |||
1230 | int vega12_disable_didt_config(struct pp_hwmgr *hwmgr) | ||
1231 | { | ||
1232 | int result = 0; | ||
1233 | struct vega12_hwmgr *data = (struct vega12_hwmgr *)(hwmgr->backend); | ||
1234 | |||
1235 | if (data->smu_features[GNLD_DIDT].supported) { | ||
1236 | if (!data->smu_features[GNLD_DIDT].enabled) | ||
1237 | PP_DBG_LOG("[DisableDiDtConfig] Feature DiDt Already Disabled!\n"); | ||
1238 | |||
1239 | switch (data->registry_data.didt_mode) { | ||
1240 | case 0: | ||
1241 | result = vega12_disable_cac_driving_se_didt_config(hwmgr); | ||
1242 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 0 Failed!", return result); | ||
1243 | break; | ||
1244 | case 2: | ||
1245 | result = vega12_disable_psm_gc_didt_config(hwmgr); | ||
1246 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 2 Failed!", return result); | ||
1247 | break; | ||
1248 | case 3: | ||
1249 | result = vega12_disable_se_edc_config(hwmgr); | ||
1250 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 3 Failed!", return result); | ||
1251 | break; | ||
1252 | case 1: | ||
1253 | case 4: | ||
1254 | case 5: | ||
1255 | result = vega12_disable_psm_gc_edc_config(hwmgr); | ||
1256 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 5 Failed!", return result); | ||
1257 | break; | ||
1258 | case 6: | ||
1259 | result = vega12_disable_se_edc_force_stall_config(hwmgr); | ||
1260 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 6 Failed!", return result); | ||
1261 | break; | ||
1262 | default: | ||
1263 | result = -EINVAL; | ||
1264 | break; | ||
1265 | } | ||
1266 | |||
1267 | if (0 == result) { | ||
1268 | result = vega12_enable_smc_features(hwmgr, false, data->smu_features[GNLD_DIDT].smu_feature_bitmap); | ||
1269 | PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDtConfig] Attempt to Disable DiDt feature Failed!", return result); | ||
1270 | data->smu_features[GNLD_DIDT].enabled = false; | ||
1271 | } | ||
1272 | } | ||
1273 | |||
1274 | return result; | ||
1275 | } | ||
1276 | |||
1277 | int vega12_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n) | ||
1278 | { | ||
1279 | struct vega12_hwmgr *data = | ||
1280 | (struct vega12_hwmgr *)(hwmgr->backend); | ||
1281 | |||
1282 | if (data->smu_features[GNLD_PPT].enabled) | ||
1283 | return smum_send_msg_to_smc_with_parameter(hwmgr, | ||
1284 | PPSMC_MSG_SetPptLimit, n); | ||
1285 | |||
1286 | return 0; | ||
1287 | } | ||
1288 | |||
1289 | int vega12_enable_power_containment(struct pp_hwmgr *hwmgr) | ||
1290 | { | ||
1291 | struct vega12_hwmgr *data = | ||
1292 | (struct vega12_hwmgr *)(hwmgr->backend); | ||
1293 | struct phm_ppt_v2_information *table_info = | ||
1294 | (struct phm_ppt_v2_information *)(hwmgr->pptable); | ||
1295 | struct phm_tdp_table *tdp_table = table_info->tdp_table; | ||
1296 | uint32_t default_pwr_limit = | ||
1297 | (uint32_t)(tdp_table->usMaximumPowerDeliveryLimit); | ||
1298 | int result = 0; | ||
1299 | |||
1300 | if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { | ||
1301 | if (data->smu_features[GNLD_PPT].supported) | ||
1302 | PP_ASSERT_WITH_CODE(!vega12_enable_smc_features(hwmgr, | ||
1303 | true, data->smu_features[GNLD_PPT].smu_feature_bitmap), | ||
1304 | "Attempt to enable PPT feature Failed!", | ||
1305 | data->smu_features[GNLD_PPT].supported = false); | ||
1306 | |||
1307 | if (data->smu_features[GNLD_TDC].supported) | ||
1308 | PP_ASSERT_WITH_CODE(!vega12_enable_smc_features(hwmgr, | ||
1309 | true, data->smu_features[GNLD_TDC].smu_feature_bitmap), | ||
1310 | "Attempt to enable PPT feature Failed!", | ||
1311 | data->smu_features[GNLD_TDC].supported = false); | ||
1312 | |||
1313 | result = vega12_set_power_limit(hwmgr, default_pwr_limit); | ||
1314 | PP_ASSERT_WITH_CODE(!result, | ||
1315 | "Failed to set Default Power Limit in SMC!", | ||
1316 | return result); | ||
1317 | } | ||
1318 | |||
1319 | return result; | ||
1320 | } | ||
1321 | |||
1322 | int vega12_disable_power_containment(struct pp_hwmgr *hwmgr) | ||
1323 | { | ||
1324 | struct vega12_hwmgr *data = | ||
1325 | (struct vega12_hwmgr *)(hwmgr->backend); | ||
1326 | |||
1327 | if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { | ||
1328 | if (data->smu_features[GNLD_PPT].supported) | ||
1329 | PP_ASSERT_WITH_CODE(!vega12_enable_smc_features(hwmgr, | ||
1330 | false, data->smu_features[GNLD_PPT].smu_feature_bitmap), | ||
1331 | "Attempt to disable PPT feature Failed!", | ||
1332 | data->smu_features[GNLD_PPT].supported = false); | ||
1333 | |||
1334 | if (data->smu_features[GNLD_TDC].supported) | ||
1335 | PP_ASSERT_WITH_CODE(!vega12_enable_smc_features(hwmgr, | ||
1336 | false, data->smu_features[GNLD_TDC].smu_feature_bitmap), | ||
1337 | "Attempt to disable PPT feature Failed!", | ||
1338 | data->smu_features[GNLD_TDC].supported = false); | ||
1339 | } | ||
1340 | |||
1341 | return 0; | ||
1342 | } | ||
1343 | |||
1344 | static int vega12_set_overdrive_target_percentage(struct pp_hwmgr *hwmgr, | ||
1345 | uint32_t adjust_percent) | ||
1346 | { | ||
1347 | return smum_send_msg_to_smc_with_parameter(hwmgr, | ||
1348 | PPSMC_MSG_OverDriveSetPercentage, adjust_percent); | ||
1349 | } | ||
1350 | |||
1351 | int vega12_power_control_set_level(struct pp_hwmgr *hwmgr) | ||
1352 | { | ||
1353 | int adjust_percent, result = 0; | ||
1354 | |||
1355 | if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { | ||
1356 | adjust_percent = | ||
1357 | hwmgr->platform_descriptor.TDPAdjustmentPolarity ? | ||
1358 | hwmgr->platform_descriptor.TDPAdjustment : | ||
1359 | (-1 * hwmgr->platform_descriptor.TDPAdjustment); | ||
1360 | result = vega12_set_overdrive_target_percentage(hwmgr, | ||
1361 | (uint32_t)adjust_percent); | ||
1362 | } | ||
1363 | return result; | ||
1364 | } | ||
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.h deleted file mode 100644 index 78d31a6747dd..000000000000 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_powertune.h +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2017 Advanced Micro Devices, Inc. | ||
3 | * | ||
4 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
5 | * copy of this software and associated documentation files (the "Software"), | ||
6 | * to deal in the Software without restriction, including without limitation | ||
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
8 | * and/or sell copies of the Software, and to permit persons to whom the | ||
9 | * Software is furnished to do so, subject to the following conditions: | ||
10 | * | ||
11 | * The above copyright notice and this permission notice shall be included in | ||
12 | * all copies or substantial portions of the Software. | ||
13 | * | ||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
20 | * OTHER DEALINGS IN THE SOFTWARE. | ||
21 | * | ||
22 | */ | ||
23 | #ifndef _VEGA12_POWERTUNE_H_ | ||
24 | #define _VEGA12_POWERTUNE_H_ | ||
25 | |||
26 | enum vega12_didt_config_reg_type { | ||
27 | VEGA12_CONFIGREG_DIDT = 0, | ||
28 | VEGA12_CONFIGREG_GCCAC, | ||
29 | VEGA12_CONFIGREG_SECAC | ||
30 | }; | ||
31 | |||
32 | /* PowerContainment Features */ | ||
33 | #define POWERCONTAINMENT_FEATURE_DTE 0x00000001 | ||
34 | #define POWERCONTAINMENT_FEATURE_TDCLimit 0x00000002 | ||
35 | #define POWERCONTAINMENT_FEATURE_PkgPwrLimit 0x00000004 | ||
36 | |||
37 | struct vega12_didt_config_reg { | ||
38 | uint32_t offset; | ||
39 | uint32_t mask; | ||
40 | uint32_t shift; | ||
41 | uint32_t value; | ||
42 | }; | ||
43 | |||
44 | int vega12_enable_power_containment(struct pp_hwmgr *hwmgr); | ||
45 | int vega12_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n); | ||
46 | int vega12_power_control_set_level(struct pp_hwmgr *hwmgr); | ||
47 | int vega12_disable_power_containment(struct pp_hwmgr *hwmgr); | ||
48 | |||
49 | int vega12_enable_didt_config(struct pp_hwmgr *hwmgr); | ||
50 | int vega12_disable_didt_config(struct pp_hwmgr *hwmgr); | ||
51 | |||
52 | #endif /* _VEGA12_POWERTUNE_H_ */ | ||
53 | |||