LCOV - code coverage report
Current view: top level - drivers/gpu/drm/amd/pm/powerplay/hwmgr - vega10_powertune.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 324 0.0 %
Date: 2022-12-09 01:23:36 Functions: 0 20 0.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright 2016 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 "vega10_hwmgr.h"
      26             : #include "vega10_smumgr.h"
      27             : #include "vega10_powertune.h"
      28             : #include "vega10_ppsmc.h"
      29             : #include "vega10_inc.h"
      30             : #include "pp_debug.h"
      31             : #include "soc15_common.h"
      32             : 
      33             : static const struct vega10_didt_config_reg SEDiDtTuningCtrlConfig_Vega10[] =
      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 vega10_didt_config_reg SEDiDtCtrl3Config_vega10[] =
      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 vega10_didt_config_reg SEDiDtCtrl2Config_Vega10[] =
     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 vega10_didt_config_reg SEDiDtCtrl1Config_Vega10[] =
     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 vega10_didt_config_reg SEDiDtWeightConfig_Vega10[] =
     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 vega10_didt_config_reg SEDiDtCtrl0Config_Vega10[] =
     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 vega10_didt_config_reg SEDiDtStallCtrlConfig_vega10[] =
     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 vega10_didt_config_reg SEDiDtStallPatternConfig_vega10[] =
     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 vega10_didt_config_reg SELCacConfig_Vega10[] =
     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 vega10_didt_config_reg SEEDCStallPatternConfig_Vega10[] =
     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 vega10_didt_config_reg SEEDCForceStallPatternConfig_Vega10[] =
     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 vega10_didt_config_reg SEEDCStallDelayConfig_Vega10[] =
     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             :         {   ixDIDT_SQ_EDC_STALL_DELAY_3,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     464             :         {   ixDIDT_SQ_EDC_STALL_DELAY_4,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     465             :         /* TD */
     466             :         {   ixDIDT_TD_EDC_STALL_DELAY_1,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     467             :         {   ixDIDT_TD_EDC_STALL_DELAY_2,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     468             :         {   ixDIDT_TD_EDC_STALL_DELAY_3,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     469             :         {   ixDIDT_TD_EDC_STALL_DELAY_4,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     470             :         /* TCP */
     471             :         {   ixDIDT_TCP_EDC_STALL_DELAY_1,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
     472             :         {   ixDIDT_TCP_EDC_STALL_DELAY_2,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
     473             :         {   ixDIDT_TCP_EDC_STALL_DELAY_3,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
     474             :         {   ixDIDT_TCP_EDC_STALL_DELAY_4,      0xFFFFFFFF,                                          0,                                                     0x00000000 },
     475             :         /* DB */
     476             :         {   ixDIDT_DB_EDC_STALL_DELAY_1,       0xFFFFFFFF,                                          0,                                                     0x00000000 },
     477             : 
     478             :         {   0xFFFFFFFF  }  /* End of list */
     479             : };
     480             : 
     481             : static const struct vega10_didt_config_reg SEEDCThresholdConfig_Vega10[] =
     482             : {
     483             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     484             :  *      Offset                             Mask                                                 Shift                                                  Value
     485             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     486             :  */
     487             :         {   ixDIDT_SQ_EDC_THRESHOLD,           0xFFFFFFFF,                                          0,                                                     0x0000010E },
     488             :         {   ixDIDT_TD_EDC_THRESHOLD,           0xFFFFFFFF,                                          0,                                                     0xFFFFFFFF },
     489             :         {   ixDIDT_TCP_EDC_THRESHOLD,          0xFFFFFFFF,                                          0,                                                     0xFFFFFFFF },
     490             :         {   ixDIDT_DB_EDC_THRESHOLD,           0xFFFFFFFF,                                          0,                                                     0xFFFFFFFF },
     491             : 
     492             :         {   0xFFFFFFFF  }  /* End of list */
     493             : };
     494             : 
     495             : static const struct vega10_didt_config_reg SEEDCCtrlResetConfig_Vega10[] =
     496             : {
     497             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     498             :  *      Offset                             Mask                                                 Shift                                                  Value
     499             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     500             :  */
     501             :         /* SQ */
     502             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
     503             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0001 },
     504             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
     505             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
     506             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
     507             :         {   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 },
     508             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
     509             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
     510             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
     511             :         {   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 },
     512             :         {   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 },
     513             : 
     514             :         {   0xFFFFFFFF  }  /* End of list */
     515             : };
     516             : 
     517             : static const struct vega10_didt_config_reg SEEDCCtrlConfig_Vega10[] =
     518             : {
     519             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     520             :  *      Offset                             Mask                                                 Shift                                                  Value
     521             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     522             :  */
     523             :         /* SQ */
     524             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
     525             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
     526             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
     527             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
     528             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0004 },
     529             :         {   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 },
     530             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
     531             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
     532             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
     533             :         {   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 },
     534             :         {   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 },
     535             : 
     536             :         {   0xFFFFFFFF  }  /* End of list */
     537             : };
     538             : 
     539             : static const struct vega10_didt_config_reg SEEDCCtrlForceStallConfig_Vega10[] =
     540             : {
     541             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     542             :  *      Offset                             Mask                                                 Shift                                                  Value
     543             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     544             :  */
     545             :         /* SQ */
     546             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
     547             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
     548             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
     549             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0001 },
     550             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0001 },
     551             :         {   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 },
     552             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
     553             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
     554             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
     555             :         {   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 },
     556             :         {   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 },
     557             : 
     558             :         /* TD */
     559             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_EN_MASK,                       DIDT_TD_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
     560             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_TD_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
     561             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_TD_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
     562             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_TD_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0001 },
     563             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_TD_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0001 },
     564             :         {   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 },
     565             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_TD_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
     566             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_TD_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
     567             :         {   ixDIDT_TD_EDC_CTRL,                DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_TD_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
     568             :         {   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 },
     569             :         {   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 },
     570             : 
     571             :         {   0xFFFFFFFF  }  /* End of list */
     572             : };
     573             : 
     574             : static const struct vega10_didt_config_reg    GCDiDtDroopCtrlConfig_vega10[] =
     575             : {
     576             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     577             :  *      Offset                             Mask                                                 Shift                                                  Value
     578             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     579             :  */
     580             :         {   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_EN__SHIFT,  0x0000 },
     581             :         {   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_THRESHOLD__SHIFT,  0x0000 },
     582             :         {   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_INDEX__SHIFT,  0x0000 },
     583             :         {   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL_MASK,   GC_DIDT_DROOP_CTRL__DIDT_LEVEL_SEL__SHIFT,  0x0000 },
     584             :         {   mmGC_DIDT_DROOP_CTRL,             GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW_MASK,   GC_DIDT_DROOP_CTRL__DIDT_DROOP_LEVEL_OVERFLOW__SHIFT,  0x0000 },
     585             : 
     586             :         {   0xFFFFFFFF  }  /* End of list */
     587             : };
     588             : 
     589             : static const struct vega10_didt_config_reg    GCDiDtCtrl0Config_vega10[] =
     590             : {
     591             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     592             :  *      Offset                             Mask                                                 Shift                                                  Value
     593             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     594             :  */
     595             :         {   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_CTRL_EN_MASK,   GC_DIDT_CTRL0__DIDT_CTRL_EN__SHIFT,  0x0000 },
     596             :         {   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__PHASE_OFFSET_MASK,   GC_DIDT_CTRL0__PHASE_OFFSET__SHIFT,  0x0000 },
     597             :         {   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_SW_RST_MASK,   GC_DIDT_CTRL0__DIDT_SW_RST__SHIFT,  0x0000 },
     598             :         {   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK,   GC_DIDT_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT,  0x0000 },
     599             :         {   mmGC_DIDT_CTRL0,                  GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT_MASK,   GC_DIDT_CTRL0__DIDT_TRIGGER_THROTTLE_LOWBIT__SHIFT,  0x0000 },
     600             :         {   0xFFFFFFFF  }  /* End of list */
     601             : };
     602             : 
     603             : 
     604             : static const struct vega10_didt_config_reg   PSMSEEDCStallPatternConfig_Vega10[] =
     605             : {
     606             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     607             :  *      Offset                             Mask                                                 Shift                                                  Value
     608             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     609             :  */
     610             :         /* SQ EDC STALL PATTERNs */
     611             :         {   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 },
     612             :         {   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 },
     613             :         {   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 },
     614             :         {   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 },
     615             : 
     616             :         {   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 },
     617             :         {   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 },
     618             : 
     619             :         {   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 },
     620             : 
     621             :         {   0xFFFFFFFF  }  /* End of list */
     622             : };
     623             : 
     624             : static const struct vega10_didt_config_reg   PSMSEEDCStallDelayConfig_Vega10[] =
     625             : {
     626             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     627             :  *      Offset                             Mask                                                 Shift                                                  Value
     628             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     629             :  */
     630             :         /* SQ EDC STALL DELAYs */
     631             :         {   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 },
     632             :         {   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 },
     633             :         {   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 },
     634             :         {   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 },
     635             : 
     636             :         {   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 },
     637             :         {   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ5__SHIFT,  0x0000 },
     638             :         {   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ6__SHIFT,  0x0000 },
     639             :         {   ixDIDT_SQ_EDC_STALL_DELAY_2,      DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7_MASK,  DIDT_SQ_EDC_STALL_DELAY_2__EDC_STALL_DELAY_SQ7__SHIFT,  0x0000 },
     640             : 
     641             :         {   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8_MASK,  DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ8__SHIFT,  0x0000 },
     642             :         {   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9_MASK,  DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ9__SHIFT,  0x0000 },
     643             :         {   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10_MASK, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ10__SHIFT, 0x0000 },
     644             :         {   ixDIDT_SQ_EDC_STALL_DELAY_3,      DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11_MASK, DIDT_SQ_EDC_STALL_DELAY_3__EDC_STALL_DELAY_SQ11__SHIFT, 0x0000 },
     645             : 
     646             :         {   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12__SHIFT, 0x0000 },
     647             :         {   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ12_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ13__SHIFT, 0x0000 },
     648             :         {   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ14__SHIFT, 0x0000 },
     649             :         {   ixDIDT_SQ_EDC_STALL_DELAY_4,      DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15_MASK, DIDT_SQ_EDC_STALL_DELAY_4__EDC_STALL_DELAY_SQ15__SHIFT, 0x0000 },
     650             : 
     651             :         {   0xFFFFFFFF  }  /* End of list */
     652             : };
     653             : 
     654             : static const struct vega10_didt_config_reg   PSMSEEDCCtrlResetConfig_Vega10[] =
     655             : {
     656             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     657             :  *      Offset                             Mask                                                 Shift                                                  Value
     658             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     659             :  */
     660             :         /* SQ EDC CTRL */
     661             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0000 },
     662             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0001 },
     663             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
     664             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
     665             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
     666             :         {   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 },
     667             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
     668             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0000 },
     669             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0000 },
     670             :         {   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 },
     671             :         {   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 },
     672             : 
     673             :         {   0xFFFFFFFF  }  /* End of list */
     674             : };
     675             : 
     676             : static const struct vega10_didt_config_reg   PSMSEEDCCtrlConfig_Vega10[] =
     677             : {
     678             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     679             :  *      Offset                             Mask                                                 Shift                                                  Value
     680             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     681             :  */
     682             :         /* SQ EDC CTRL */
     683             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_EN_MASK,                       DIDT_SQ_EDC_CTRL__EDC_EN__SHIFT,                        0x0001 },
     684             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_SW_RST_MASK,                   DIDT_SQ_EDC_CTRL__EDC_SW_RST__SHIFT,                    0x0000 },
     685             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,          DIDT_SQ_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,           0x0000 },
     686             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL_MASK,              DIDT_SQ_EDC_CTRL__EDC_FORCE_STALL__SHIFT,               0x0000 },
     687             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,  DIDT_SQ_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,   0x0000 },
     688             :         {   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 },
     689             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,     DIDT_SQ_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,      0x0000 },
     690             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_EN_MASK,                    DIDT_SQ_EDC_CTRL__GC_EDC_EN__SHIFT,                     0x0001 },
     691             :         {   ixDIDT_SQ_EDC_CTRL,                DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY_MASK,          DIDT_SQ_EDC_CTRL__GC_EDC_STALL_POLICY__SHIFT,           0x0003 },
     692             :         {   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 },
     693             :         {   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 },
     694             : 
     695             :         {   0xFFFFFFFF  }  /* End of list */
     696             : };
     697             : 
     698             : static const struct vega10_didt_config_reg   PSMGCEDCDroopCtrlConfig_vega10[] =
     699             : {
     700             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     701             :  *      Offset                             Mask                                                 Shift                                                  Value
     702             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     703             :  */
     704             :         {   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN_MASK,          GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_EN__SHIFT,           0x0001 },
     705             :         {   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD_MASK,         GC_EDC_DROOP_CTRL__EDC_DROOP_THRESHOLD__SHIFT,          0x0384 },
     706             :         {   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX_MASK,       GC_EDC_DROOP_CTRL__EDC_DROOP_LEVEL_INDEX__SHIFT,        0x0001 },
     707             :         {   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__AVG_PSM_SEL_MASK,                 GC_EDC_DROOP_CTRL__AVG_PSM_SEL__SHIFT,                  0x0001 },
     708             :         {   mmGC_EDC_DROOP_CTRL,               GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL_MASK,               GC_EDC_DROOP_CTRL__EDC_LEVEL_SEL__SHIFT,                0x0001 },
     709             : 
     710             :         {   0xFFFFFFFF  }  /* End of list */
     711             : };
     712             : 
     713             : static const struct vega10_didt_config_reg   PSMGCEDCCtrlResetConfig_vega10[] =
     714             : {
     715             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     716             :  *      Offset                             Mask                                                 Shift                                                  Value
     717             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     718             :  */
     719             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_EN_MASK,                            GC_EDC_CTRL__EDC_EN__SHIFT,                             0x0000 },
     720             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_SW_RST_MASK,                        GC_EDC_CTRL__EDC_SW_RST__SHIFT,                         0x0001 },
     721             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,               GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,                0x0000 },
     722             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_FORCE_STALL_MASK,                   GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT,                    0x0000 },
     723             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,       GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,        0x0000 },
     724             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,          GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,           0x0000 },
     725             : 
     726             :         {   0xFFFFFFFF  }  /* End of list */
     727             : };
     728             : 
     729             : static const struct vega10_didt_config_reg   PSMGCEDCCtrlConfig_vega10[] =
     730             : {
     731             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     732             :  *      Offset                             Mask                                                 Shift                                                  Value
     733             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     734             :  */
     735             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_EN_MASK,                            GC_EDC_CTRL__EDC_EN__SHIFT,                             0x0001 },
     736             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_SW_RST_MASK,                        GC_EDC_CTRL__EDC_SW_RST__SHIFT,                         0x0000 },
     737             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE_MASK,               GC_EDC_CTRL__EDC_CLK_EN_OVERRIDE__SHIFT,                0x0000 },
     738             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_FORCE_STALL_MASK,                   GC_EDC_CTRL__EDC_FORCE_STALL__SHIFT,                    0x0000 },
     739             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT_MASK,       GC_EDC_CTRL__EDC_TRIGGER_THROTTLE_LOWBIT__SHIFT,        0x0000 },
     740             :         {   mmGC_EDC_CTRL,                     GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA_MASK,          GC_EDC_CTRL__EDC_ALLOW_WRITE_PWRDELTA__SHIFT,           0x0000 },
     741             : 
     742             :         {   0xFFFFFFFF  }  /* End of list */
     743             : };
     744             : 
     745             : static const struct vega10_didt_config_reg    AvfsPSMResetConfig_vega10[]=
     746             : {
     747             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     748             :  *      Offset                             Mask                                                 Shift                                                  Value
     749             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     750             :  */
     751             :         {   0x16A02,                         0xFFFFFFFF,                                            0x0,                                                    0x0000005F },
     752             :         {   0x16A05,                         0xFFFFFFFF,                                            0x0,                                                    0x00000001 },
     753             :         {   0x16A06,                         0x00000001,                                            0x0,                                                    0x02000000 },
     754             :         {   0x16A01,                         0xFFFFFFFF,                                            0x0,                                                    0x00003027 },
     755             : 
     756             :         {   0xFFFFFFFF  }  /* End of list */
     757             : };
     758             : 
     759             : static const struct vega10_didt_config_reg    AvfsPSMInitConfig_vega10[] =
     760             : {
     761             : /* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     762             :  *      Offset                             Mask                                                 Shift                                                  Value
     763             :  * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     764             :  */
     765             :         {   0x16A05,                         0xFFFFFFFF,                                            0x18,                                                    0x00000001 },
     766             :         {   0x16A05,                         0xFFFFFFFF,                                            0x8,                                                     0x00000003 },
     767             :         {   0x16A05,                         0xFFFFFFFF,                                            0xa,                                                     0x00000006 },
     768             :         {   0x16A05,                         0xFFFFFFFF,                                            0x7,                                                     0x00000000 },
     769             :         {   0x16A06,                         0xFFFFFFFF,                                            0x18,                                                    0x00000001 },
     770             :         {   0x16A06,                         0xFFFFFFFF,                                            0x19,                                                    0x00000001 },
     771             :         {   0x16A01,                         0xFFFFFFFF,                                            0x0,                                                     0x00003027 },
     772             : 
     773             :         {   0xFFFFFFFF  }  /* End of list */
     774             : };
     775             : 
     776           0 : static int vega10_program_didt_config_registers(struct pp_hwmgr *hwmgr, const struct vega10_didt_config_reg *config_regs, enum vega10_didt_config_reg_type reg_type)
     777             : {
     778             :         uint32_t data;
     779             : 
     780           0 :         PP_ASSERT_WITH_CODE((config_regs != NULL), "[vega10_program_didt_config_registers] Invalid config register table!", return -EINVAL);
     781             : 
     782           0 :         while (config_regs->offset != 0xFFFFFFFF) {
     783           0 :                 switch (reg_type) {
     784             :                 case VEGA10_CONFIGREG_DIDT:
     785           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, config_regs->offset);
     786           0 :                         data &= ~config_regs->mask;
     787           0 :                         data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
     788           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, config_regs->offset, data);
     789             :                         break;
     790             :                 case VEGA10_CONFIGREG_GCCAC:
     791           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG_GC_CAC, config_regs->offset);
     792           0 :                         data &= ~config_regs->mask;
     793           0 :                         data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
     794           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG_GC_CAC, config_regs->offset, data);
     795             :                         break;
     796             :                 case VEGA10_CONFIGREG_SECAC:
     797           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG_SE_CAC, config_regs->offset);
     798           0 :                         data &= ~config_regs->mask;
     799           0 :                         data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
     800           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG_SE_CAC, config_regs->offset, data);
     801             :                         break;
     802             :                 default:
     803             :                         return -EINVAL;
     804             :                 }
     805             : 
     806           0 :                 config_regs++;
     807             :         }
     808             : 
     809             :         return 0;
     810             : }
     811             : 
     812           0 : static int vega10_program_gc_didt_config_registers(struct pp_hwmgr *hwmgr, const struct vega10_didt_config_reg *config_regs)
     813             : {
     814             :         uint32_t data;
     815             : 
     816           0 :         while (config_regs->offset != 0xFFFFFFFF) {
     817           0 :                 data = cgs_read_register(hwmgr->device, config_regs->offset);
     818           0 :                 data &= ~config_regs->mask;
     819           0 :                 data |= ((config_regs->value << config_regs->shift) & config_regs->mask);
     820           0 :                 cgs_write_register(hwmgr->device, config_regs->offset, data);
     821           0 :                 config_regs++;
     822             :         }
     823             : 
     824           0 :         return 0;
     825             : }
     826             : 
     827           0 : static void vega10_didt_set_mask(struct pp_hwmgr *hwmgr, const bool enable)
     828             : {
     829             :         uint32_t data;
     830           0 :         uint32_t en = (enable ? 1 : 0);
     831           0 :         uint32_t didt_block_info = SQ_IR_MASK | TCP_IR_MASK | TD_PCC_MASK;
     832             : 
     833           0 :         if (PP_CAP(PHM_PlatformCaps_SQRamping)) {
     834           0 :                 CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT,
     835             :                                      DIDT_SQ_CTRL0, DIDT_CTRL_EN, en);
     836           0 :                 didt_block_info &= ~SQ_Enable_MASK;
     837           0 :                 didt_block_info |= en << SQ_Enable_SHIFT;
     838             :         }
     839             : 
     840           0 :         if (PP_CAP(PHM_PlatformCaps_DBRamping)) {
     841           0 :                 CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT,
     842             :                                      DIDT_DB_CTRL0, DIDT_CTRL_EN, en);
     843           0 :                 didt_block_info &= ~DB_Enable_MASK;
     844           0 :                 didt_block_info |= en << DB_Enable_SHIFT;
     845             :         }
     846             : 
     847           0 :         if (PP_CAP(PHM_PlatformCaps_TDRamping)) {
     848           0 :                 CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT,
     849             :                                      DIDT_TD_CTRL0, DIDT_CTRL_EN, en);
     850           0 :                 didt_block_info &= ~TD_Enable_MASK;
     851           0 :                 didt_block_info |= en << TD_Enable_SHIFT;
     852             :         }
     853             : 
     854           0 :         if (PP_CAP(PHM_PlatformCaps_TCPRamping)) {
     855           0 :                 CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT,
     856             :                                      DIDT_TCP_CTRL0, DIDT_CTRL_EN, en);
     857           0 :                 didt_block_info &= ~TCP_Enable_MASK;
     858           0 :                 didt_block_info |= en << TCP_Enable_SHIFT;
     859             :         }
     860             : 
     861           0 :         if (PP_CAP(PHM_PlatformCaps_DBRRamping)) {
     862           0 :                 CGS_WREG32_FIELD_IND(hwmgr->device, CGS_IND_REG__DIDT,
     863             :                                      DIDT_DBR_CTRL0, DIDT_CTRL_EN, en);
     864             :         }
     865             : 
     866           0 :         if (PP_CAP(PHM_PlatformCaps_DiDtEDCEnable)) {
     867           0 :                 if (PP_CAP(PHM_PlatformCaps_SQRamping)) {
     868           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL);
     869           0 :                         data = REG_SET_FIELD(data, DIDT_SQ_EDC_CTRL, EDC_EN, en);
     870           0 :                         data = REG_SET_FIELD(data, DIDT_SQ_EDC_CTRL, EDC_SW_RST, ~en);
     871           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_SQ_EDC_CTRL, data);
     872             :                 }
     873             : 
     874           0 :                 if (PP_CAP(PHM_PlatformCaps_DBRamping)) {
     875           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL);
     876           0 :                         data = REG_SET_FIELD(data, DIDT_DB_EDC_CTRL, EDC_EN, en);
     877           0 :                         data = REG_SET_FIELD(data, DIDT_DB_EDC_CTRL, EDC_SW_RST, ~en);
     878           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DB_EDC_CTRL, data);
     879             :                 }
     880             : 
     881           0 :                 if (PP_CAP(PHM_PlatformCaps_TDRamping)) {
     882           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL);
     883           0 :                         data = REG_SET_FIELD(data, DIDT_TD_EDC_CTRL, EDC_EN, en);
     884           0 :                         data = REG_SET_FIELD(data, DIDT_TD_EDC_CTRL, EDC_SW_RST, ~en);
     885           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TD_EDC_CTRL, data);
     886             :                 }
     887             : 
     888           0 :                 if (PP_CAP(PHM_PlatformCaps_TCPRamping)) {
     889           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL);
     890           0 :                         data = REG_SET_FIELD(data, DIDT_TCP_EDC_CTRL, EDC_EN, en);
     891           0 :                         data = REG_SET_FIELD(data, DIDT_TCP_EDC_CTRL, EDC_SW_RST, ~en);
     892           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_TCP_EDC_CTRL, data);
     893             :                 }
     894             : 
     895           0 :                 if (PP_CAP(PHM_PlatformCaps_DBRRamping)) {
     896           0 :                         data = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL);
     897           0 :                         data = REG_SET_FIELD(data, DIDT_DBR_EDC_CTRL, EDC_EN, en);
     898           0 :                         data = REG_SET_FIELD(data, DIDT_DBR_EDC_CTRL, EDC_SW_RST, ~en);
     899           0 :                         cgs_write_ind_register(hwmgr->device, CGS_IND_REG__DIDT, ixDIDT_DBR_EDC_CTRL, data);
     900             :                 }
     901             :         }
     902             : 
     903             :         /* For Vega10, SMC does not support any mask yet. */
     904           0 :         if (enable)
     905           0 :                 smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_ConfigureGfxDidt, didt_block_info,
     906             :                                                 NULL);
     907             : 
     908           0 : }
     909             : 
     910           0 : static int vega10_enable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr)
     911             : {
     912           0 :         struct amdgpu_device *adev = hwmgr->adev;
     913             :         int result;
     914           0 :         uint32_t num_se = 0, count, data;
     915             : 
     916           0 :         num_se = adev->gfx.config.max_shader_engines;
     917             : 
     918           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
     919             : 
     920           0 :         mutex_lock(&adev->grbm_idx_mutex);
     921           0 :         for (count = 0; count < num_se; count++) {
     922           0 :                 data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
     923           0 :                 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data);
     924             : 
     925           0 :                 result =  vega10_program_didt_config_registers(hwmgr, SEDiDtStallCtrlConfig_vega10, VEGA10_CONFIGREG_DIDT);
     926           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtStallPatternConfig_vega10, VEGA10_CONFIGREG_DIDT);
     927           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtWeightConfig_Vega10, VEGA10_CONFIGREG_DIDT);
     928           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl1Config_Vega10, VEGA10_CONFIGREG_DIDT);
     929           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl2Config_Vega10, VEGA10_CONFIGREG_DIDT);
     930           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl3Config_vega10, VEGA10_CONFIGREG_DIDT);
     931           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtTuningCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
     932           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SELCacConfig_Vega10, VEGA10_CONFIGREG_SECAC);
     933           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl0Config_Vega10, VEGA10_CONFIGREG_DIDT);
     934             : 
     935           0 :                 if (0 != result)
     936             :                         break;
     937             :         }
     938           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, 0xE0000000);
     939           0 :         mutex_unlock(&adev->grbm_idx_mutex);
     940             : 
     941           0 :         vega10_didt_set_mask(hwmgr, true);
     942             : 
     943           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
     944             : 
     945           0 :         return 0;
     946             : }
     947             : 
     948           0 : static int vega10_disable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr)
     949             : {
     950           0 :         struct amdgpu_device *adev = hwmgr->adev;
     951             : 
     952           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
     953             : 
     954           0 :         vega10_didt_set_mask(hwmgr, false);
     955             : 
     956           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
     957             : 
     958           0 :         return 0;
     959             : }
     960             : 
     961           0 : static int vega10_enable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
     962             : {
     963           0 :         struct amdgpu_device *adev = hwmgr->adev;
     964             :         int result;
     965           0 :         uint32_t num_se = 0, count, data;
     966             : 
     967           0 :         num_se = adev->gfx.config.max_shader_engines;
     968             : 
     969           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
     970             : 
     971           0 :         mutex_lock(&adev->grbm_idx_mutex);
     972           0 :         for (count = 0; count < num_se; count++) {
     973           0 :                 data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
     974           0 :                 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data);
     975             : 
     976           0 :                 result = vega10_program_didt_config_registers(hwmgr, SEDiDtStallCtrlConfig_vega10, VEGA10_CONFIGREG_DIDT);
     977           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtStallPatternConfig_vega10, VEGA10_CONFIGREG_DIDT);
     978           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl3Config_vega10, VEGA10_CONFIGREG_DIDT);
     979           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEDiDtCtrl0Config_Vega10, VEGA10_CONFIGREG_DIDT);
     980           0 :                 if (0 != result)
     981             :                         break;
     982             :         }
     983           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, 0xE0000000);
     984           0 :         mutex_unlock(&adev->grbm_idx_mutex);
     985             : 
     986           0 :         vega10_didt_set_mask(hwmgr, true);
     987             : 
     988           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
     989             : 
     990           0 :         vega10_program_gc_didt_config_registers(hwmgr, GCDiDtDroopCtrlConfig_vega10);
     991           0 :         if (PP_CAP(PHM_PlatformCaps_GCEDC))
     992           0 :                 vega10_program_gc_didt_config_registers(hwmgr, GCDiDtCtrl0Config_vega10);
     993             : 
     994           0 :         if (PP_CAP(PHM_PlatformCaps_PSM))
     995           0 :                 vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMInitConfig_vega10);
     996             : 
     997           0 :         return 0;
     998             : }
     999             : 
    1000           0 : static int vega10_disable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
    1001             : {
    1002           0 :         struct amdgpu_device *adev = hwmgr->adev;
    1003             :         uint32_t data;
    1004             : 
    1005           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    1006             : 
    1007           0 :         vega10_didt_set_mask(hwmgr, false);
    1008             : 
    1009           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    1010             : 
    1011           0 :         if (PP_CAP(PHM_PlatformCaps_GCEDC)) {
    1012           0 :                 data = 0x00000000;
    1013           0 :                 cgs_write_register(hwmgr->device, mmGC_DIDT_CTRL0, data);
    1014             :         }
    1015             : 
    1016           0 :         if (PP_CAP(PHM_PlatformCaps_PSM))
    1017           0 :                 vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMResetConfig_vega10);
    1018             : 
    1019           0 :         return 0;
    1020             : }
    1021             : 
    1022           0 : static int vega10_enable_se_edc_config(struct pp_hwmgr *hwmgr)
    1023             : {
    1024           0 :         struct amdgpu_device *adev = hwmgr->adev;
    1025             :         int result;
    1026           0 :         uint32_t num_se = 0, count, data;
    1027             : 
    1028           0 :         num_se = adev->gfx.config.max_shader_engines;
    1029             : 
    1030           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    1031             : 
    1032           0 :         mutex_lock(&adev->grbm_idx_mutex);
    1033           0 :         for (count = 0; count < num_se; count++) {
    1034           0 :                 data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
    1035           0 :                 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data);
    1036           0 :                 result = vega10_program_didt_config_registers(hwmgr, SEDiDtWeightConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1037           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEEDCStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1038           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEEDCStallDelayConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1039           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEEDCThresholdConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1040           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEEDCCtrlResetConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1041           0 :                 result |= vega10_program_didt_config_registers(hwmgr, SEEDCCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1042             : 
    1043           0 :                 if (0 != result)
    1044             :                         break;
    1045             :         }
    1046           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, 0xE0000000);
    1047           0 :         mutex_unlock(&adev->grbm_idx_mutex);
    1048             : 
    1049           0 :         vega10_didt_set_mask(hwmgr, true);
    1050             : 
    1051           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    1052             : 
    1053           0 :         return 0;
    1054             : }
    1055             : 
    1056           0 : static int vega10_disable_se_edc_config(struct pp_hwmgr *hwmgr)
    1057             : {
    1058           0 :         struct amdgpu_device *adev = hwmgr->adev;
    1059             : 
    1060           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    1061             : 
    1062           0 :         vega10_didt_set_mask(hwmgr, false);
    1063             : 
    1064           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    1065             : 
    1066           0 :         return 0;
    1067             : }
    1068             : 
    1069           0 : static int vega10_enable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
    1070             : {
    1071           0 :         struct amdgpu_device *adev = hwmgr->adev;
    1072           0 :         int result = 0;
    1073           0 :         uint32_t num_se = 0;
    1074             :         uint32_t count, data;
    1075             : 
    1076           0 :         num_se = adev->gfx.config.max_shader_engines;
    1077             : 
    1078           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    1079             : 
    1080           0 :         vega10_program_gc_didt_config_registers(hwmgr, AvfsPSMResetConfig_vega10);
    1081             : 
    1082           0 :         mutex_lock(&adev->grbm_idx_mutex);
    1083           0 :         for (count = 0; count < num_se; count++) {
    1084           0 :                 data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK | GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK | ( count << GRBM_GFX_INDEX__SE_INDEX__SHIFT);
    1085           0 :                 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data);
    1086           0 :                 result = vega10_program_didt_config_registers(hwmgr, PSMSEEDCStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1087           0 :                 result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCStallDelayConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1088           0 :                 result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCCtrlResetConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1089           0 :                 result |= vega10_program_didt_config_registers(hwmgr, PSMSEEDCCtrlConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1090             : 
    1091           0 :                 if (0 != result)
    1092             :                         break;
    1093             :         }
    1094           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, 0xE0000000);
    1095           0 :         mutex_unlock(&adev->grbm_idx_mutex);
    1096             : 
    1097           0 :         vega10_didt_set_mask(hwmgr, true);
    1098             : 
    1099           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    1100             : 
    1101           0 :         vega10_program_gc_didt_config_registers(hwmgr, PSMGCEDCDroopCtrlConfig_vega10);
    1102             : 
    1103           0 :         if (PP_CAP(PHM_PlatformCaps_GCEDC)) {
    1104           0 :                 vega10_program_gc_didt_config_registers(hwmgr, PSMGCEDCCtrlResetConfig_vega10);
    1105           0 :                 vega10_program_gc_didt_config_registers(hwmgr, PSMGCEDCCtrlConfig_vega10);
    1106             :         }
    1107             : 
    1108           0 :         if (PP_CAP(PHM_PlatformCaps_PSM))
    1109           0 :                 vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMInitConfig_vega10);
    1110             : 
    1111           0 :         return 0;
    1112             : }
    1113             : 
    1114           0 : static int vega10_disable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
    1115             : {
    1116           0 :         struct amdgpu_device *adev = hwmgr->adev;
    1117             :         uint32_t data;
    1118             : 
    1119           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    1120             : 
    1121           0 :         vega10_didt_set_mask(hwmgr, false);
    1122             : 
    1123           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    1124             : 
    1125           0 :         if (PP_CAP(PHM_PlatformCaps_GCEDC)) {
    1126           0 :                 data = 0x00000000;
    1127           0 :                 cgs_write_register(hwmgr->device, mmGC_EDC_CTRL, data);
    1128             :         }
    1129             : 
    1130           0 :         if (PP_CAP(PHM_PlatformCaps_PSM))
    1131           0 :                 vega10_program_gc_didt_config_registers(hwmgr,  AvfsPSMResetConfig_vega10);
    1132             : 
    1133           0 :         return 0;
    1134             : }
    1135             : 
    1136           0 : static int vega10_enable_se_edc_force_stall_config(struct pp_hwmgr *hwmgr)
    1137             : {
    1138           0 :         struct amdgpu_device *adev = hwmgr->adev;
    1139             :         int result;
    1140             : 
    1141           0 :         amdgpu_gfx_rlc_enter_safe_mode(adev);
    1142             : 
    1143           0 :         mutex_lock(&adev->grbm_idx_mutex);
    1144           0 :         WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, 0xE0000000);
    1145           0 :         mutex_unlock(&adev->grbm_idx_mutex);
    1146             : 
    1147           0 :         result = vega10_program_didt_config_registers(hwmgr, SEEDCForceStallPatternConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1148           0 :         result |= vega10_program_didt_config_registers(hwmgr, SEEDCCtrlForceStallConfig_Vega10, VEGA10_CONFIGREG_DIDT);
    1149           0 :         if (0 != result)
    1150             :                 return result;
    1151             : 
    1152           0 :         vega10_didt_set_mask(hwmgr, false);
    1153             : 
    1154           0 :         amdgpu_gfx_rlc_exit_safe_mode(adev);
    1155             : 
    1156           0 :         return 0;
    1157             : }
    1158             : 
    1159           0 : static int vega10_disable_se_edc_force_stall_config(struct pp_hwmgr *hwmgr)
    1160             : {
    1161             :         int result;
    1162             : 
    1163           0 :         result = vega10_disable_se_edc_config(hwmgr);
    1164           0 :         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDtConfig] Pre DIDT disable clock gating failed!", return result);
    1165             : 
    1166             :         return 0;
    1167             : }
    1168             : 
    1169           0 : int vega10_enable_didt_config(struct pp_hwmgr *hwmgr)
    1170             : {
    1171           0 :         int result = 0;
    1172           0 :         struct vega10_hwmgr *data = hwmgr->backend;
    1173             : 
    1174           0 :         if (data->smu_features[GNLD_DIDT].supported) {
    1175             :                 if (data->smu_features[GNLD_DIDT].enabled)
    1176             :                         PP_DBG_LOG("[EnableDiDtConfig] Feature DiDt Already enabled!\n");
    1177             : 
    1178           0 :                 switch (data->registry_data.didt_mode) {
    1179             :                 case 0:
    1180           0 :                         result = vega10_enable_cac_driving_se_didt_config(hwmgr);
    1181           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 0 Failed!", return result);
    1182             :                         break;
    1183             :                 case 2:
    1184           0 :                         result = vega10_enable_psm_gc_didt_config(hwmgr);
    1185           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 2 Failed!", return result);
    1186             :                         break;
    1187             :                 case 3:
    1188           0 :                         result = vega10_enable_se_edc_config(hwmgr);
    1189           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 3 Failed!", return result);
    1190             :                         break;
    1191             :                 case 1:
    1192             :                 case 4:
    1193             :                 case 5:
    1194           0 :                         result = vega10_enable_psm_gc_edc_config(hwmgr);
    1195           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 5 Failed!", return result);
    1196             :                         break;
    1197             :                 case 6:
    1198           0 :                         result = vega10_enable_se_edc_force_stall_config(hwmgr);
    1199           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDt] Attempt to enable DiDt Mode 6 Failed!", return result);
    1200             :                         break;
    1201             :                 default:
    1202             :                         result = -EINVAL;
    1203             :                         break;
    1204             :                 }
    1205             : 
    1206           0 :                 if (0 == result) {
    1207           0 :                         result = vega10_enable_smc_features(hwmgr, true, data->smu_features[GNLD_DIDT].smu_feature_bitmap);
    1208           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[EnableDiDtConfig] Attempt to Enable DiDt feature Failed!", return result);
    1209           0 :                         data->smu_features[GNLD_DIDT].enabled = true;
    1210             :                 }
    1211             :         }
    1212             : 
    1213             :         return result;
    1214             : }
    1215             : 
    1216           0 : int vega10_disable_didt_config(struct pp_hwmgr *hwmgr)
    1217             : {
    1218           0 :         int result = 0;
    1219           0 :         struct vega10_hwmgr *data = hwmgr->backend;
    1220             : 
    1221           0 :         if (data->smu_features[GNLD_DIDT].supported) {
    1222             :                 if (!data->smu_features[GNLD_DIDT].enabled)
    1223             :                         PP_DBG_LOG("[DisableDiDtConfig] Feature DiDt Already Disabled!\n");
    1224             : 
    1225           0 :                 switch (data->registry_data.didt_mode) {
    1226             :                 case 0:
    1227           0 :                         result = vega10_disable_cac_driving_se_didt_config(hwmgr);
    1228           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 0 Failed!", return result);
    1229             :                         break;
    1230             :                 case 2:
    1231           0 :                         result = vega10_disable_psm_gc_didt_config(hwmgr);
    1232           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 2 Failed!", return result);
    1233             :                         break;
    1234             :                 case 3:
    1235           0 :                         result = vega10_disable_se_edc_config(hwmgr);
    1236           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 3 Failed!", return result);
    1237             :                         break;
    1238             :                 case 1:
    1239             :                 case 4:
    1240             :                 case 5:
    1241           0 :                         result = vega10_disable_psm_gc_edc_config(hwmgr);
    1242           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 5 Failed!", return result);
    1243             :                         break;
    1244             :                 case 6:
    1245           0 :                         result = vega10_disable_se_edc_force_stall_config(hwmgr);
    1246           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDt] Attempt to disable DiDt Mode 6 Failed!", return result);
    1247             :                         break;
    1248             :                 default:
    1249             :                         result = -EINVAL;
    1250             :                         break;
    1251             :                 }
    1252             : 
    1253           0 :                 if (0 == result) {
    1254           0 :                         result = vega10_enable_smc_features(hwmgr, false, data->smu_features[GNLD_DIDT].smu_feature_bitmap);
    1255           0 :                         PP_ASSERT_WITH_CODE((0 == result), "[DisableDiDtConfig] Attempt to Disable DiDt feature Failed!", return result);
    1256           0 :                         data->smu_features[GNLD_DIDT].enabled = false;
    1257             :                 }
    1258             :         }
    1259             : 
    1260             :         return result;
    1261             : }
    1262             : 
    1263           0 : void vega10_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
    1264             : {
    1265           0 :         struct vega10_hwmgr *data = hwmgr->backend;
    1266           0 :         struct phm_ppt_v2_information *table_info =
    1267             :                         (struct phm_ppt_v2_information *)(hwmgr->pptable);
    1268           0 :         struct phm_tdp_table *tdp_table = table_info->tdp_table;
    1269           0 :         PPTable_t *table = &(data->smc_state_table.pp_table);
    1270             : 
    1271           0 :         table->SocketPowerLimit = cpu_to_le16(
    1272             :                         tdp_table->usMaximumPowerDeliveryLimit);
    1273           0 :         table->TdcLimit = cpu_to_le16(tdp_table->usTDC);
    1274           0 :         table->EdcLimit = cpu_to_le16(tdp_table->usEDCLimit);
    1275           0 :         table->TedgeLimit = cpu_to_le16(tdp_table->usTemperatureLimitTedge);
    1276           0 :         table->ThotspotLimit = cpu_to_le16(tdp_table->usTemperatureLimitHotspot);
    1277           0 :         table->ThbmLimit = cpu_to_le16(tdp_table->usTemperatureLimitHBM);
    1278           0 :         table->Tvr_socLimit = cpu_to_le16(tdp_table->usTemperatureLimitVrVddc);
    1279           0 :         table->Tvr_memLimit = cpu_to_le16(tdp_table->usTemperatureLimitVrMvdd);
    1280           0 :         table->Tliquid1Limit = cpu_to_le16(tdp_table->usTemperatureLimitLiquid1);
    1281           0 :         table->Tliquid2Limit = cpu_to_le16(tdp_table->usTemperatureLimitLiquid2);
    1282           0 :         table->TplxLimit = cpu_to_le16(tdp_table->usTemperatureLimitPlx);
    1283           0 :         table->LoadLineResistance =
    1284           0 :                         hwmgr->platform_descriptor.LoadLineSlope * 256;
    1285           0 :         table->FitLimit = 0; /* Not used for Vega10 */
    1286             : 
    1287           0 :         table->Liquid1_I2C_address = tdp_table->ucLiquid1_I2C_address;
    1288           0 :         table->Liquid2_I2C_address = tdp_table->ucLiquid2_I2C_address;
    1289           0 :         table->Vr_I2C_address = tdp_table->ucVr_I2C_address;
    1290           0 :         table->Plx_I2C_address = tdp_table->ucPlx_I2C_address;
    1291             : 
    1292           0 :         table->Liquid_I2C_LineSCL = tdp_table->ucLiquid_I2C_Line;
    1293           0 :         table->Liquid_I2C_LineSDA = tdp_table->ucLiquid_I2C_LineSDA;
    1294             : 
    1295           0 :         table->Vr_I2C_LineSCL = tdp_table->ucVr_I2C_Line;
    1296           0 :         table->Vr_I2C_LineSDA = tdp_table->ucVr_I2C_LineSDA;
    1297             : 
    1298           0 :         table->Plx_I2C_LineSCL = tdp_table->ucPlx_I2C_Line;
    1299           0 :         table->Plx_I2C_LineSDA = tdp_table->ucPlx_I2C_LineSDA;
    1300           0 : }
    1301             : 
    1302           0 : int vega10_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n)
    1303             : {
    1304           0 :         struct vega10_hwmgr *data = hwmgr->backend;
    1305             : 
    1306           0 :         if (data->registry_data.enable_pkg_pwr_tracking_feature)
    1307           0 :                 smum_send_msg_to_smc_with_parameter(hwmgr,
    1308             :                                 PPSMC_MSG_SetPptLimit, n,
    1309             :                                 NULL);
    1310             : 
    1311           0 :         return 0;
    1312             : }
    1313             : 
    1314           0 : int vega10_enable_power_containment(struct pp_hwmgr *hwmgr)
    1315             : {
    1316           0 :         struct vega10_hwmgr *data = hwmgr->backend;
    1317           0 :         struct phm_ppt_v2_information *table_info =
    1318             :                         (struct phm_ppt_v2_information *)(hwmgr->pptable);
    1319           0 :         struct phm_tdp_table *tdp_table = table_info->tdp_table;
    1320           0 :         int result = 0;
    1321             : 
    1322           0 :         hwmgr->default_power_limit = hwmgr->power_limit =
    1323           0 :                         (uint32_t)(tdp_table->usMaximumPowerDeliveryLimit);
    1324             : 
    1325           0 :         if (!hwmgr->not_vf)
    1326             :                 return 0;
    1327             : 
    1328           0 :         if (PP_CAP(PHM_PlatformCaps_PowerContainment)) {
    1329           0 :                 if (data->smu_features[GNLD_PPT].supported)
    1330           0 :                         PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
    1331             :                                         true, data->smu_features[GNLD_PPT].smu_feature_bitmap),
    1332             :                                         "Attempt to enable PPT feature Failed!",
    1333             :                                         data->smu_features[GNLD_PPT].supported = false);
    1334             : 
    1335           0 :                 if (data->smu_features[GNLD_TDC].supported)
    1336           0 :                         PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
    1337             :                                         true, data->smu_features[GNLD_TDC].smu_feature_bitmap),
    1338             :                                         "Attempt to enable PPT feature Failed!",
    1339             :                                         data->smu_features[GNLD_TDC].supported = false);
    1340             : 
    1341           0 :                 result = vega10_set_power_limit(hwmgr, hwmgr->power_limit);
    1342             :                 PP_ASSERT_WITH_CODE(!result,
    1343             :                                 "Failed to set Default Power Limit in SMC!",
    1344             :                                 return result);
    1345             :         }
    1346             : 
    1347             :         return result;
    1348             : }
    1349             : 
    1350           0 : int vega10_disable_power_containment(struct pp_hwmgr *hwmgr)
    1351             : {
    1352           0 :         struct vega10_hwmgr *data = hwmgr->backend;
    1353             : 
    1354           0 :         if (PP_CAP(PHM_PlatformCaps_PowerContainment)) {
    1355           0 :                 if (data->smu_features[GNLD_PPT].supported)
    1356           0 :                         PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
    1357             :                                         false, data->smu_features[GNLD_PPT].smu_feature_bitmap),
    1358             :                                         "Attempt to disable PPT feature Failed!",
    1359             :                                         data->smu_features[GNLD_PPT].supported = false);
    1360             : 
    1361           0 :                 if (data->smu_features[GNLD_TDC].supported)
    1362           0 :                         PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
    1363             :                                         false, data->smu_features[GNLD_TDC].smu_feature_bitmap),
    1364             :                                         "Attempt to disable PPT feature Failed!",
    1365             :                                         data->smu_features[GNLD_TDC].supported = false);
    1366             :         }
    1367             : 
    1368           0 :         return 0;
    1369             : }
    1370             : 
    1371             : static void vega10_set_overdrive_target_percentage(struct pp_hwmgr *hwmgr,
    1372             :                 uint32_t adjust_percent)
    1373             : {
    1374           0 :         smum_send_msg_to_smc_with_parameter(hwmgr,
    1375             :                         PPSMC_MSG_OverDriveSetPercentage, adjust_percent,
    1376             :                         NULL);
    1377             : }
    1378             : 
    1379           0 : int vega10_power_control_set_level(struct pp_hwmgr *hwmgr)
    1380             : {
    1381             :         int adjust_percent;
    1382             : 
    1383           0 :         if (PP_CAP(PHM_PlatformCaps_PowerContainment)) {
    1384           0 :                 adjust_percent =
    1385           0 :                                 hwmgr->platform_descriptor.TDPAdjustmentPolarity ?
    1386           0 :                                 hwmgr->platform_descriptor.TDPAdjustment :
    1387           0 :                                 (-1 * hwmgr->platform_descriptor.TDPAdjustment);
    1388           0 :                 vega10_set_overdrive_target_percentage(hwmgr,
    1389             :                                 (uint32_t)adjust_percent);
    1390             :         }
    1391           0 :         return 0;
    1392             : }

Generated by: LCOV version 1.14