xref: /dflybsd-src/sys/dev/drm/radeon/smu7_discrete.h (revision 7dcf36dc33228b5b368783d7b6f7ada00ee671d6)
14cd92098Szrj /*
24cd92098Szrj  * Copyright 2013 Advanced Micro Devices, Inc.
34cd92098Szrj  *
44cd92098Szrj  * Permission is hereby granted, free of charge, to any person obtaining a
54cd92098Szrj  * copy of this software and associated documentation files (the "Software"),
64cd92098Szrj  * to deal in the Software without restriction, including without limitation
74cd92098Szrj  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
84cd92098Szrj  * and/or sell copies of the Software, and to permit persons to whom the
94cd92098Szrj  * Software is furnished to do so, subject to the following conditions:
104cd92098Szrj  *
114cd92098Szrj  * The above copyright notice and this permission notice shall be included in
124cd92098Szrj  * all copies or substantial portions of the Software.
134cd92098Szrj  *
144cd92098Szrj  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
154cd92098Szrj  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
164cd92098Szrj  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
174cd92098Szrj  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
184cd92098Szrj  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
194cd92098Szrj  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
204cd92098Szrj  * OTHER DEALINGS IN THE SOFTWARE.
214cd92098Szrj  *
224cd92098Szrj  */
234cd92098Szrj 
244cd92098Szrj #ifndef SMU7_DISCRETE_H
254cd92098Szrj #define SMU7_DISCRETE_H
264cd92098Szrj 
274cd92098Szrj #include "smu7.h"
284cd92098Szrj 
294cd92098Szrj #pragma pack(push, 1)
304cd92098Szrj 
314cd92098Szrj #define SMU7_DTE_ITERATIONS 5
324cd92098Szrj #define SMU7_DTE_SOURCES 3
334cd92098Szrj #define SMU7_DTE_SINKS 1
344cd92098Szrj #define SMU7_NUM_CPU_TES 0
354cd92098Szrj #define SMU7_NUM_GPU_TES 1
364cd92098Szrj #define SMU7_NUM_NON_TES 2
374cd92098Szrj 
384cd92098Szrj struct SMU7_SoftRegisters
394cd92098Szrj {
404cd92098Szrj     uint32_t        RefClockFrequency;
414cd92098Szrj     uint32_t        PmTimerP;
424cd92098Szrj     uint32_t        FeatureEnables;
434cd92098Szrj     uint32_t        PreVBlankGap;
444cd92098Szrj     uint32_t        VBlankTimeout;
454cd92098Szrj     uint32_t        TrainTimeGap;
464cd92098Szrj 
474cd92098Szrj     uint32_t        MvddSwitchTime;
484cd92098Szrj     uint32_t        LongestAcpiTrainTime;
494cd92098Szrj     uint32_t        AcpiDelay;
504cd92098Szrj     uint32_t        G5TrainTime;
514cd92098Szrj     uint32_t        DelayMpllPwron;
524cd92098Szrj     uint32_t        VoltageChangeTimeout;
534cd92098Szrj     uint32_t        HandshakeDisables;
544cd92098Szrj 
554cd92098Szrj     uint8_t         DisplayPhy1Config;
564cd92098Szrj     uint8_t         DisplayPhy2Config;
574cd92098Szrj     uint8_t         DisplayPhy3Config;
584cd92098Szrj     uint8_t         DisplayPhy4Config;
594cd92098Szrj 
604cd92098Szrj     uint8_t         DisplayPhy5Config;
614cd92098Szrj     uint8_t         DisplayPhy6Config;
624cd92098Szrj     uint8_t         DisplayPhy7Config;
634cd92098Szrj     uint8_t         DisplayPhy8Config;
644cd92098Szrj 
654cd92098Szrj     uint32_t        AverageGraphicsA;
664cd92098Szrj     uint32_t        AverageMemoryA;
674cd92098Szrj     uint32_t        AverageGioA;
684cd92098Szrj 
694cd92098Szrj     uint8_t         SClkDpmEnabledLevels;
704cd92098Szrj     uint8_t         MClkDpmEnabledLevels;
714cd92098Szrj     uint8_t         LClkDpmEnabledLevels;
724cd92098Szrj     uint8_t         PCIeDpmEnabledLevels;
734cd92098Szrj 
744cd92098Szrj     uint8_t         UVDDpmEnabledLevels;
754cd92098Szrj     uint8_t         SAMUDpmEnabledLevels;
764cd92098Szrj     uint8_t         ACPDpmEnabledLevels;
774cd92098Szrj     uint8_t         VCEDpmEnabledLevels;
784cd92098Szrj 
794cd92098Szrj     uint32_t        DRAM_LOG_ADDR_H;
804cd92098Szrj     uint32_t        DRAM_LOG_ADDR_L;
814cd92098Szrj     uint32_t        DRAM_LOG_PHY_ADDR_H;
824cd92098Szrj     uint32_t        DRAM_LOG_PHY_ADDR_L;
834cd92098Szrj     uint32_t        DRAM_LOG_BUFF_SIZE;
844cd92098Szrj     uint32_t        UlvEnterC;
854cd92098Szrj     uint32_t        UlvTime;
864cd92098Szrj     uint32_t        Reserved[3];
874cd92098Szrj 
884cd92098Szrj };
894cd92098Szrj 
904cd92098Szrj typedef struct SMU7_SoftRegisters SMU7_SoftRegisters;
914cd92098Szrj 
924cd92098Szrj struct SMU7_Discrete_VoltageLevel
934cd92098Szrj {
944cd92098Szrj     uint16_t    Voltage;
954cd92098Szrj     uint16_t    StdVoltageHiSidd;
964cd92098Szrj     uint16_t    StdVoltageLoSidd;
974cd92098Szrj     uint8_t     Smio;
984cd92098Szrj     uint8_t     padding;
994cd92098Szrj };
1004cd92098Szrj 
1014cd92098Szrj typedef struct SMU7_Discrete_VoltageLevel SMU7_Discrete_VoltageLevel;
1024cd92098Szrj 
1034cd92098Szrj struct SMU7_Discrete_GraphicsLevel
1044cd92098Szrj {
1054cd92098Szrj     uint32_t    Flags;
1064cd92098Szrj     uint32_t    MinVddc;
1074cd92098Szrj     uint32_t    MinVddcPhases;
1084cd92098Szrj 
1094cd92098Szrj     uint32_t    SclkFrequency;
1104cd92098Szrj 
1114cd92098Szrj     uint8_t     padding1[2];
1124cd92098Szrj     uint16_t    ActivityLevel;
1134cd92098Szrj 
1144cd92098Szrj     uint32_t    CgSpllFuncCntl3;
1154cd92098Szrj     uint32_t    CgSpllFuncCntl4;
1164cd92098Szrj     uint32_t    SpllSpreadSpectrum;
1174cd92098Szrj     uint32_t    SpllSpreadSpectrum2;
1184cd92098Szrj     uint32_t    CcPwrDynRm;
1194cd92098Szrj     uint32_t    CcPwrDynRm1;
1204cd92098Szrj     uint8_t     SclkDid;
1214cd92098Szrj     uint8_t     DisplayWatermark;
1224cd92098Szrj     uint8_t     EnabledForActivity;
1234cd92098Szrj     uint8_t     EnabledForThrottle;
1244cd92098Szrj     uint8_t     UpH;
1254cd92098Szrj     uint8_t     DownH;
1264cd92098Szrj     uint8_t     VoltageDownH;
1274cd92098Szrj     uint8_t     PowerThrottle;
1284cd92098Szrj     uint8_t     DeepSleepDivId;
1294cd92098Szrj     uint8_t     padding[3];
1304cd92098Szrj };
1314cd92098Szrj 
1324cd92098Szrj typedef struct SMU7_Discrete_GraphicsLevel SMU7_Discrete_GraphicsLevel;
1334cd92098Szrj 
1344cd92098Szrj struct SMU7_Discrete_ACPILevel
1354cd92098Szrj {
1364cd92098Szrj     uint32_t    Flags;
1374cd92098Szrj     uint32_t    MinVddc;
1384cd92098Szrj     uint32_t    MinVddcPhases;
1394cd92098Szrj     uint32_t    SclkFrequency;
1404cd92098Szrj     uint8_t     SclkDid;
1414cd92098Szrj     uint8_t     DisplayWatermark;
1424cd92098Szrj     uint8_t     DeepSleepDivId;
1434cd92098Szrj     uint8_t     padding;
1444cd92098Szrj     uint32_t    CgSpllFuncCntl;
1454cd92098Szrj     uint32_t    CgSpllFuncCntl2;
1464cd92098Szrj     uint32_t    CgSpllFuncCntl3;
1474cd92098Szrj     uint32_t    CgSpllFuncCntl4;
1484cd92098Szrj     uint32_t    SpllSpreadSpectrum;
1494cd92098Szrj     uint32_t    SpllSpreadSpectrum2;
1504cd92098Szrj     uint32_t    CcPwrDynRm;
1514cd92098Szrj     uint32_t    CcPwrDynRm1;
1524cd92098Szrj };
1534cd92098Szrj 
1544cd92098Szrj typedef struct SMU7_Discrete_ACPILevel SMU7_Discrete_ACPILevel;
1554cd92098Szrj 
1564cd92098Szrj struct SMU7_Discrete_Ulv
1574cd92098Szrj {
1584cd92098Szrj     uint32_t    CcPwrDynRm;
1594cd92098Szrj     uint32_t    CcPwrDynRm1;
1604cd92098Szrj     uint16_t    VddcOffset;
1614cd92098Szrj     uint8_t     VddcOffsetVid;
1624cd92098Szrj     uint8_t     VddcPhase;
1634cd92098Szrj     uint32_t    Reserved;
1644cd92098Szrj };
1654cd92098Szrj 
1664cd92098Szrj typedef struct SMU7_Discrete_Ulv SMU7_Discrete_Ulv;
1674cd92098Szrj 
1684cd92098Szrj struct SMU7_Discrete_MemoryLevel
1694cd92098Szrj {
1704cd92098Szrj     uint32_t    MinVddc;
1714cd92098Szrj     uint32_t    MinVddcPhases;
1724cd92098Szrj     uint32_t    MinVddci;
1734cd92098Szrj     uint32_t    MinMvdd;
1744cd92098Szrj 
1754cd92098Szrj     uint32_t    MclkFrequency;
1764cd92098Szrj 
1774cd92098Szrj     uint8_t     EdcReadEnable;
1784cd92098Szrj     uint8_t     EdcWriteEnable;
1794cd92098Szrj     uint8_t     RttEnable;
1804cd92098Szrj     uint8_t     StutterEnable;
1814cd92098Szrj 
1824cd92098Szrj     uint8_t     StrobeEnable;
1834cd92098Szrj     uint8_t     StrobeRatio;
1844cd92098Szrj     uint8_t     EnabledForThrottle;
1854cd92098Szrj     uint8_t     EnabledForActivity;
1864cd92098Szrj 
1874cd92098Szrj     uint8_t     UpH;
1884cd92098Szrj     uint8_t     DownH;
1894cd92098Szrj     uint8_t     VoltageDownH;
1904cd92098Szrj     uint8_t     padding;
1914cd92098Szrj 
1924cd92098Szrj     uint16_t    ActivityLevel;
1934cd92098Szrj     uint8_t     DisplayWatermark;
1944cd92098Szrj     uint8_t     padding1;
1954cd92098Szrj 
1964cd92098Szrj     uint32_t    MpllFuncCntl;
1974cd92098Szrj     uint32_t    MpllFuncCntl_1;
1984cd92098Szrj     uint32_t    MpllFuncCntl_2;
1994cd92098Szrj     uint32_t    MpllAdFuncCntl;
2004cd92098Szrj     uint32_t    MpllDqFuncCntl;
2014cd92098Szrj     uint32_t    MclkPwrmgtCntl;
2024cd92098Szrj     uint32_t    DllCntl;
2034cd92098Szrj     uint32_t    MpllSs1;
2044cd92098Szrj     uint32_t    MpllSs2;
2054cd92098Szrj };
2064cd92098Szrj 
2074cd92098Szrj typedef struct SMU7_Discrete_MemoryLevel SMU7_Discrete_MemoryLevel;
2084cd92098Szrj 
2094cd92098Szrj struct SMU7_Discrete_LinkLevel
2104cd92098Szrj {
2114cd92098Szrj     uint8_t     PcieGenSpeed;
2124cd92098Szrj     uint8_t     PcieLaneCount;
2134cd92098Szrj     uint8_t     EnabledForActivity;
2144cd92098Szrj     uint8_t     Padding;
2154cd92098Szrj     uint32_t    DownT;
2164cd92098Szrj     uint32_t    UpT;
2174cd92098Szrj     uint32_t    Reserved;
2184cd92098Szrj };
2194cd92098Szrj 
2204cd92098Szrj typedef struct SMU7_Discrete_LinkLevel SMU7_Discrete_LinkLevel;
2214cd92098Szrj 
2224cd92098Szrj 
2234cd92098Szrj struct SMU7_Discrete_MCArbDramTimingTableEntry
2244cd92098Szrj {
2254cd92098Szrj     uint32_t McArbDramTiming;
2264cd92098Szrj     uint32_t McArbDramTiming2;
2274cd92098Szrj     uint8_t  McArbBurstTime;
2284cd92098Szrj     uint8_t  padding[3];
2294cd92098Szrj };
2304cd92098Szrj 
2314cd92098Szrj typedef struct SMU7_Discrete_MCArbDramTimingTableEntry SMU7_Discrete_MCArbDramTimingTableEntry;
2324cd92098Szrj 
2334cd92098Szrj struct SMU7_Discrete_MCArbDramTimingTable
2344cd92098Szrj {
2354cd92098Szrj     SMU7_Discrete_MCArbDramTimingTableEntry entries[SMU__NUM_SCLK_DPM_STATE][SMU__NUM_MCLK_DPM_LEVELS];
2364cd92098Szrj };
2374cd92098Szrj 
2384cd92098Szrj typedef struct SMU7_Discrete_MCArbDramTimingTable SMU7_Discrete_MCArbDramTimingTable;
2394cd92098Szrj 
2404cd92098Szrj struct SMU7_Discrete_UvdLevel
2414cd92098Szrj {
2424cd92098Szrj     uint32_t VclkFrequency;
2434cd92098Szrj     uint32_t DclkFrequency;
2444cd92098Szrj     uint16_t MinVddc;
2454cd92098Szrj     uint8_t  MinVddcPhases;
2464cd92098Szrj     uint8_t  VclkDivider;
2474cd92098Szrj     uint8_t  DclkDivider;
2484cd92098Szrj     uint8_t  padding[3];
2494cd92098Szrj };
2504cd92098Szrj 
2514cd92098Szrj typedef struct SMU7_Discrete_UvdLevel SMU7_Discrete_UvdLevel;
2524cd92098Szrj 
2534cd92098Szrj struct SMU7_Discrete_ExtClkLevel
2544cd92098Szrj {
2554cd92098Szrj     uint32_t Frequency;
2564cd92098Szrj     uint16_t MinVoltage;
2574cd92098Szrj     uint8_t  MinPhases;
2584cd92098Szrj     uint8_t  Divider;
2594cd92098Szrj };
2604cd92098Szrj 
2614cd92098Szrj typedef struct SMU7_Discrete_ExtClkLevel SMU7_Discrete_ExtClkLevel;
2624cd92098Szrj 
2634cd92098Szrj struct SMU7_Discrete_StateInfo
2644cd92098Szrj {
2654cd92098Szrj     uint32_t SclkFrequency;
2664cd92098Szrj     uint32_t MclkFrequency;
2674cd92098Szrj     uint32_t VclkFrequency;
2684cd92098Szrj     uint32_t DclkFrequency;
2694cd92098Szrj     uint32_t SamclkFrequency;
2704cd92098Szrj     uint32_t AclkFrequency;
2714cd92098Szrj     uint32_t EclkFrequency;
2724cd92098Szrj     uint16_t MvddVoltage;
2734cd92098Szrj     uint16_t padding16;
2744cd92098Szrj     uint8_t  DisplayWatermark;
2754cd92098Szrj     uint8_t  McArbIndex;
2764cd92098Szrj     uint8_t  McRegIndex;
2774cd92098Szrj     uint8_t  SeqIndex;
2784cd92098Szrj     uint8_t  SclkDid;
2794cd92098Szrj     int8_t   SclkIndex;
2804cd92098Szrj     int8_t   MclkIndex;
2814cd92098Szrj     uint8_t  PCIeGen;
2824cd92098Szrj 
2834cd92098Szrj };
2844cd92098Szrj 
2854cd92098Szrj typedef struct SMU7_Discrete_StateInfo SMU7_Discrete_StateInfo;
2864cd92098Szrj 
2874cd92098Szrj 
2884cd92098Szrj struct SMU7_Discrete_DpmTable
2894cd92098Szrj {
2904cd92098Szrj     SMU7_PIDController                  GraphicsPIDController;
2914cd92098Szrj     SMU7_PIDController                  MemoryPIDController;
2924cd92098Szrj     SMU7_PIDController                  LinkPIDController;
2934cd92098Szrj 
2944cd92098Szrj     uint32_t                            SystemFlags;
2954cd92098Szrj 
2964cd92098Szrj 
2974cd92098Szrj     uint32_t                            SmioMaskVddcVid;
2984cd92098Szrj     uint32_t                            SmioMaskVddcPhase;
2994cd92098Szrj     uint32_t                            SmioMaskVddciVid;
3004cd92098Szrj     uint32_t                            SmioMaskMvddVid;
3014cd92098Szrj 
3024cd92098Szrj     uint32_t                            VddcLevelCount;
3034cd92098Szrj     uint32_t                            VddciLevelCount;
3044cd92098Szrj     uint32_t                            MvddLevelCount;
3054cd92098Szrj 
3064cd92098Szrj     SMU7_Discrete_VoltageLevel          VddcLevel               [SMU7_MAX_LEVELS_VDDC];
3074cd92098Szrj //    SMU7_Discrete_VoltageLevel          VddcStandardReference   [SMU7_MAX_LEVELS_VDDC];
3084cd92098Szrj     SMU7_Discrete_VoltageLevel          VddciLevel              [SMU7_MAX_LEVELS_VDDCI];
3094cd92098Szrj     SMU7_Discrete_VoltageLevel          MvddLevel               [SMU7_MAX_LEVELS_MVDD];
3104cd92098Szrj 
3114cd92098Szrj     uint8_t                             GraphicsDpmLevelCount;
3124cd92098Szrj     uint8_t                             MemoryDpmLevelCount;
3134cd92098Szrj     uint8_t                             LinkLevelCount;
3144cd92098Szrj     uint8_t                             UvdLevelCount;
3154cd92098Szrj     uint8_t                             VceLevelCount;
3164cd92098Szrj     uint8_t                             AcpLevelCount;
3174cd92098Szrj     uint8_t                             SamuLevelCount;
3184cd92098Szrj     uint8_t                             MasterDeepSleepControl;
3194cd92098Szrj     uint32_t                            Reserved[5];
3204cd92098Szrj //    uint32_t                            SamuDefaultLevel;
3214cd92098Szrj 
3224cd92098Szrj     SMU7_Discrete_GraphicsLevel         GraphicsLevel           [SMU7_MAX_LEVELS_GRAPHICS];
3234cd92098Szrj     SMU7_Discrete_MemoryLevel           MemoryACPILevel;
3244cd92098Szrj     SMU7_Discrete_MemoryLevel           MemoryLevel             [SMU7_MAX_LEVELS_MEMORY];
3254cd92098Szrj     SMU7_Discrete_LinkLevel             LinkLevel               [SMU7_MAX_LEVELS_LINK];
3264cd92098Szrj     SMU7_Discrete_ACPILevel             ACPILevel;
3274cd92098Szrj     SMU7_Discrete_UvdLevel              UvdLevel                [SMU7_MAX_LEVELS_UVD];
3284cd92098Szrj     SMU7_Discrete_ExtClkLevel           VceLevel                [SMU7_MAX_LEVELS_VCE];
3294cd92098Szrj     SMU7_Discrete_ExtClkLevel           AcpLevel                [SMU7_MAX_LEVELS_ACP];
3304cd92098Szrj     SMU7_Discrete_ExtClkLevel           SamuLevel               [SMU7_MAX_LEVELS_SAMU];
3314cd92098Szrj     SMU7_Discrete_Ulv                   Ulv;
3324cd92098Szrj 
3334cd92098Szrj     uint32_t                            SclkStepSize;
3344cd92098Szrj     uint32_t                            Smio                    [SMU7_MAX_ENTRIES_SMIO];
3354cd92098Szrj 
3364cd92098Szrj     uint8_t                             UvdBootLevel;
3374cd92098Szrj     uint8_t                             VceBootLevel;
3384cd92098Szrj     uint8_t                             AcpBootLevel;
3394cd92098Szrj     uint8_t                             SamuBootLevel;
3404cd92098Szrj 
3414cd92098Szrj     uint8_t                             UVDInterval;
3424cd92098Szrj     uint8_t                             VCEInterval;
3434cd92098Szrj     uint8_t                             ACPInterval;
3444cd92098Szrj     uint8_t                             SAMUInterval;
3454cd92098Szrj 
3464cd92098Szrj     uint8_t                             GraphicsBootLevel;
3474cd92098Szrj     uint8_t                             GraphicsVoltageChangeEnable;
3484cd92098Szrj     uint8_t                             GraphicsThermThrottleEnable;
3494cd92098Szrj     uint8_t                             GraphicsInterval;
3504cd92098Szrj 
3514cd92098Szrj     uint8_t                             VoltageInterval;
3524cd92098Szrj     uint8_t                             ThermalInterval;
3534cd92098Szrj     uint16_t                            TemperatureLimitHigh;
3544cd92098Szrj 
3554cd92098Szrj     uint16_t                            TemperatureLimitLow;
3564cd92098Szrj     uint8_t                             MemoryBootLevel;
3574cd92098Szrj     uint8_t                             MemoryVoltageChangeEnable;
3584cd92098Szrj 
3594cd92098Szrj     uint8_t                             MemoryInterval;
3604cd92098Szrj     uint8_t                             MemoryThermThrottleEnable;
3614cd92098Szrj     uint16_t                            VddcVddciDelta;
3624cd92098Szrj 
3634cd92098Szrj     uint16_t                            VoltageResponseTime;
3644cd92098Szrj     uint16_t                            PhaseResponseTime;
3654cd92098Szrj 
3664cd92098Szrj     uint8_t                             PCIeBootLinkLevel;
3674cd92098Szrj     uint8_t                             PCIeGenInterval;
3684cd92098Szrj     uint8_t                             DTEInterval;
3694cd92098Szrj     uint8_t                             DTEMode;
3704cd92098Szrj 
3714cd92098Szrj     uint8_t                             SVI2Enable;
3724cd92098Szrj     uint8_t                             VRHotGpio;
3734cd92098Szrj     uint8_t                             AcDcGpio;
3744cd92098Szrj     uint8_t                             ThermGpio;
3754cd92098Szrj 
3764cd92098Szrj     uint16_t                            PPM_PkgPwrLimit;
3774cd92098Szrj     uint16_t                            PPM_TemperatureLimit;
3784cd92098Szrj 
3794cd92098Szrj     uint16_t                            DefaultTdp;
3804cd92098Szrj     uint16_t                            TargetTdp;
3814cd92098Szrj 
3824cd92098Szrj     uint16_t                            FpsHighT;
3834cd92098Szrj     uint16_t                            FpsLowT;
3844cd92098Szrj 
3854cd92098Szrj     uint16_t                            BAPMTI_R  [SMU7_DTE_ITERATIONS][SMU7_DTE_SOURCES][SMU7_DTE_SINKS];
3864cd92098Szrj     uint16_t                            BAPMTI_RC [SMU7_DTE_ITERATIONS][SMU7_DTE_SOURCES][SMU7_DTE_SINKS];
3874cd92098Szrj 
3884cd92098Szrj     uint8_t                             DTEAmbientTempBase;
3894cd92098Szrj     uint8_t                             DTETjOffset;
3904cd92098Szrj     uint8_t                             GpuTjMax;
3914cd92098Szrj     uint8_t                             GpuTjHyst;
3924cd92098Szrj 
3934cd92098Szrj     uint16_t                            BootVddc;
3944cd92098Szrj     uint16_t                            BootVddci;
3954cd92098Szrj 
3964cd92098Szrj     uint16_t                            BootMVdd;
3974cd92098Szrj     uint16_t                            padding;
3984cd92098Szrj 
3994cd92098Szrj     uint32_t                            BAPM_TEMP_GRADIENT;
4004cd92098Szrj 
4014cd92098Szrj     uint32_t                            LowSclkInterruptT;
4024cd92098Szrj };
4034cd92098Szrj 
4044cd92098Szrj typedef struct SMU7_Discrete_DpmTable SMU7_Discrete_DpmTable;
4054cd92098Szrj 
4064cd92098Szrj #define SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE 16
4074cd92098Szrj #define SMU7_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT SMU7_MAX_LEVELS_MEMORY
4084cd92098Szrj 
4094cd92098Szrj struct SMU7_Discrete_MCRegisterAddress
4104cd92098Szrj {
4114cd92098Szrj     uint16_t s0;
4124cd92098Szrj     uint16_t s1;
4134cd92098Szrj };
4144cd92098Szrj 
4154cd92098Szrj typedef struct SMU7_Discrete_MCRegisterAddress SMU7_Discrete_MCRegisterAddress;
4164cd92098Szrj 
4174cd92098Szrj struct SMU7_Discrete_MCRegisterSet
4184cd92098Szrj {
4194cd92098Szrj     uint32_t value[SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE];
4204cd92098Szrj };
4214cd92098Szrj 
4224cd92098Szrj typedef struct SMU7_Discrete_MCRegisterSet SMU7_Discrete_MCRegisterSet;
4234cd92098Szrj 
4244cd92098Szrj struct SMU7_Discrete_MCRegisters
4254cd92098Szrj {
4264cd92098Szrj     uint8_t                             last;
4274cd92098Szrj     uint8_t                             reserved[3];
4284cd92098Szrj     SMU7_Discrete_MCRegisterAddress     address[SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE];
4294cd92098Szrj     SMU7_Discrete_MCRegisterSet         data[SMU7_DISCRETE_MC_REGISTER_ARRAY_SET_COUNT];
4304cd92098Szrj };
4314cd92098Szrj 
4324cd92098Szrj typedef struct SMU7_Discrete_MCRegisters SMU7_Discrete_MCRegisters;
4334cd92098Szrj 
434*7dcf36dcSFrançois Tigeot struct SMU7_Discrete_FanTable
435*7dcf36dcSFrançois Tigeot {
436*7dcf36dcSFrançois Tigeot 	uint16_t FdoMode;
437*7dcf36dcSFrançois Tigeot 	int16_t  TempMin;
438*7dcf36dcSFrançois Tigeot 	int16_t  TempMed;
439*7dcf36dcSFrançois Tigeot 	int16_t  TempMax;
440*7dcf36dcSFrançois Tigeot 	int16_t  Slope1;
441*7dcf36dcSFrançois Tigeot 	int16_t  Slope2;
442*7dcf36dcSFrançois Tigeot 	int16_t  FdoMin;
443*7dcf36dcSFrançois Tigeot 	int16_t  HystUp;
444*7dcf36dcSFrançois Tigeot 	int16_t  HystDown;
445*7dcf36dcSFrançois Tigeot 	int16_t  HystSlope;
446*7dcf36dcSFrançois Tigeot 	int16_t  TempRespLim;
447*7dcf36dcSFrançois Tigeot 	int16_t  TempCurr;
448*7dcf36dcSFrançois Tigeot 	int16_t  SlopeCurr;
449*7dcf36dcSFrançois Tigeot 	int16_t  PwmCurr;
450*7dcf36dcSFrançois Tigeot 	uint32_t RefreshPeriod;
451*7dcf36dcSFrançois Tigeot 	int16_t  FdoMax;
452*7dcf36dcSFrançois Tigeot 	uint8_t  TempSrc;
453*7dcf36dcSFrançois Tigeot 	int8_t   Padding;
454*7dcf36dcSFrançois Tigeot };
455*7dcf36dcSFrançois Tigeot 
456*7dcf36dcSFrançois Tigeot typedef struct SMU7_Discrete_FanTable SMU7_Discrete_FanTable;
457*7dcf36dcSFrançois Tigeot 
458*7dcf36dcSFrançois Tigeot 
4594cd92098Szrj struct SMU7_Discrete_PmFuses {
4604cd92098Szrj   // dw0-dw1
4614cd92098Szrj   uint8_t BapmVddCVidHiSidd[8];
4624cd92098Szrj 
4634cd92098Szrj   // dw2-dw3
4644cd92098Szrj   uint8_t BapmVddCVidLoSidd[8];
4654cd92098Szrj 
4664cd92098Szrj   // dw4-dw5
4674cd92098Szrj   uint8_t VddCVid[8];
4684cd92098Szrj 
4694cd92098Szrj   // dw6
4704cd92098Szrj   uint8_t SviLoadLineEn;
4714cd92098Szrj   uint8_t SviLoadLineVddC;
4724cd92098Szrj   uint8_t SviLoadLineTrimVddC;
4734cd92098Szrj   uint8_t SviLoadLineOffsetVddC;
4744cd92098Szrj 
4754cd92098Szrj   // dw7
4764cd92098Szrj   uint16_t TDC_VDDC_PkgLimit;
4774cd92098Szrj   uint8_t TDC_VDDC_ThrottleReleaseLimitPerc;
4784cd92098Szrj   uint8_t TDC_MAWt;
4794cd92098Szrj 
4804cd92098Szrj   // dw8
4814cd92098Szrj   uint8_t TdcWaterfallCtl;
4824cd92098Szrj   uint8_t LPMLTemperatureMin;
4834cd92098Szrj   uint8_t LPMLTemperatureMax;
4844cd92098Szrj   uint8_t Reserved;
4854cd92098Szrj 
4864cd92098Szrj   // dw9-dw10
4874cd92098Szrj   uint8_t BapmVddCVidHiSidd2[8];
4884cd92098Szrj 
4894cd92098Szrj   // dw11-dw12
490*7dcf36dcSFrançois Tigeot   int16_t FuzzyFan_ErrorSetDelta;
491*7dcf36dcSFrançois Tigeot   int16_t FuzzyFan_ErrorRateSetDelta;
492*7dcf36dcSFrançois Tigeot   int16_t FuzzyFan_PwmSetDelta;
493*7dcf36dcSFrançois Tigeot   uint16_t CalcMeasPowerBlend;
4944cd92098Szrj 
4954cd92098Szrj   // dw13-dw16
4964cd92098Szrj   uint8_t GnbLPML[16];
4974cd92098Szrj 
4984cd92098Szrj   // dw17
4994cd92098Szrj   uint8_t GnbLPMLMaxVid;
5004cd92098Szrj   uint8_t GnbLPMLMinVid;
5014cd92098Szrj   uint8_t Reserved1[2];
5024cd92098Szrj 
5034cd92098Szrj   // dw18
5044cd92098Szrj   uint16_t BapmVddCBaseLeakageHiSidd;
5054cd92098Szrj   uint16_t BapmVddCBaseLeakageLoSidd;
5064cd92098Szrj };
5074cd92098Szrj 
5084cd92098Szrj typedef struct SMU7_Discrete_PmFuses SMU7_Discrete_PmFuses;
5094cd92098Szrj 
5104cd92098Szrj 
5114cd92098Szrj #pragma pack(pop)
5124cd92098Szrj 
5134cd92098Szrj #endif
514a39b2473SFrançois Tigeot 
515