Path: blob/master/drivers/gpu/drm/amd/pm/powerplay/inc/smu74.h
26552 views
/*1* Copyright 2014 Advanced Micro Devices, Inc.2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice shall be included in11* all copies or substantial portions of the Software.12*13* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR14* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,15* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL16* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR17* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,18* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR19* OTHER DEALINGS IN THE SOFTWARE.20*21*/222324#ifndef SMU74_H25#define SMU74_H2627#pragma pack(push, 1)2829#define SMU__DGPU_ONLY3031#define SMU__NUM_SCLK_DPM_STATE 832#define SMU__NUM_MCLK_DPM_LEVELS 433#define SMU__NUM_LCLK_DPM_LEVELS 834#define SMU__NUM_PCIE_DPM_LEVELS 83536#define EXP_M1 3537#define EXP_M2 9282138#define EXP_B 666297473940#define EXP_M1_1 36541#define EXP_M2_1 65870042#define EXP_B_1 3055061344344#define EXP_M1_2 18945#define EXP_M2_2 37969246#define EXP_B_2 1946094694748#define EXP_M1_3 9949#define EXP_M2_3 21791550#define EXP_B_3 1222559945152#define EXP_M1_4 5153#define EXP_M2_4 12264354#define EXP_B_4 748933845556#define EXP_M1_5 42357#define EXP_M2_5 110332658#define EXP_B_5 7281226215960enum SID_OPTION {61SID_OPTION_HI,62SID_OPTION_LO,63SID_OPTION_COUNT64};6566enum Poly3rdOrderCoeff {67LEAKAGE_TEMPERATURE_SCALAR,68LEAKAGE_VOLTAGE_SCALAR,69DYNAMIC_VOLTAGE_SCALAR,70POLY_3RD_ORDER_COUNT71};7273struct SMU7_Poly3rdOrder_Data {74int32_t a;75int32_t b;76int32_t c;77int32_t d;78uint8_t a_shift;79uint8_t b_shift;80uint8_t c_shift;81uint8_t x_shift;82};8384typedef struct SMU7_Poly3rdOrder_Data SMU7_Poly3rdOrder_Data;8586struct Power_Calculator_Data {87uint16_t NoLoadVoltage;88uint16_t LoadVoltage;89uint16_t Resistance;90uint16_t Temperature;91uint16_t BaseLeakage;92uint16_t LkgTempScalar;93uint16_t LkgVoltScalar;94uint16_t LkgAreaScalar;95uint16_t LkgPower;96uint16_t DynVoltScalar;97uint32_t Cac;98uint32_t DynPower;99uint32_t TotalCurrent;100uint32_t TotalPower;101};102103typedef struct Power_Calculator_Data PowerCalculatorData_t;104105struct Gc_Cac_Weight_Data {106uint8_t index;107uint32_t value;108};109110typedef struct Gc_Cac_Weight_Data GcCacWeight_Data;111112113typedef struct {114uint32_t high;115uint32_t low;116} data_64_t;117118typedef struct {119data_64_t high;120data_64_t low;121} data_128_t;122123#define SMU7_CONTEXT_ID_SMC 1124#define SMU7_CONTEXT_ID_VBIOS 2125126#define SMU74_MAX_LEVELS_VDDC 16127#define SMU74_MAX_LEVELS_VDDGFX 16128#define SMU74_MAX_LEVELS_VDDCI 8129#define SMU74_MAX_LEVELS_MVDD 4130131#define SMU_MAX_SMIO_LEVELS 4132133#define SMU74_MAX_LEVELS_GRAPHICS SMU__NUM_SCLK_DPM_STATE /* SCLK + SQ DPM + ULV */134#define SMU74_MAX_LEVELS_MEMORY SMU__NUM_MCLK_DPM_LEVELS /* MCLK Levels DPM */135#define SMU74_MAX_LEVELS_GIO SMU__NUM_LCLK_DPM_LEVELS /* LCLK Levels */136#define SMU74_MAX_LEVELS_LINK SMU__NUM_PCIE_DPM_LEVELS /* PCIe speed and number of lanes */137#define SMU74_MAX_LEVELS_UVD 8 /* VCLK/DCLK levels for UVD */138#define SMU74_MAX_LEVELS_VCE 8 /* ECLK levels for VCE */139#define SMU74_MAX_LEVELS_ACP 8 /* ACLK levels for ACP */140#define SMU74_MAX_LEVELS_SAMU 8 /* SAMCLK levels for SAMU */141#define SMU74_MAX_ENTRIES_SMIO 32 /* Number of entries in SMIO table */142143#define DPM_NO_LIMIT 0144#define DPM_NO_UP 1145#define DPM_GO_DOWN 2146#define DPM_GO_UP 3147148#define SMU7_FIRST_DPM_GRAPHICS_LEVEL 0149#define SMU7_FIRST_DPM_MEMORY_LEVEL 0150151#define GPIO_CLAMP_MODE_VRHOT 1152#define GPIO_CLAMP_MODE_THERM 2153#define GPIO_CLAMP_MODE_DC 4154155#define SCRATCH_B_TARG_PCIE_INDEX_SHIFT 0156#define SCRATCH_B_TARG_PCIE_INDEX_MASK (0x7<<SCRATCH_B_TARG_PCIE_INDEX_SHIFT)157#define SCRATCH_B_CURR_PCIE_INDEX_SHIFT 3158#define SCRATCH_B_CURR_PCIE_INDEX_MASK (0x7<<SCRATCH_B_CURR_PCIE_INDEX_SHIFT)159#define SCRATCH_B_TARG_UVD_INDEX_SHIFT 6160#define SCRATCH_B_TARG_UVD_INDEX_MASK (0x7<<SCRATCH_B_TARG_UVD_INDEX_SHIFT)161#define SCRATCH_B_CURR_UVD_INDEX_SHIFT 9162#define SCRATCH_B_CURR_UVD_INDEX_MASK (0x7<<SCRATCH_B_CURR_UVD_INDEX_SHIFT)163#define SCRATCH_B_TARG_VCE_INDEX_SHIFT 12164#define SCRATCH_B_TARG_VCE_INDEX_MASK (0x7<<SCRATCH_B_TARG_VCE_INDEX_SHIFT)165#define SCRATCH_B_CURR_VCE_INDEX_SHIFT 15166#define SCRATCH_B_CURR_VCE_INDEX_MASK (0x7<<SCRATCH_B_CURR_VCE_INDEX_SHIFT)167#define SCRATCH_B_TARG_ACP_INDEX_SHIFT 18168#define SCRATCH_B_TARG_ACP_INDEX_MASK (0x7<<SCRATCH_B_TARG_ACP_INDEX_SHIFT)169#define SCRATCH_B_CURR_ACP_INDEX_SHIFT 21170#define SCRATCH_B_CURR_ACP_INDEX_MASK (0x7<<SCRATCH_B_CURR_ACP_INDEX_SHIFT)171#define SCRATCH_B_TARG_SAMU_INDEX_SHIFT 24172#define SCRATCH_B_TARG_SAMU_INDEX_MASK (0x7<<SCRATCH_B_TARG_SAMU_INDEX_SHIFT)173#define SCRATCH_B_CURR_SAMU_INDEX_SHIFT 27174#define SCRATCH_B_CURR_SAMU_INDEX_MASK (0x7<<SCRATCH_B_CURR_SAMU_INDEX_SHIFT)175176/* Virtualization Defines */177#define CG_XDMA_MASK 0x1178#define CG_XDMA_SHIFT 0179#define CG_UVD_MASK 0x2180#define CG_UVD_SHIFT 1181#define CG_VCE_MASK 0x4182#define CG_VCE_SHIFT 2183#define CG_SAMU_MASK 0x8184#define CG_SAMU_SHIFT 3185#define CG_GFX_MASK 0x10186#define CG_GFX_SHIFT 4187#define CG_SDMA_MASK 0x20188#define CG_SDMA_SHIFT 5189#define CG_HDP_MASK 0x40190#define CG_HDP_SHIFT 6191#define CG_MC_MASK 0x80192#define CG_MC_SHIFT 7193#define CG_DRM_MASK 0x100194#define CG_DRM_SHIFT 8195#define CG_ROM_MASK 0x200196#define CG_ROM_SHIFT 9197#define CG_BIF_MASK 0x400198#define CG_BIF_SHIFT 10199200201#define SMU74_DTE_ITERATIONS 5202#define SMU74_DTE_SOURCES 3203#define SMU74_DTE_SINKS 1204#define SMU74_NUM_CPU_TES 0205#define SMU74_NUM_GPU_TES 1206#define SMU74_NUM_NON_TES 2207#define SMU74_DTE_FAN_SCALAR_MIN 0x100208#define SMU74_DTE_FAN_SCALAR_MAX 0x166209#define SMU74_DTE_FAN_TEMP_MAX 93210#define SMU74_DTE_FAN_TEMP_MIN 83211212213#if defined SMU__FUSION_ONLY214#define SMU7_DTE_ITERATIONS 5215#define SMU7_DTE_SOURCES 5216#define SMU7_DTE_SINKS 3217#define SMU7_NUM_CPU_TES 2218#define SMU7_NUM_GPU_TES 1219#define SMU7_NUM_NON_TES 2220#endif221222struct SMU7_HystController_Data {223uint8_t waterfall_up;224uint8_t waterfall_down;225uint8_t waterfall_limit;226uint8_t spare;227uint16_t release_cnt;228uint16_t release_limit;229};230231typedef struct SMU7_HystController_Data SMU7_HystController_Data;232233struct SMU74_PIDController {234uint32_t Ki;235int32_t LFWindupUpperLim;236int32_t LFWindupLowerLim;237uint32_t StatePrecision;238uint32_t LfPrecision;239uint32_t LfOffset;240uint32_t MaxState;241uint32_t MaxLfFraction;242uint32_t StateShift;243};244245typedef struct SMU74_PIDController SMU74_PIDController;246247struct SMU7_LocalDpmScoreboard {248uint32_t PercentageBusy;249250int32_t PIDError;251int32_t PIDIntegral;252int32_t PIDOutput;253254uint32_t SigmaDeltaAccum;255uint32_t SigmaDeltaOutput;256uint32_t SigmaDeltaLevel;257258uint32_t UtilizationSetpoint;259260uint8_t TdpClampMode;261uint8_t TdcClampMode;262uint8_t ThermClampMode;263uint8_t VoltageBusy;264265int8_t CurrLevel;266int8_t TargLevel;267uint8_t LevelChangeInProgress;268uint8_t UpHyst;269270uint8_t DownHyst;271uint8_t VoltageDownHyst;272uint8_t DpmEnable;273uint8_t DpmRunning;274275uint8_t DpmForce;276uint8_t DpmForceLevel;277uint8_t DisplayWatermark;278uint8_t McArbIndex;279280uint32_t MinimumPerfSclk;281282uint8_t AcpiReq;283uint8_t AcpiAck;284uint8_t GfxClkSlow;285uint8_t GpioClampMode;286287uint8_t spare2;288uint8_t EnabledLevelsChange;289uint8_t DteClampMode;290uint8_t FpsClampMode;291292uint16_t LevelResidencyCounters[SMU74_MAX_LEVELS_GRAPHICS];293uint16_t LevelSwitchCounters[SMU74_MAX_LEVELS_GRAPHICS];294295void (*TargetStateCalculator)(uint8_t);296void (*SavedTargetStateCalculator)(uint8_t);297298uint16_t AutoDpmInterval;299uint16_t AutoDpmRange;300301uint8_t FpsEnabled;302uint8_t MaxPerfLevel;303uint8_t AllowLowClkInterruptToHost;304uint8_t FpsRunning;305306uint32_t MaxAllowedFrequency;307308uint32_t FilteredSclkFrequency;309uint32_t LastSclkFrequency;310uint32_t FilteredSclkFrequencyCnt;311312uint8_t MinPerfLevel;313uint8_t padding[3];314315uint16_t FpsAlpha;316uint16_t DeltaTime;317uint32_t CurrentFps;318uint32_t FilteredFps;319uint32_t FrameCount;320uint32_t FrameCountLast;321uint16_t FpsTargetScalar;322uint16_t FpsWaterfallLimitScalar;323uint16_t FpsAlphaScalar;324uint16_t spare8;325SMU7_HystController_Data HystControllerData;326};327328typedef struct SMU7_LocalDpmScoreboard SMU7_LocalDpmScoreboard;329330#define SMU7_MAX_VOLTAGE_CLIENTS 12331332typedef uint8_t (*VoltageChangeHandler_t)(uint16_t, uint8_t);333334#define VDDC_MASK 0x00007FFF335#define VDDC_SHIFT 0336#define VDDCI_MASK 0x3FFF8000337#define VDDCI_SHIFT 15338#define PHASES_MASK 0xC0000000339#define PHASES_SHIFT 30340341typedef uint32_t SMU_VoltageLevel;342343struct SMU7_VoltageScoreboard {344345SMU_VoltageLevel TargetVoltage;346uint16_t MaxVid;347uint8_t HighestVidOffset;348uint8_t CurrentVidOffset;349350uint16_t CurrentVddc;351uint16_t CurrentVddci;352353354uint8_t ControllerBusy;355uint8_t CurrentVid;356uint8_t CurrentVddciVid;357uint8_t padding;358359SMU_VoltageLevel RequestedVoltage[SMU7_MAX_VOLTAGE_CLIENTS];360SMU_VoltageLevel TargetVoltageState;361uint8_t EnabledRequest[SMU7_MAX_VOLTAGE_CLIENTS];362363uint8_t padding2;364uint8_t padding3;365uint8_t ControllerEnable;366uint8_t ControllerRunning;367uint16_t CurrentStdVoltageHiSidd;368uint16_t CurrentStdVoltageLoSidd;369uint8_t OverrideVoltage;370uint8_t padding4;371uint8_t padding5;372uint8_t CurrentPhases;373374VoltageChangeHandler_t ChangeVddc;375376VoltageChangeHandler_t ChangeVddci;377VoltageChangeHandler_t ChangePhase;378VoltageChangeHandler_t ChangeMvdd;379380VoltageChangeHandler_t functionLinks[6];381382uint16_t *VddcFollower1;383384int16_t Driver_OD_RequestedVidOffset1;385int16_t Driver_OD_RequestedVidOffset2;386};387388typedef struct SMU7_VoltageScoreboard SMU7_VoltageScoreboard;389390#define SMU7_MAX_PCIE_LINK_SPEEDS 3 /* 0:Gen1 1:Gen2 2:Gen3 */391392struct SMU7_PCIeLinkSpeedScoreboard {393uint8_t DpmEnable;394uint8_t DpmRunning;395uint8_t DpmForce;396uint8_t DpmForceLevel;397398uint8_t CurrentLinkSpeed;399uint8_t EnabledLevelsChange;400uint16_t AutoDpmInterval;401402uint16_t AutoDpmRange;403uint16_t AutoDpmCount;404405uint8_t DpmMode;406uint8_t AcpiReq;407uint8_t AcpiAck;408uint8_t CurrentLinkLevel;409410};411412typedef struct SMU7_PCIeLinkSpeedScoreboard SMU7_PCIeLinkSpeedScoreboard;413414#define SMU7_LKGE_LUT_NUM_OF_TEMP_ENTRIES 16415#define SMU7_LKGE_LUT_NUM_OF_VOLT_ENTRIES 16416417#define SMU7_SCALE_I 7418#define SMU7_SCALE_R 12419420struct SMU7_PowerScoreboard {421PowerCalculatorData_t VddcPowerData[SID_OPTION_COUNT];422423uint32_t TotalGpuPower;424uint32_t TdcCurrent;425426uint16_t VddciTotalPower;427uint16_t sparesasfsdfd;428uint16_t Vddr1Power;429uint16_t RocPower;430431uint16_t CalcMeasPowerBlend;432uint8_t SidOptionPower;433uint8_t SidOptionCurrent;434435uint32_t WinTime;436437uint16_t Telemetry_1_slope;438uint16_t Telemetry_2_slope;439int32_t Telemetry_1_offset;440int32_t Telemetry_2_offset;441442uint32_t VddcCurrentTelemetry;443uint32_t VddGfxCurrentTelemetry;444uint32_t VddcPowerTelemetry;445uint32_t VddGfxPowerTelemetry;446uint32_t VddciPowerTelemetry;447448uint32_t VddcPower;449uint32_t VddGfxPower;450uint32_t VddciPower;451452uint32_t TelemetryCurrent[2];453uint32_t TelemetryVoltage[2];454uint32_t TelemetryPower[2];455};456457typedef struct SMU7_PowerScoreboard SMU7_PowerScoreboard;458459struct SMU7_ThermalScoreboard {460int16_t GpuLimit;461int16_t GpuHyst;462uint16_t CurrGnbTemp;463uint16_t FilteredGnbTemp;464465uint8_t ControllerEnable;466uint8_t ControllerRunning;467uint8_t AutoTmonCalInterval;468uint8_t AutoTmonCalEnable;469470uint8_t ThermalDpmEnabled;471uint8_t SclkEnabledMask;472uint8_t spare[2];473int32_t temperature_gradient;474475SMU7_HystController_Data HystControllerData;476int32_t WeightedSensorTemperature;477uint16_t TemperatureLimit[SMU74_MAX_LEVELS_GRAPHICS];478uint32_t Alpha;479};480481typedef struct SMU7_ThermalScoreboard SMU7_ThermalScoreboard;482483#define SMU7_SCLK_DPM_CONFIG_MASK 0x01484#define SMU7_VOLTAGE_CONTROLLER_CONFIG_MASK 0x02485#define SMU7_THERMAL_CONTROLLER_CONFIG_MASK 0x04486#define SMU7_MCLK_DPM_CONFIG_MASK 0x08487#define SMU7_UVD_DPM_CONFIG_MASK 0x10488#define SMU7_VCE_DPM_CONFIG_MASK 0x20489#define SMU7_ACP_DPM_CONFIG_MASK 0x40490#define SMU7_SAMU_DPM_CONFIG_MASK 0x80491#define SMU7_PCIEGEN_DPM_CONFIG_MASK 0x100492493#define SMU7_ACP_MCLK_HANDSHAKE_DISABLE 0x00000001494#define SMU7_ACP_SCLK_HANDSHAKE_DISABLE 0x00000002495#define SMU7_UVD_MCLK_HANDSHAKE_DISABLE 0x00000100496#define SMU7_UVD_SCLK_HANDSHAKE_DISABLE 0x00000200497#define SMU7_VCE_MCLK_HANDSHAKE_DISABLE 0x00010000498#define SMU7_VCE_SCLK_HANDSHAKE_DISABLE 0x00020000499500/* All 'soft registers' should be uint32_t. */501struct SMU74_SoftRegisters {502uint32_t RefClockFrequency;503uint32_t PmTimerPeriod;504uint32_t FeatureEnables;505506uint32_t PreVBlankGap;507uint32_t VBlankTimeout;508uint32_t TrainTimeGap;509510uint32_t MvddSwitchTime;511uint32_t LongestAcpiTrainTime;512uint32_t AcpiDelay;513uint32_t G5TrainTime;514uint32_t DelayMpllPwron;515uint32_t VoltageChangeTimeout;516517uint32_t HandshakeDisables;518519uint8_t DisplayPhy1Config;520uint8_t DisplayPhy2Config;521uint8_t DisplayPhy3Config;522uint8_t DisplayPhy4Config;523524uint8_t DisplayPhy5Config;525uint8_t DisplayPhy6Config;526uint8_t DisplayPhy7Config;527uint8_t DisplayPhy8Config;528529uint32_t AverageGraphicsActivity;530uint32_t AverageMemoryActivity;531uint32_t AverageGioActivity;532533uint8_t SClkDpmEnabledLevels;534uint8_t MClkDpmEnabledLevels;535uint8_t LClkDpmEnabledLevels;536uint8_t PCIeDpmEnabledLevels;537538uint8_t UVDDpmEnabledLevels;539uint8_t SAMUDpmEnabledLevels;540uint8_t ACPDpmEnabledLevels;541uint8_t VCEDpmEnabledLevels;542543uint32_t DRAM_LOG_ADDR_H;544uint32_t DRAM_LOG_ADDR_L;545uint32_t DRAM_LOG_PHY_ADDR_H;546uint32_t DRAM_LOG_PHY_ADDR_L;547uint32_t DRAM_LOG_BUFF_SIZE;548uint32_t UlvEnterCount;549uint32_t UlvTime;550uint32_t UcodeLoadStatus;551uint32_t AllowMvddSwitch;552uint8_t Activity_Weight;553uint8_t Reserved8[3];554};555556typedef struct SMU74_SoftRegisters SMU74_SoftRegisters;557558struct SMU74_Firmware_Header {559uint32_t Digest[5];560uint32_t Version;561uint32_t HeaderSize;562uint32_t Flags;563uint32_t EntryPoint;564uint32_t CodeSize;565uint32_t ImageSize;566567uint32_t Rtos;568uint32_t SoftRegisters;569uint32_t DpmTable;570uint32_t FanTable;571uint32_t CacConfigTable;572uint32_t CacStatusTable;573574uint32_t mcRegisterTable;575576uint32_t mcArbDramTimingTable;577578uint32_t PmFuseTable;579uint32_t Globals;580uint32_t ClockStretcherTable;581uint32_t VftTable;582uint32_t Reserved1;583uint32_t AvfsTable;584uint32_t AvfsCksOffGbvTable;585uint32_t AvfsMeanNSigma;586uint32_t AvfsSclkOffsetTable;587uint32_t Reserved[16];588uint32_t Signature;589};590591typedef struct SMU74_Firmware_Header SMU74_Firmware_Header;592593#define SMU7_FIRMWARE_HEADER_LOCATION 0x20000594595enum DisplayConfig {596PowerDown = 1,597DP54x4,598DP54x2,599DP54x1,600DP27x4,601DP27x2,602DP27x1,603HDMI297,604HDMI162,605LVDS,606DP324x4,607DP324x2,608DP324x1609};610611612#define MC_BLOCK_COUNT 1613#define CPL_BLOCK_COUNT 5614#define SE_BLOCK_COUNT 15615#define GC_BLOCK_COUNT 24616617struct SMU7_Local_Cac {618uint8_t BlockId;619uint8_t SignalId;620uint8_t Threshold;621uint8_t Padding;622};623624typedef struct SMU7_Local_Cac SMU7_Local_Cac;625626struct SMU7_Local_Cac_Table {627628SMU7_Local_Cac CplLocalCac[CPL_BLOCK_COUNT];629SMU7_Local_Cac McLocalCac[MC_BLOCK_COUNT];630SMU7_Local_Cac SeLocalCac[SE_BLOCK_COUNT];631SMU7_Local_Cac GcLocalCac[GC_BLOCK_COUNT];632};633634typedef struct SMU7_Local_Cac_Table SMU7_Local_Cac_Table;635636#pragma pack(pop)637638/* Description of Clock Gating bitmask for Tonga:639* System Clock Gating640*/641#define CG_SYS_BITMASK_FIRST_BIT 0 /* First bit of Sys CG bitmask */642#define CG_SYS_BITMASK_LAST_BIT 9 /* Last bit of Sys CG bitmask */643#define CG_SYS_BIF_MGLS_SHIFT 0644#define CG_SYS_ROM_SHIFT 1645#define CG_SYS_MC_MGCG_SHIFT 2646#define CG_SYS_MC_MGLS_SHIFT 3647#define CG_SYS_SDMA_MGCG_SHIFT 4648#define CG_SYS_SDMA_MGLS_SHIFT 5649#define CG_SYS_DRM_MGCG_SHIFT 6650#define CG_SYS_HDP_MGCG_SHIFT 7651#define CG_SYS_HDP_MGLS_SHIFT 8652#define CG_SYS_DRM_MGLS_SHIFT 9653#define CG_SYS_BIF_MGCG_SHIFT 10654655#define CG_SYS_BIF_MGLS_MASK 0x1656#define CG_SYS_ROM_MASK 0x2657#define CG_SYS_MC_MGCG_MASK 0x4658#define CG_SYS_MC_MGLS_MASK 0x8659#define CG_SYS_SDMA_MGCG_MASK 0x10660#define CG_SYS_SDMA_MGLS_MASK 0x20661#define CG_SYS_DRM_MGCG_MASK 0x40662#define CG_SYS_HDP_MGCG_MASK 0x80663#define CG_SYS_HDP_MGLS_MASK 0x100664#define CG_SYS_DRM_MGLS_MASK 0x200665#define CG_SYS_BIF_MGCG_MASK 0x400666667/* Graphics Clock Gating */668#define CG_GFX_BITMASK_FIRST_BIT 16 /* First bit of Gfx CG bitmask */669#define CG_GFX_BITMASK_LAST_BIT 24 /* Last bit of Gfx CG bitmask */670671#define CG_GFX_CGCG_SHIFT 16672#define CG_GFX_CGLS_SHIFT 17673#define CG_CPF_MGCG_SHIFT 18674#define CG_RLC_MGCG_SHIFT 19675#define CG_GFX_OTHERS_MGCG_SHIFT 20676#define CG_GFX_3DCG_SHIFT 21677#define CG_GFX_3DLS_SHIFT 22678#define CG_GFX_RLC_LS_SHIFT 23679#define CG_GFX_CP_LS_SHIFT 24680681#define CG_GFX_CGCG_MASK 0x00010000682#define CG_GFX_CGLS_MASK 0x00020000683#define CG_CPF_MGCG_MASK 0x00040000684#define CG_RLC_MGCG_MASK 0x00080000685#define CG_GFX_OTHERS_MGCG_MASK 0x00100000686#define CG_GFX_3DCG_MASK 0x00200000687#define CG_GFX_3DLS_MASK 0x00400000688#define CG_GFX_RLC_LS_MASK 0x00800000689#define CG_GFX_CP_LS_MASK 0x01000000690691692/* Voltage Regulator Configuration693VR Config info is contained in dpmTable.VRConfig */694695#define VRCONF_VDDC_MASK 0x000000FF696#define VRCONF_VDDC_SHIFT 0697#define VRCONF_VDDGFX_MASK 0x0000FF00698#define VRCONF_VDDGFX_SHIFT 8699#define VRCONF_VDDCI_MASK 0x00FF0000700#define VRCONF_VDDCI_SHIFT 16701#define VRCONF_MVDD_MASK 0xFF000000702#define VRCONF_MVDD_SHIFT 24703704#define VR_MERGED_WITH_VDDC 0705#define VR_SVI2_PLANE_1 1706#define VR_SVI2_PLANE_2 2707#define VR_SMIO_PATTERN_1 3708#define VR_SMIO_PATTERN_2 4709#define VR_STATIC_VOLTAGE 5710711/* Clock Stretcher Configuration */712713#define CLOCK_STRETCHER_MAX_ENTRIES 0x4714#define CKS_LOOKUPTable_MAX_ENTRIES 0x4715716/* The 'settings' field is subdivided in the following way: */717#define CLOCK_STRETCHER_SETTING_DDT_MASK 0x01718#define CLOCK_STRETCHER_SETTING_DDT_SHIFT 0x0719#define CLOCK_STRETCHER_SETTING_STRETCH_AMOUNT_MASK 0x1E720#define CLOCK_STRETCHER_SETTING_STRETCH_AMOUNT_SHIFT 0x1721#define CLOCK_STRETCHER_SETTING_ENABLE_MASK 0x80722#define CLOCK_STRETCHER_SETTING_ENABLE_SHIFT 0x7723724struct SMU_ClockStretcherDataTableEntry {725uint8_t minVID;726uint8_t maxVID;727uint16_t setting;728};729typedef struct SMU_ClockStretcherDataTableEntry SMU_ClockStretcherDataTableEntry;730731struct SMU_ClockStretcherDataTable {732SMU_ClockStretcherDataTableEntry ClockStretcherDataTableEntry[CLOCK_STRETCHER_MAX_ENTRIES];733};734typedef struct SMU_ClockStretcherDataTable SMU_ClockStretcherDataTable;735736struct SMU_CKS_LOOKUPTableEntry {737uint16_t minFreq;738uint16_t maxFreq;739740uint8_t setting;741uint8_t padding[3];742};743typedef struct SMU_CKS_LOOKUPTableEntry SMU_CKS_LOOKUPTableEntry;744745struct SMU_CKS_LOOKUPTable {746SMU_CKS_LOOKUPTableEntry CKS_LOOKUPTableEntry[CKS_LOOKUPTable_MAX_ENTRIES];747};748typedef struct SMU_CKS_LOOKUPTable SMU_CKS_LOOKUPTable;749750struct AgmAvfsData_t {751uint16_t avgPsmCount[28];752uint16_t minPsmCount[28];753};754755typedef struct AgmAvfsData_t AgmAvfsData_t;756757enum VFT_COLUMNS {758SCLK0,759SCLK1,760SCLK2,761SCLK3,762SCLK4,763SCLK5,764SCLK6,765SCLK7,766767NUM_VFT_COLUMNS768};769770#define VFT_TABLE_DEFINED771772#define TEMP_RANGE_MAXSTEPS 12773774struct VFT_CELL_t {775uint16_t Voltage;776};777778typedef struct VFT_CELL_t VFT_CELL_t;779780struct VFT_TABLE_t {781VFT_CELL_t Cell[TEMP_RANGE_MAXSTEPS][NUM_VFT_COLUMNS];782uint16_t AvfsGbv[NUM_VFT_COLUMNS];783uint16_t BtcGbv[NUM_VFT_COLUMNS];784uint16_t Temperature[TEMP_RANGE_MAXSTEPS];785786uint8_t NumTemperatureSteps;787uint8_t padding[3];788};789790typedef struct VFT_TABLE_t VFT_TABLE_t;791792793/* Total margin, root mean square of Fmax + DC + Platform */794struct AVFS_Margin_t {795VFT_CELL_t Cell[NUM_VFT_COLUMNS];796};797typedef struct AVFS_Margin_t AVFS_Margin_t;798799#define BTCGB_VDROOP_TABLE_MAX_ENTRIES 2800#define AVFSGB_VDROOP_TABLE_MAX_ENTRIES 2801802struct GB_VDROOP_TABLE_t {803int32_t a0;804int32_t a1;805int32_t a2;806uint32_t spare;807};808typedef struct GB_VDROOP_TABLE_t GB_VDROOP_TABLE_t;809810struct AVFS_CksOff_Gbv_t {811VFT_CELL_t Cell[NUM_VFT_COLUMNS];812};813typedef struct AVFS_CksOff_Gbv_t AVFS_CksOff_Gbv_t;814815struct AVFS_meanNsigma_t {816uint32_t Aconstant[3];817uint16_t DC_tol_sigma;818uint16_t Platform_mean;819uint16_t Platform_sigma;820uint16_t PSM_Age_CompFactor;821uint8_t Static_Voltage_Offset[NUM_VFT_COLUMNS];822};823typedef struct AVFS_meanNsigma_t AVFS_meanNsigma_t;824825struct AVFS_Sclk_Offset_t {826uint16_t Sclk_Offset[8];827};828typedef struct AVFS_Sclk_Offset_t AVFS_Sclk_Offset_t;829830#endif831832833834835