Home | History | Annotate | Line # | Download | only in inc
      1  1.1  riastrad /*	$NetBSD: smu75.h,v 1.2 2021/12/18 23:45:26 riastradh Exp $	*/
      2  1.1  riastrad 
      3  1.1  riastrad /*
      4  1.1  riastrad  * Copyright 2017 Advanced Micro Devices, Inc.
      5  1.1  riastrad  *
      6  1.1  riastrad  * Permission is hereby granted, free of charge, to any person obtaining a
      7  1.1  riastrad  * copy of this software and associated documentation files (the "Software"),
      8  1.1  riastrad  * to deal in the Software without restriction, including without limitation
      9  1.1  riastrad  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     10  1.1  riastrad  * and/or sell copies of the Software, and to permit persons to whom the
     11  1.1  riastrad  * Software is furnished to do so, subject to the following conditions:
     12  1.1  riastrad  *
     13  1.1  riastrad  * The above copyright notice and this permission notice shall be included in
     14  1.1  riastrad  * all copies or substantial portions of the Software.
     15  1.1  riastrad  *
     16  1.1  riastrad  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17  1.1  riastrad  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18  1.1  riastrad  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     19  1.1  riastrad  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
     20  1.1  riastrad  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     21  1.1  riastrad  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     22  1.1  riastrad  * OTHER DEALINGS IN THE SOFTWARE.
     23  1.1  riastrad  *
     24  1.1  riastrad  */
     25  1.1  riastrad #ifndef SMU75_H
     26  1.1  riastrad #define SMU75_H
     27  1.1  riastrad 
     28  1.1  riastrad #pragma pack(push, 1)
     29  1.1  riastrad 
     30  1.1  riastrad typedef struct {
     31  1.1  riastrad 	uint32_t high;
     32  1.1  riastrad 	uint32_t low;
     33  1.1  riastrad } data_64_t;
     34  1.1  riastrad 
     35  1.1  riastrad typedef struct {
     36  1.1  riastrad 	data_64_t high;
     37  1.1  riastrad 	data_64_t low;
     38  1.1  riastrad } data_128_t;
     39  1.1  riastrad 
     40  1.1  riastrad #define SMU__DGPU_ONLY
     41  1.1  riastrad 
     42  1.1  riastrad #define SMU__NUM_SCLK_DPM_STATE  8
     43  1.1  riastrad #define SMU__NUM_MCLK_DPM_LEVELS 4
     44  1.1  riastrad #define SMU__NUM_LCLK_DPM_LEVELS 8
     45  1.1  riastrad #define SMU__NUM_PCIE_DPM_LEVELS 8
     46  1.1  riastrad 
     47  1.1  riastrad #define SMU7_CONTEXT_ID_SMC        1
     48  1.1  riastrad #define SMU7_CONTEXT_ID_VBIOS      2
     49  1.1  riastrad 
     50  1.1  riastrad #define SMU75_MAX_LEVELS_VDDC            16
     51  1.1  riastrad #define SMU75_MAX_LEVELS_VDDGFX          16
     52  1.1  riastrad #define SMU75_MAX_LEVELS_VDDCI           8
     53  1.1  riastrad #define SMU75_MAX_LEVELS_MVDD            4
     54  1.1  riastrad 
     55  1.1  riastrad #define SMU_MAX_SMIO_LEVELS              4
     56  1.1  riastrad 
     57  1.1  riastrad #define SMU75_MAX_LEVELS_GRAPHICS        SMU__NUM_SCLK_DPM_STATE
     58  1.1  riastrad #define SMU75_MAX_LEVELS_MEMORY          SMU__NUM_MCLK_DPM_LEVELS
     59  1.1  riastrad #define SMU75_MAX_LEVELS_GIO             SMU__NUM_LCLK_DPM_LEVELS
     60  1.1  riastrad #define SMU75_MAX_LEVELS_LINK            SMU__NUM_PCIE_DPM_LEVELS
     61  1.1  riastrad #define SMU75_MAX_LEVELS_UVD             8
     62  1.1  riastrad #define SMU75_MAX_LEVELS_VCE             8
     63  1.1  riastrad #define SMU75_MAX_LEVELS_ACP             8
     64  1.1  riastrad #define SMU75_MAX_LEVELS_SAMU            8
     65  1.1  riastrad #define SMU75_MAX_ENTRIES_SMIO           32
     66  1.1  riastrad 
     67  1.1  riastrad #define DPM_NO_LIMIT 0
     68  1.1  riastrad #define DPM_NO_UP 1
     69  1.1  riastrad #define DPM_GO_DOWN 2
     70  1.1  riastrad #define DPM_GO_UP 3
     71  1.1  riastrad 
     72  1.1  riastrad #define SMU7_FIRST_DPM_GRAPHICS_LEVEL    0
     73  1.1  riastrad #define SMU7_FIRST_DPM_MEMORY_LEVEL      0
     74  1.1  riastrad 
     75  1.1  riastrad #define GPIO_CLAMP_MODE_VRHOT      1
     76  1.1  riastrad #define GPIO_CLAMP_MODE_THERM      2
     77  1.1  riastrad #define GPIO_CLAMP_MODE_DC         4
     78  1.1  riastrad 
     79  1.1  riastrad #define SCRATCH_B_TARG_PCIE_INDEX_SHIFT 0
     80  1.1  riastrad #define SCRATCH_B_TARG_PCIE_INDEX_MASK  (0x7<<SCRATCH_B_TARG_PCIE_INDEX_SHIFT)
     81  1.1  riastrad #define SCRATCH_B_CURR_PCIE_INDEX_SHIFT 3
     82  1.1  riastrad #define SCRATCH_B_CURR_PCIE_INDEX_MASK  (0x7<<SCRATCH_B_CURR_PCIE_INDEX_SHIFT)
     83  1.1  riastrad #define SCRATCH_B_TARG_UVD_INDEX_SHIFT  6
     84  1.1  riastrad #define SCRATCH_B_TARG_UVD_INDEX_MASK   (0x7<<SCRATCH_B_TARG_UVD_INDEX_SHIFT)
     85  1.1  riastrad #define SCRATCH_B_CURR_UVD_INDEX_SHIFT  9
     86  1.1  riastrad #define SCRATCH_B_CURR_UVD_INDEX_MASK   (0x7<<SCRATCH_B_CURR_UVD_INDEX_SHIFT)
     87  1.1  riastrad #define SCRATCH_B_TARG_VCE_INDEX_SHIFT  12
     88  1.1  riastrad #define SCRATCH_B_TARG_VCE_INDEX_MASK   (0x7<<SCRATCH_B_TARG_VCE_INDEX_SHIFT)
     89  1.1  riastrad #define SCRATCH_B_CURR_VCE_INDEX_SHIFT  15
     90  1.1  riastrad #define SCRATCH_B_CURR_VCE_INDEX_MASK   (0x7<<SCRATCH_B_CURR_VCE_INDEX_SHIFT)
     91  1.1  riastrad #define SCRATCH_B_TARG_ACP_INDEX_SHIFT  18
     92  1.1  riastrad #define SCRATCH_B_TARG_ACP_INDEX_MASK   (0x7<<SCRATCH_B_TARG_ACP_INDEX_SHIFT)
     93  1.1  riastrad #define SCRATCH_B_CURR_ACP_INDEX_SHIFT  21
     94  1.1  riastrad #define SCRATCH_B_CURR_ACP_INDEX_MASK   (0x7<<SCRATCH_B_CURR_ACP_INDEX_SHIFT)
     95  1.1  riastrad #define SCRATCH_B_TARG_SAMU_INDEX_SHIFT 24
     96  1.1  riastrad #define SCRATCH_B_TARG_SAMU_INDEX_MASK  (0x7<<SCRATCH_B_TARG_SAMU_INDEX_SHIFT)
     97  1.1  riastrad #define SCRATCH_B_CURR_SAMU_INDEX_SHIFT 27
     98  1.1  riastrad #define SCRATCH_B_CURR_SAMU_INDEX_MASK  (0x7<<SCRATCH_B_CURR_SAMU_INDEX_SHIFT)
     99  1.1  riastrad 
    100  1.1  riastrad /* Virtualization Defines */
    101  1.1  riastrad #define CG_XDMA_MASK  0x1
    102  1.1  riastrad #define CG_XDMA_SHIFT 0
    103  1.1  riastrad #define CG_UVD_MASK   0x2
    104  1.1  riastrad #define CG_UVD_SHIFT  1
    105  1.1  riastrad #define CG_VCE_MASK   0x4
    106  1.1  riastrad #define CG_VCE_SHIFT  2
    107  1.1  riastrad #define CG_SAMU_MASK  0x8
    108  1.1  riastrad #define CG_SAMU_SHIFT 3
    109  1.1  riastrad #define CG_GFX_MASK   0x10
    110  1.1  riastrad #define CG_GFX_SHIFT  4
    111  1.1  riastrad #define CG_SDMA_MASK  0x20
    112  1.1  riastrad #define CG_SDMA_SHIFT 5
    113  1.1  riastrad #define CG_HDP_MASK   0x40
    114  1.1  riastrad #define CG_HDP_SHIFT  6
    115  1.1  riastrad #define CG_MC_MASK    0x80
    116  1.1  riastrad #define CG_MC_SHIFT   7
    117  1.1  riastrad #define CG_DRM_MASK   0x100
    118  1.1  riastrad #define CG_DRM_SHIFT  8
    119  1.1  riastrad #define CG_ROM_MASK   0x200
    120  1.1  riastrad #define CG_ROM_SHIFT  9
    121  1.1  riastrad #define CG_BIF_MASK   0x400
    122  1.1  riastrad #define CG_BIF_SHIFT  10
    123  1.1  riastrad 
    124  1.1  riastrad #if defined SMU__DGPU_ONLY
    125  1.1  riastrad #define SMU75_DTE_ITERATIONS 5
    126  1.1  riastrad #define SMU75_DTE_SOURCES 3
    127  1.1  riastrad #define SMU75_DTE_SINKS 1
    128  1.1  riastrad #define SMU75_NUM_CPU_TES 0
    129  1.1  riastrad #define SMU75_NUM_GPU_TES 1
    130  1.1  riastrad #define SMU75_NUM_NON_TES 2
    131  1.1  riastrad #define SMU75_DTE_FAN_SCALAR_MIN 0x100
    132  1.1  riastrad #define SMU75_DTE_FAN_SCALAR_MAX 0x166
    133  1.1  riastrad #define SMU75_DTE_FAN_TEMP_MAX 93
    134  1.1  riastrad #define SMU75_DTE_FAN_TEMP_MIN 83
    135  1.1  riastrad #endif
    136  1.1  riastrad #define SMU75_THERMAL_INPUT_LOOP_COUNT 2
    137  1.1  riastrad #define SMU75_THERMAL_CLAMP_MODE_COUNT 2
    138  1.1  riastrad 
    139  1.1  riastrad #define EXP_M1_1  93
    140  1.1  riastrad #define EXP_M2_1  195759
    141  1.1  riastrad #define EXP_B_1   111176531
    142  1.1  riastrad 
    143  1.1  riastrad #define EXP_M1_2  67
    144  1.1  riastrad #define EXP_M2_2  153720
    145  1.1  riastrad #define EXP_B_2   94415767
    146  1.1  riastrad 
    147  1.1  riastrad #define EXP_M1_3  48
    148  1.1  riastrad #define EXP_M2_3  119796
    149  1.1  riastrad #define EXP_B_3   79195279
    150  1.1  riastrad 
    151  1.1  riastrad #define EXP_M1_4  550
    152  1.1  riastrad #define EXP_M2_4  1484190
    153  1.1  riastrad #define EXP_B_4   1051432828
    154  1.1  riastrad 
    155  1.1  riastrad #define EXP_M1_5  394
    156  1.1  riastrad #define EXP_M2_5  1143049
    157  1.1  riastrad #define EXP_B_5   864288432
    158  1.1  riastrad 
    159  1.1  riastrad struct SMU7_HystController_Data {
    160  1.1  riastrad 	uint16_t waterfall_up;
    161  1.1  riastrad 	uint16_t waterfall_down;
    162  1.1  riastrad 	uint16_t waterfall_limit;
    163  1.1  riastrad 	uint16_t release_cnt;
    164  1.1  riastrad 	uint16_t release_limit;
    165  1.1  riastrad 	uint16_t spare;
    166  1.1  riastrad };
    167  1.1  riastrad 
    168  1.1  riastrad typedef struct SMU7_HystController_Data SMU7_HystController_Data;
    169  1.1  riastrad 
    170  1.1  riastrad struct SMU75_PIDController {
    171  1.1  riastrad 	uint32_t Ki;
    172  1.1  riastrad 	int32_t LFWindupUpperLim;
    173  1.1  riastrad 	int32_t LFWindupLowerLim;
    174  1.1  riastrad 	uint32_t StatePrecision;
    175  1.1  riastrad 	uint32_t LfPrecision;
    176  1.1  riastrad 	uint32_t LfOffset;
    177  1.1  riastrad 	uint32_t MaxState;
    178  1.1  riastrad 	uint32_t MaxLfFraction;
    179  1.1  riastrad 	uint32_t StateShift;
    180  1.1  riastrad };
    181  1.1  riastrad 
    182  1.1  riastrad typedef struct SMU75_PIDController SMU75_PIDController;
    183  1.1  riastrad 
    184  1.1  riastrad struct SMU7_LocalDpmScoreboard {
    185  1.1  riastrad 	uint32_t PercentageBusy;
    186  1.1  riastrad 
    187  1.1  riastrad 	int32_t  PIDError;
    188  1.1  riastrad 	int32_t  PIDIntegral;
    189  1.1  riastrad 	int32_t  PIDOutput;
    190  1.1  riastrad 
    191  1.1  riastrad 	uint32_t SigmaDeltaAccum;
    192  1.1  riastrad 	uint32_t SigmaDeltaOutput;
    193  1.1  riastrad 	uint32_t SigmaDeltaLevel;
    194  1.1  riastrad 
    195  1.1  riastrad 	uint32_t UtilizationSetpoint;
    196  1.1  riastrad 
    197  1.1  riastrad 	uint8_t  TdpClampMode;
    198  1.1  riastrad 	uint8_t  TdcClampMode;
    199  1.1  riastrad 	uint8_t  ThermClampMode;
    200  1.1  riastrad 	uint8_t  VoltageBusy;
    201  1.1  riastrad 
    202  1.1  riastrad 	int8_t   CurrLevel;
    203  1.1  riastrad 	int8_t   TargLevel;
    204  1.1  riastrad 	uint8_t  LevelChangeInProgress;
    205  1.1  riastrad 	uint8_t  UpHyst;
    206  1.1  riastrad 
    207  1.1  riastrad 	uint8_t  DownHyst;
    208  1.1  riastrad 	uint8_t  VoltageDownHyst;
    209  1.1  riastrad 	uint8_t  DpmEnable;
    210  1.1  riastrad 	uint8_t  DpmRunning;
    211  1.1  riastrad 
    212  1.1  riastrad 	uint8_t  DpmForce;
    213  1.1  riastrad 	uint8_t  DpmForceLevel;
    214  1.1  riastrad 	uint8_t  DisplayWatermark;
    215  1.1  riastrad 	uint8_t  McArbIndex;
    216  1.1  riastrad 
    217  1.1  riastrad 	uint32_t MinimumPerfSclk;
    218  1.1  riastrad 
    219  1.1  riastrad 	uint8_t  AcpiReq;
    220  1.1  riastrad 	uint8_t  AcpiAck;
    221  1.1  riastrad 	uint8_t  GfxClkSlow;
    222  1.1  riastrad 	uint8_t  GpioClampMode;
    223  1.1  riastrad 
    224  1.1  riastrad 	uint8_t  EnableModeSwitchRLCNotification;
    225  1.1  riastrad 	uint8_t  EnabledLevelsChange;
    226  1.1  riastrad 	uint8_t  DteClampMode;
    227  1.1  riastrad 	uint8_t  FpsClampMode;
    228  1.1  riastrad 
    229  1.1  riastrad 	uint16_t LevelResidencyCounters [SMU75_MAX_LEVELS_GRAPHICS];
    230  1.1  riastrad 	uint16_t LevelSwitchCounters [SMU75_MAX_LEVELS_GRAPHICS];
    231  1.1  riastrad 
    232  1.1  riastrad 	void     (*TargetStateCalculator)(uint8_t);
    233  1.1  riastrad 	void     (*SavedTargetStateCalculator)(uint8_t);
    234  1.1  riastrad 
    235  1.1  riastrad 	uint16_t AutoDpmInterval;
    236  1.1  riastrad 	uint16_t AutoDpmRange;
    237  1.1  riastrad 
    238  1.1  riastrad 	uint8_t  FpsEnabled;
    239  1.1  riastrad 	uint8_t  MaxPerfLevel;
    240  1.1  riastrad 	uint8_t  AllowLowClkInterruptToHost;
    241  1.1  riastrad 	uint8_t  FpsRunning;
    242  1.1  riastrad 
    243  1.1  riastrad 	uint32_t MaxAllowedFrequency;
    244  1.1  riastrad 
    245  1.1  riastrad 	uint32_t FilteredSclkFrequency;
    246  1.1  riastrad 	uint32_t LastSclkFrequency;
    247  1.1  riastrad 	uint32_t FilteredSclkFrequencyCnt;
    248  1.1  riastrad 
    249  1.1  riastrad 	uint8_t MinPerfLevel;
    250  1.1  riastrad #ifdef SMU__FIRMWARE_SCKS_PRESENT__1
    251  1.1  riastrad 	uint8_t ScksClampMode;
    252  1.1  riastrad 	uint8_t padding[2];
    253  1.1  riastrad #else
    254  1.1  riastrad 	uint8_t padding[3];
    255  1.1  riastrad #endif
    256  1.1  riastrad 
    257  1.1  riastrad 	uint16_t FpsAlpha;
    258  1.1  riastrad 	uint16_t DeltaTime;
    259  1.1  riastrad 	uint32_t CurrentFps;
    260  1.1  riastrad 	uint32_t FilteredFps;
    261  1.1  riastrad 	uint32_t FrameCount;
    262  1.1  riastrad 	uint32_t FrameCountLast;
    263  1.1  riastrad 	uint16_t FpsTargetScalar;
    264  1.1  riastrad 	uint16_t FpsWaterfallLimitScalar;
    265  1.1  riastrad 	uint16_t FpsAlphaScalar;
    266  1.1  riastrad 	uint16_t spare8;
    267  1.1  riastrad 	SMU7_HystController_Data HystControllerData;
    268  1.1  riastrad };
    269  1.1  riastrad 
    270  1.1  riastrad typedef struct SMU7_LocalDpmScoreboard SMU7_LocalDpmScoreboard;
    271  1.1  riastrad 
    272  1.1  riastrad #define SMU7_MAX_VOLTAGE_CLIENTS 12
    273  1.1  riastrad 
    274  1.1  riastrad typedef uint8_t (*VoltageChangeHandler_t)(uint16_t, uint8_t);
    275  1.1  riastrad 
    276  1.1  riastrad #define VDDC_MASK    0x00007FFF
    277  1.1  riastrad #define VDDC_SHIFT   0
    278  1.1  riastrad #define VDDCI_MASK   0x3FFF8000
    279  1.1  riastrad #define VDDCI_SHIFT  15
    280  1.1  riastrad #define PHASES_MASK  0xC0000000
    281  1.1  riastrad #define PHASES_SHIFT 30
    282  1.1  riastrad 
    283  1.1  riastrad typedef uint32_t SMU_VoltageLevel;
    284  1.1  riastrad 
    285  1.1  riastrad struct SMU7_VoltageScoreboard {
    286  1.1  riastrad 	SMU_VoltageLevel TargetVoltage;
    287  1.1  riastrad 	uint16_t MaxVid;
    288  1.1  riastrad 	uint8_t  HighestVidOffset;
    289  1.1  riastrad 	uint8_t  CurrentVidOffset;
    290  1.1  riastrad 
    291  1.1  riastrad 	uint16_t CurrentVddc;
    292  1.1  riastrad 	uint16_t CurrentVddci;
    293  1.1  riastrad 
    294  1.1  riastrad 	uint8_t  ControllerBusy;
    295  1.1  riastrad 	uint8_t  CurrentVid;
    296  1.1  riastrad 	uint8_t  CurrentVddciVid;
    297  1.1  riastrad 	uint8_t  padding;
    298  1.1  riastrad 
    299  1.1  riastrad 	SMU_VoltageLevel RequestedVoltage[SMU7_MAX_VOLTAGE_CLIENTS];
    300  1.1  riastrad 	SMU_VoltageLevel TargetVoltageState;
    301  1.1  riastrad 	uint8_t  EnabledRequest[SMU7_MAX_VOLTAGE_CLIENTS];
    302  1.1  riastrad 
    303  1.1  riastrad 	uint8_t  padding2;
    304  1.1  riastrad 	uint8_t  padding3;
    305  1.1  riastrad 	uint8_t  ControllerEnable;
    306  1.1  riastrad 	uint8_t  ControllerRunning;
    307  1.1  riastrad 	uint16_t CurrentStdVoltageHiSidd;
    308  1.1  riastrad 	uint16_t CurrentStdVoltageLoSidd;
    309  1.1  riastrad 	uint8_t  OverrideVoltage;
    310  1.1  riastrad 	uint8_t  padding4;
    311  1.1  riastrad 	uint8_t  padding5;
    312  1.1  riastrad 	uint8_t  CurrentPhases;
    313  1.1  riastrad 
    314  1.1  riastrad 	VoltageChangeHandler_t ChangeVddc;
    315  1.1  riastrad 	VoltageChangeHandler_t ChangeVddci;
    316  1.1  riastrad 	VoltageChangeHandler_t ChangePhase;
    317  1.1  riastrad 	VoltageChangeHandler_t ChangeMvdd;
    318  1.1  riastrad 
    319  1.1  riastrad 	VoltageChangeHandler_t functionLinks[6];
    320  1.1  riastrad 
    321  1.1  riastrad 	uint16_t * VddcFollower1;
    322  1.1  riastrad 	int16_t  Driver_OD_RequestedVidOffset1;
    323  1.1  riastrad 	int16_t  Driver_OD_RequestedVidOffset2;
    324  1.1  riastrad };
    325  1.1  riastrad 
    326  1.1  riastrad typedef struct SMU7_VoltageScoreboard SMU7_VoltageScoreboard;
    327  1.1  riastrad 
    328  1.1  riastrad #define SMU7_MAX_PCIE_LINK_SPEEDS 3
    329  1.1  riastrad 
    330  1.1  riastrad struct SMU7_PCIeLinkSpeedScoreboard {
    331  1.1  riastrad 	uint8_t     DpmEnable;
    332  1.1  riastrad 	uint8_t     DpmRunning;
    333  1.1  riastrad 	uint8_t     DpmForce;
    334  1.1  riastrad 	uint8_t     DpmForceLevel;
    335  1.1  riastrad 
    336  1.1  riastrad 	uint8_t     CurrentLinkSpeed;
    337  1.1  riastrad 	uint8_t     EnabledLevelsChange;
    338  1.1  riastrad 	uint16_t    AutoDpmInterval;
    339  1.1  riastrad 
    340  1.1  riastrad 	uint16_t    AutoDpmRange;
    341  1.1  riastrad 	uint16_t    AutoDpmCount;
    342  1.1  riastrad 
    343  1.1  riastrad 	uint8_t     DpmMode;
    344  1.1  riastrad 	uint8_t     AcpiReq;
    345  1.1  riastrad 	uint8_t     AcpiAck;
    346  1.1  riastrad 	uint8_t     CurrentLinkLevel;
    347  1.1  riastrad };
    348  1.1  riastrad 
    349  1.1  riastrad typedef struct SMU7_PCIeLinkSpeedScoreboard SMU7_PCIeLinkSpeedScoreboard;
    350  1.1  riastrad 
    351  1.1  riastrad #define SMU7_LKGE_LUT_NUM_OF_TEMP_ENTRIES 16
    352  1.1  riastrad #define SMU7_LKGE_LUT_NUM_OF_VOLT_ENTRIES 16
    353  1.1  riastrad 
    354  1.1  riastrad #define SMU7_SCALE_I  7
    355  1.1  riastrad #define SMU7_SCALE_R 12
    356  1.1  riastrad 
    357  1.1  riastrad struct SMU7_PowerScoreboard {
    358  1.1  riastrad 	uint32_t GpuPower;
    359  1.1  riastrad 
    360  1.1  riastrad 	uint32_t VddcPower;
    361  1.1  riastrad 	uint32_t VddcVoltage;
    362  1.1  riastrad 	uint32_t VddcCurrent;
    363  1.1  riastrad 
    364  1.1  riastrad 	uint32_t VddciPower;
    365  1.1  riastrad 	uint32_t VddciVoltage;
    366  1.1  riastrad 	uint32_t VddciCurrent;
    367  1.1  riastrad 
    368  1.1  riastrad 	uint32_t RocPower;
    369  1.1  riastrad 
    370  1.1  riastrad 	uint16_t Telemetry_1_slope;
    371  1.1  riastrad 	uint16_t Telemetry_2_slope;
    372  1.1  riastrad 	int32_t  Telemetry_1_offset;
    373  1.1  riastrad 	int32_t  Telemetry_2_offset;
    374  1.1  riastrad 
    375  1.1  riastrad 	uint8_t MCLK_patch_flag;
    376  1.1  riastrad 	uint8_t reserved[3];
    377  1.1  riastrad };
    378  1.1  riastrad 
    379  1.1  riastrad typedef struct SMU7_PowerScoreboard SMU7_PowerScoreboard;
    380  1.1  riastrad 
    381  1.1  riastrad #define SMU7_SCLK_DPM_CONFIG_MASK                        0x01
    382  1.1  riastrad #define SMU7_VOLTAGE_CONTROLLER_CONFIG_MASK              0x02
    383  1.1  riastrad #define SMU7_THERMAL_CONTROLLER_CONFIG_MASK              0x04
    384  1.1  riastrad #define SMU7_MCLK_DPM_CONFIG_MASK                        0x08
    385  1.1  riastrad #define SMU7_UVD_DPM_CONFIG_MASK                         0x10
    386  1.1  riastrad #define SMU7_VCE_DPM_CONFIG_MASK                         0x20
    387  1.1  riastrad #define SMU7_ACP_DPM_CONFIG_MASK                         0x40
    388  1.1  riastrad #define SMU7_SAMU_DPM_CONFIG_MASK                        0x80
    389  1.1  riastrad #define SMU7_PCIEGEN_DPM_CONFIG_MASK                    0x100
    390  1.1  riastrad 
    391  1.1  riastrad #define SMU7_ACP_MCLK_HANDSHAKE_DISABLE                  0x00000001
    392  1.1  riastrad #define SMU7_ACP_SCLK_HANDSHAKE_DISABLE                  0x00000002
    393  1.1  riastrad #define SMU7_UVD_MCLK_HANDSHAKE_DISABLE                  0x00000100
    394  1.1  riastrad #define SMU7_UVD_SCLK_HANDSHAKE_DISABLE                  0x00000200
    395  1.1  riastrad #define SMU7_VCE_MCLK_HANDSHAKE_DISABLE                  0x00010000
    396  1.1  riastrad #define SMU7_VCE_SCLK_HANDSHAKE_DISABLE                  0x00020000
    397  1.1  riastrad 
    398  1.1  riastrad struct SMU75_SoftRegisters {
    399  1.1  riastrad 	uint32_t        RefClockFrequency;
    400  1.1  riastrad 	uint32_t        PmTimerPeriod;
    401  1.1  riastrad 	uint32_t        FeatureEnables;
    402  1.1  riastrad #if defined (SMU__DGPU_ONLY)
    403  1.1  riastrad 	uint32_t        PreVBlankGap;
    404  1.1  riastrad 	uint32_t        VBlankTimeout;
    405  1.1  riastrad 	uint32_t        TrainTimeGap;
    406  1.1  riastrad 	uint32_t        MvddSwitchTime;
    407  1.1  riastrad 	uint32_t        LongestAcpiTrainTime;
    408  1.1  riastrad 	uint32_t        AcpiDelay;
    409  1.1  riastrad 	uint32_t        G5TrainTime;
    410  1.1  riastrad 	uint32_t        DelayMpllPwron;
    411  1.1  riastrad 	uint32_t        VoltageChangeTimeout;
    412  1.1  riastrad #endif
    413  1.1  riastrad 	uint32_t        HandshakeDisables;
    414  1.1  riastrad 
    415  1.1  riastrad 	uint8_t         DisplayPhy1Config;
    416  1.1  riastrad 	uint8_t         DisplayPhy2Config;
    417  1.1  riastrad 	uint8_t         DisplayPhy3Config;
    418  1.1  riastrad 	uint8_t         DisplayPhy4Config;
    419  1.1  riastrad 
    420  1.1  riastrad 	uint8_t         DisplayPhy5Config;
    421  1.1  riastrad 	uint8_t         DisplayPhy6Config;
    422  1.1  riastrad 	uint8_t         DisplayPhy7Config;
    423  1.1  riastrad 	uint8_t         DisplayPhy8Config;
    424  1.1  riastrad 
    425  1.1  riastrad 	uint32_t        AverageGraphicsActivity;
    426  1.1  riastrad 	uint32_t        AverageMemoryActivity;
    427  1.1  riastrad 	uint32_t        AverageGioActivity;
    428  1.1  riastrad 
    429  1.1  riastrad 	uint8_t         SClkDpmEnabledLevels;
    430  1.1  riastrad 	uint8_t         MClkDpmEnabledLevels;
    431  1.1  riastrad 	uint8_t         LClkDpmEnabledLevels;
    432  1.1  riastrad 	uint8_t         PCIeDpmEnabledLevels;
    433  1.1  riastrad 
    434  1.1  riastrad 	uint8_t         UVDDpmEnabledLevels;
    435  1.1  riastrad 	uint8_t         SAMUDpmEnabledLevels;
    436  1.1  riastrad 	uint8_t         ACPDpmEnabledLevels;
    437  1.1  riastrad 	uint8_t         VCEDpmEnabledLevels;
    438  1.1  riastrad 
    439  1.1  riastrad 	uint32_t        DRAM_LOG_ADDR_H;
    440  1.1  riastrad 	uint32_t        DRAM_LOG_ADDR_L;
    441  1.1  riastrad 	uint32_t        DRAM_LOG_PHY_ADDR_H;
    442  1.1  riastrad 	uint32_t        DRAM_LOG_PHY_ADDR_L;
    443  1.1  riastrad 	uint32_t        DRAM_LOG_BUFF_SIZE;
    444  1.1  riastrad 	uint32_t        UlvEnterCount;
    445  1.1  riastrad 	uint32_t        UlvTime;
    446  1.1  riastrad 	uint32_t        UcodeLoadStatus;
    447  1.1  riastrad 	uint32_t        AllowMvddSwitch;
    448  1.1  riastrad 	uint8_t         Activity_Weight;
    449  1.1  riastrad 	uint8_t         Reserved8[3];
    450  1.1  riastrad };
    451  1.1  riastrad 
    452  1.1  riastrad typedef struct SMU75_SoftRegisters SMU75_SoftRegisters;
    453  1.1  riastrad 
    454  1.1  riastrad struct SMU75_Firmware_Header {
    455  1.1  riastrad 	uint32_t Digest[5];
    456  1.1  riastrad 	uint32_t Version;
    457  1.1  riastrad 	uint32_t HeaderSize;
    458  1.1  riastrad 	uint32_t Flags;
    459  1.1  riastrad 	uint32_t EntryPoint;
    460  1.1  riastrad 	uint32_t CodeSize;
    461  1.1  riastrad 	uint32_t ImageSize;
    462  1.1  riastrad 
    463  1.1  riastrad 	uint32_t Rtos;
    464  1.1  riastrad 	uint32_t SoftRegisters;
    465  1.1  riastrad 	uint32_t DpmTable;
    466  1.1  riastrad 	uint32_t FanTable;
    467  1.1  riastrad 	uint32_t CacConfigTable;
    468  1.1  riastrad 	uint32_t CacStatusTable;
    469  1.1  riastrad 	uint32_t mcRegisterTable;
    470  1.1  riastrad 	uint32_t mcArbDramTimingTable;
    471  1.1  riastrad 	uint32_t PmFuseTable;
    472  1.1  riastrad 	uint32_t Globals;
    473  1.1  riastrad 	uint32_t ClockStretcherTable;
    474  1.1  riastrad 	uint32_t VftTable;
    475  1.1  riastrad 	uint32_t Reserved1;
    476  1.1  riastrad 	uint32_t AvfsCksOff_AvfsGbvTable;
    477  1.1  riastrad 	uint32_t AvfsCksOff_BtcGbvTable;
    478  1.1  riastrad 	uint32_t MM_AvfsTable;
    479  1.1  riastrad 	uint32_t PowerSharingTable;
    480  1.1  riastrad 	uint32_t AvfsTable;
    481  1.1  riastrad 	uint32_t AvfsCksOffGbvTable;
    482  1.1  riastrad 	uint32_t AvfsMeanNSigma;
    483  1.1  riastrad 	uint32_t AvfsSclkOffsetTable;
    484  1.1  riastrad 	uint32_t Reserved[12];
    485  1.1  riastrad 	uint32_t Signature;
    486  1.1  riastrad };
    487  1.1  riastrad 
    488  1.1  riastrad typedef struct SMU75_Firmware_Header SMU75_Firmware_Header;
    489  1.1  riastrad 
    490  1.1  riastrad #define SMU7_FIRMWARE_HEADER_LOCATION 0x20000
    491  1.1  riastrad 
    492  1.1  riastrad enum  DisplayConfig {
    493  1.1  riastrad 	PowerDown = 1,
    494  1.1  riastrad 	DP54x4,
    495  1.1  riastrad 	DP54x2,
    496  1.1  riastrad 	DP54x1,
    497  1.1  riastrad 	DP27x4,
    498  1.1  riastrad 	DP27x2,
    499  1.1  riastrad 	DP27x1,
    500  1.1  riastrad 	HDMI297,
    501  1.1  riastrad 	HDMI162,
    502  1.1  riastrad 	LVDS,
    503  1.1  riastrad 	DP324x4,
    504  1.1  riastrad 	DP324x2,
    505  1.1  riastrad 	DP324x1
    506  1.1  riastrad };
    507  1.1  riastrad 
    508  1.1  riastrad #define MC_BLOCK_COUNT 1
    509  1.1  riastrad #define CPL_BLOCK_COUNT 5
    510  1.1  riastrad #define SE_BLOCK_COUNT 15
    511  1.1  riastrad #define GC_BLOCK_COUNT 24
    512  1.1  riastrad 
    513  1.1  riastrad struct SMU7_Local_Cac {
    514  1.1  riastrad 	uint8_t BlockId;
    515  1.1  riastrad 	uint8_t SignalId;
    516  1.1  riastrad 	uint8_t Threshold;
    517  1.1  riastrad 	uint8_t Padding;
    518  1.1  riastrad };
    519  1.1  riastrad 
    520  1.1  riastrad typedef struct SMU7_Local_Cac SMU7_Local_Cac;
    521  1.1  riastrad 
    522  1.1  riastrad struct SMU7_Local_Cac_Table {
    523  1.1  riastrad 	SMU7_Local_Cac CplLocalCac[CPL_BLOCK_COUNT];
    524  1.1  riastrad 	SMU7_Local_Cac McLocalCac[MC_BLOCK_COUNT];
    525  1.1  riastrad 	SMU7_Local_Cac SeLocalCac[SE_BLOCK_COUNT];
    526  1.1  riastrad 	SMU7_Local_Cac GcLocalCac[GC_BLOCK_COUNT];
    527  1.1  riastrad };
    528  1.1  riastrad 
    529  1.1  riastrad typedef struct SMU7_Local_Cac_Table SMU7_Local_Cac_Table;
    530  1.1  riastrad 
    531  1.1  riastrad #pragma pack(pop)
    532  1.1  riastrad 
    533  1.1  riastrad #define CG_SYS_BITMASK_FIRST_BIT      0
    534  1.1  riastrad #define CG_SYS_BITMASK_LAST_BIT       10
    535  1.1  riastrad #define CG_SYS_BIF_MGLS_SHIFT         0
    536  1.1  riastrad #define CG_SYS_ROM_SHIFT              1
    537  1.1  riastrad #define CG_SYS_MC_MGCG_SHIFT          2
    538  1.1  riastrad #define CG_SYS_MC_MGLS_SHIFT          3
    539  1.1  riastrad #define CG_SYS_SDMA_MGCG_SHIFT        4
    540  1.1  riastrad #define CG_SYS_SDMA_MGLS_SHIFT        5
    541  1.1  riastrad #define CG_SYS_DRM_MGCG_SHIFT         6
    542  1.1  riastrad #define CG_SYS_HDP_MGCG_SHIFT         7
    543  1.1  riastrad #define CG_SYS_HDP_MGLS_SHIFT         8
    544  1.1  riastrad #define CG_SYS_DRM_MGLS_SHIFT         9
    545  1.1  riastrad #define CG_SYS_BIF_MGCG_SHIFT         10
    546  1.1  riastrad 
    547  1.1  riastrad #define CG_SYS_BIF_MGLS_MASK          0x1
    548  1.1  riastrad #define CG_SYS_ROM_MASK               0x2
    549  1.1  riastrad #define CG_SYS_MC_MGCG_MASK           0x4
    550  1.1  riastrad #define CG_SYS_MC_MGLS_MASK           0x8
    551  1.1  riastrad #define CG_SYS_SDMA_MGCG_MASK         0x10
    552  1.1  riastrad #define CG_SYS_SDMA_MGLS_MASK         0x20
    553  1.1  riastrad #define CG_SYS_DRM_MGCG_MASK          0x40
    554  1.1  riastrad #define CG_SYS_HDP_MGCG_MASK          0x80
    555  1.1  riastrad #define CG_SYS_HDP_MGLS_MASK          0x100
    556  1.1  riastrad #define CG_SYS_DRM_MGLS_MASK          0x200
    557  1.1  riastrad #define CG_SYS_BIF_MGCG_MASK          0x400
    558  1.1  riastrad 
    559  1.1  riastrad #define CG_GFX_BITMASK_FIRST_BIT      16
    560  1.1  riastrad #define CG_GFX_BITMASK_LAST_BIT       24
    561  1.1  riastrad 
    562  1.1  riastrad #define CG_GFX_CGCG_SHIFT             16
    563  1.1  riastrad #define CG_GFX_CGLS_SHIFT             17
    564  1.1  riastrad #define CG_CPF_MGCG_SHIFT             18
    565  1.1  riastrad #define CG_RLC_MGCG_SHIFT             19
    566  1.1  riastrad #define CG_GFX_OTHERS_MGCG_SHIFT      20
    567  1.1  riastrad #define CG_GFX_3DCG_SHIFT             21
    568  1.1  riastrad #define CG_GFX_3DLS_SHIFT             22
    569  1.1  riastrad #define CG_GFX_RLC_LS_SHIFT           23
    570  1.1  riastrad #define CG_GFX_CP_LS_SHIFT            24
    571  1.1  riastrad 
    572  1.1  riastrad #define CG_GFX_CGCG_MASK              0x00010000
    573  1.1  riastrad #define CG_GFX_CGLS_MASK              0x00020000
    574  1.1  riastrad #define CG_CPF_MGCG_MASK              0x00040000
    575  1.1  riastrad #define CG_RLC_MGCG_MASK              0x00080000
    576  1.1  riastrad #define CG_GFX_OTHERS_MGCG_MASK       0x00100000
    577  1.1  riastrad #define CG_GFX_3DCG_MASK              0x00200000
    578  1.1  riastrad #define CG_GFX_3DLS_MASK              0x00400000
    579  1.1  riastrad #define CG_GFX_RLC_LS_MASK            0x00800000
    580  1.1  riastrad #define CG_GFX_CP_LS_MASK             0x01000000
    581  1.1  riastrad 
    582  1.1  riastrad 
    583  1.1  riastrad #define VRCONF_VDDC_MASK         0x000000FF
    584  1.1  riastrad #define VRCONF_VDDC_SHIFT        0
    585  1.1  riastrad #define VRCONF_VDDGFX_MASK       0x0000FF00
    586  1.1  riastrad #define VRCONF_VDDGFX_SHIFT      8
    587  1.1  riastrad #define VRCONF_VDDCI_MASK        0x00FF0000
    588  1.1  riastrad #define VRCONF_VDDCI_SHIFT       16
    589  1.1  riastrad #define VRCONF_MVDD_MASK         0xFF000000
    590  1.1  riastrad #define VRCONF_MVDD_SHIFT        24
    591  1.1  riastrad 
    592  1.1  riastrad #define VR_MERGED_WITH_VDDC      0
    593  1.1  riastrad #define VR_SVI2_PLANE_1          1
    594  1.1  riastrad #define VR_SVI2_PLANE_2          2
    595  1.1  riastrad #define VR_SMIO_PATTERN_1        3
    596  1.1  riastrad #define VR_SMIO_PATTERN_2        4
    597  1.1  riastrad #define VR_STATIC_VOLTAGE        5
    598  1.1  riastrad 
    599  1.1  riastrad #define CLOCK_STRETCHER_MAX_ENTRIES 0x4
    600  1.1  riastrad #define CKS_LOOKUPTable_MAX_ENTRIES 0x4
    601  1.1  riastrad 
    602  1.1  riastrad #define CLOCK_STRETCHER_SETTING_DDT_MASK             0x01
    603  1.1  riastrad #define CLOCK_STRETCHER_SETTING_DDT_SHIFT            0x0
    604  1.1  riastrad #define CLOCK_STRETCHER_SETTING_STRETCH_AMOUNT_MASK  0x1E
    605  1.1  riastrad #define CLOCK_STRETCHER_SETTING_STRETCH_AMOUNT_SHIFT 0x1
    606  1.1  riastrad #define CLOCK_STRETCHER_SETTING_ENABLE_MASK          0x80
    607  1.1  riastrad #define CLOCK_STRETCHER_SETTING_ENABLE_SHIFT         0x7
    608  1.1  riastrad 
    609  1.1  riastrad struct SMU_ClockStretcherDataTableEntry {
    610  1.1  riastrad 	uint8_t minVID;
    611  1.1  riastrad 	uint8_t maxVID;
    612  1.1  riastrad 
    613  1.1  riastrad 	uint16_t setting;
    614  1.1  riastrad };
    615  1.1  riastrad typedef struct SMU_ClockStretcherDataTableEntry SMU_ClockStretcherDataTableEntry;
    616  1.1  riastrad 
    617  1.1  riastrad struct SMU_ClockStretcherDataTable {
    618  1.1  riastrad 	SMU_ClockStretcherDataTableEntry ClockStretcherDataTableEntry[CLOCK_STRETCHER_MAX_ENTRIES];
    619  1.1  riastrad };
    620  1.1  riastrad typedef struct SMU_ClockStretcherDataTable SMU_ClockStretcherDataTable;
    621  1.1  riastrad 
    622  1.1  riastrad struct SMU_CKS_LOOKUPTableEntry {
    623  1.1  riastrad 	uint16_t minFreq;
    624  1.1  riastrad 	uint16_t maxFreq;
    625  1.1  riastrad 
    626  1.1  riastrad 	uint8_t setting;
    627  1.1  riastrad 	uint8_t padding[3];
    628  1.1  riastrad };
    629  1.1  riastrad typedef struct SMU_CKS_LOOKUPTableEntry SMU_CKS_LOOKUPTableEntry;
    630  1.1  riastrad 
    631  1.1  riastrad struct SMU_CKS_LOOKUPTable {
    632  1.1  riastrad 	SMU_CKS_LOOKUPTableEntry CKS_LOOKUPTableEntry[CKS_LOOKUPTable_MAX_ENTRIES];
    633  1.1  riastrad };
    634  1.1  riastrad typedef struct SMU_CKS_LOOKUPTable SMU_CKS_LOOKUPTable;
    635  1.1  riastrad 
    636  1.1  riastrad struct AgmAvfsData_t {
    637  1.1  riastrad 	uint16_t avgPsmCount[28];
    638  1.1  riastrad 	uint16_t minPsmCount[28];
    639  1.1  riastrad };
    640  1.1  riastrad typedef struct AgmAvfsData_t AgmAvfsData_t;
    641  1.1  riastrad 
    642  1.1  riastrad enum VFT_COLUMNS {
    643  1.1  riastrad 	SCLK0,
    644  1.1  riastrad 	SCLK1,
    645  1.1  riastrad 	SCLK2,
    646  1.1  riastrad 	SCLK3,
    647  1.1  riastrad 	SCLK4,
    648  1.1  riastrad 	SCLK5,
    649  1.1  riastrad 	SCLK6,
    650  1.1  riastrad 	SCLK7,
    651  1.1  riastrad 
    652  1.1  riastrad 	NUM_VFT_COLUMNS
    653  1.1  riastrad };
    654  1.1  riastrad enum {
    655  1.1  riastrad   SCS_FUSE_T0,
    656  1.1  riastrad   SCS_FUSE_T1,
    657  1.1  riastrad   NUM_SCS_FUSE_TEMPERATURE
    658  1.1  riastrad };
    659  1.1  riastrad enum {
    660  1.1  riastrad   SCKS_ON,
    661  1.1  riastrad   SCKS_OFF,
    662  1.1  riastrad   NUM_SCKS_STATE_TYPES
    663  1.1  riastrad };
    664  1.1  riastrad 
    665  1.1  riastrad #define VFT_TABLE_DEFINED
    666  1.1  riastrad 
    667  1.1  riastrad #define TEMP_RANGE_MAXSTEPS 12
    668  1.1  riastrad struct VFT_CELL_t {
    669  1.1  riastrad 	uint16_t Voltage;
    670  1.1  riastrad };
    671  1.1  riastrad 
    672  1.1  riastrad typedef struct VFT_CELL_t VFT_CELL_t;
    673  1.1  riastrad #ifdef SMU__FIRMWARE_SCKS_PRESENT__1
    674  1.1  riastrad struct SCS_CELL_t {
    675  1.1  riastrad 	uint16_t PsmCnt[NUM_SCKS_STATE_TYPES];
    676  1.1  riastrad };
    677  1.1  riastrad typedef struct SCS_CELL_t SCS_CELL_t;
    678  1.1  riastrad #endif
    679  1.1  riastrad 
    680  1.1  riastrad struct VFT_TABLE_t {
    681  1.1  riastrad 	VFT_CELL_t    Cell[TEMP_RANGE_MAXSTEPS][NUM_VFT_COLUMNS];
    682  1.1  riastrad 	uint16_t      AvfsGbv [NUM_VFT_COLUMNS];
    683  1.1  riastrad 	uint16_t      BtcGbv  [NUM_VFT_COLUMNS];
    684  1.1  riastrad 	int16_t       Temperature [TEMP_RANGE_MAXSTEPS];
    685  1.1  riastrad 
    686  1.1  riastrad #ifdef SMU__FIRMWARE_SCKS_PRESENT__1
    687  1.1  riastrad 	SCS_CELL_t    ScksCell[TEMP_RANGE_MAXSTEPS][NUM_VFT_COLUMNS];
    688  1.1  riastrad #endif
    689  1.1  riastrad 
    690  1.1  riastrad 	uint8_t       NumTemperatureSteps;
    691  1.1  riastrad 	uint8_t       padding[3];
    692  1.1  riastrad };
    693  1.1  riastrad typedef struct VFT_TABLE_t VFT_TABLE_t;
    694  1.1  riastrad 
    695  1.1  riastrad #define BTCGB_VDROOP_TABLE_MAX_ENTRIES 2
    696  1.1  riastrad #define AVFSGB_VDROOP_TABLE_MAX_ENTRIES 2
    697  1.1  riastrad 
    698  1.1  riastrad struct GB_VDROOP_TABLE_t {
    699  1.1  riastrad 	int32_t a0;
    700  1.1  riastrad 	int32_t a1;
    701  1.1  riastrad 	int32_t a2;
    702  1.1  riastrad 	uint32_t spare;
    703  1.1  riastrad };
    704  1.1  riastrad typedef struct GB_VDROOP_TABLE_t GB_VDROOP_TABLE_t;
    705  1.1  riastrad 
    706  1.1  riastrad struct SMU_QuadraticCoeffs {
    707  1.1  riastrad 	int32_t m1;
    708  1.1  riastrad 	int32_t b;
    709  1.1  riastrad 
    710  1.1  riastrad 	int16_t m2;
    711  1.1  riastrad 	uint8_t m1_shift;
    712  1.1  riastrad 	uint8_t m2_shift;
    713  1.1  riastrad };
    714  1.1  riastrad typedef struct SMU_QuadraticCoeffs SMU_QuadraticCoeffs;
    715  1.1  riastrad 
    716  1.1  riastrad struct AVFS_Margin_t {
    717  1.1  riastrad 	VFT_CELL_t Cell[NUM_VFT_COLUMNS];
    718  1.1  riastrad };
    719  1.1  riastrad typedef struct AVFS_Margin_t AVFS_Margin_t;
    720  1.1  riastrad 
    721  1.1  riastrad struct AVFS_CksOff_Gbv_t {
    722  1.1  riastrad 	VFT_CELL_t Cell[NUM_VFT_COLUMNS];
    723  1.1  riastrad };
    724  1.1  riastrad typedef struct AVFS_CksOff_Gbv_t AVFS_CksOff_Gbv_t;
    725  1.1  riastrad 
    726  1.1  riastrad struct AVFS_CksOff_AvfsGbv_t {
    727  1.1  riastrad 	VFT_CELL_t Cell[NUM_VFT_COLUMNS];
    728  1.1  riastrad };
    729  1.1  riastrad typedef struct AVFS_CksOff_AvfsGbv_t AVFS_CksOff_AvfsGbv_t;
    730  1.1  riastrad 
    731  1.1  riastrad struct AVFS_CksOff_BtcGbv_t {
    732  1.1  riastrad 	VFT_CELL_t Cell[NUM_VFT_COLUMNS];
    733  1.1  riastrad };
    734  1.1  riastrad typedef struct AVFS_CksOff_BtcGbv_t AVFS_CksOff_BtcGbv_t;
    735  1.1  riastrad 
    736  1.1  riastrad struct AVFS_meanNsigma_t {
    737  1.1  riastrad 	uint32_t Aconstant[3];
    738  1.1  riastrad 	uint16_t DC_tol_sigma;
    739  1.1  riastrad 	uint16_t Platform_mean;
    740  1.1  riastrad 	uint16_t Platform_sigma;
    741  1.1  riastrad 	uint16_t PSM_Age_CompFactor;
    742  1.1  riastrad 	uint8_t  Static_Voltage_Offset[NUM_VFT_COLUMNS];
    743  1.1  riastrad };
    744  1.1  riastrad typedef struct AVFS_meanNsigma_t AVFS_meanNsigma_t;
    745  1.1  riastrad 
    746  1.1  riastrad struct AVFS_Sclk_Offset_t {
    747  1.1  riastrad 	uint16_t Sclk_Offset[8];
    748  1.1  riastrad };
    749  1.1  riastrad typedef struct AVFS_Sclk_Offset_t AVFS_Sclk_Offset_t;
    750  1.1  riastrad 
    751  1.1  riastrad struct Power_Sharing_t {
    752  1.1  riastrad 	uint32_t EnergyCounter;
    753  1.1  riastrad 	uint32_t EngeryThreshold;
    754  1.1  riastrad 	uint64_t AM_SCLK_CNT;
    755  1.1  riastrad 	uint64_t AM_0_BUSY_CNT;
    756  1.1  riastrad };
    757  1.1  riastrad typedef struct Power_Sharing_t  Power_Sharing_t;
    758  1.1  riastrad 
    759  1.1  riastrad 
    760  1.1  riastrad #endif
    761  1.1  riastrad 
    762  1.1  riastrad 
    763