Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2015 Advanced Micro Devices, Inc.
0003  *
0004  * Permission is hereby granted, free of charge, to any person obtaining a
0005  * copy of this software and associated documentation files (the "Software"),
0006  * to deal in the Software without restriction, including without limitation
0007  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
0008  * and/or sell copies of the Software, and to permit persons to whom the
0009  * Software is furnished to do so, subject to the following conditions:
0010  *
0011  * The above copyright notice and this permission notice shall be included in
0012  * all copies or substantial portions of the Software.
0013  *
0014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
0017  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
0018  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
0019  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0020  * OTHER DEALINGS IN THE SOFTWARE.
0021  *
0022  */
0023 
0024 #ifndef TONGA_PPTABLE_H
0025 #define TONGA_PPTABLE_H
0026 
0027 /** \file
0028  * This is a PowerPlay table header file
0029  */
0030 #pragma pack(push, 1)
0031 
0032 #include "hwmgr.h"
0033 
0034 #define ATOM_TONGA_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f
0035 #define ATOM_TONGA_PP_FANPARAMETERS_NOFAN                                 0x80    /* No fan is connected to this controller. */
0036 
0037 #define ATOM_TONGA_PP_THERMALCONTROLLER_NONE      0
0038 #define ATOM_TONGA_PP_THERMALCONTROLLER_LM96163   17
0039 #define ATOM_TONGA_PP_THERMALCONTROLLER_TONGA     21
0040 #define ATOM_TONGA_PP_THERMALCONTROLLER_FIJI      22
0041 
0042 /*
0043  * Thermal controller 'combo type' to use an external controller for Fan control and an internal controller for thermal.
0044  * We probably should reserve the bit 0x80 for this use.
0045  * To keep the number of these types low we should also use the same code for all ASICs (i.e. do not distinguish RV6xx and RV7xx Internal here).
0046  * The driver can pick the correct internal controller based on the ASIC.
0047  */
0048 
0049 #define ATOM_TONGA_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL   0x89    /* ADT7473 Fan Control + Internal Thermal Controller */
0050 #define ATOM_TONGA_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL   0x8D    /* EMC2103 Fan Control + Internal Thermal Controller */
0051 
0052 /*/* ATOM_TONGA_POWERPLAYTABLE::ulPlatformCaps */
0053 #define ATOM_TONGA_PP_PLATFORM_CAP_VDDGFX_CONTROL              0x1            /* This cap indicates whether vddgfx will be a separated power rail. */
0054 #define ATOM_TONGA_PP_PLATFORM_CAP_POWERPLAY                   0x2            /* This cap indicates whether this is a mobile part and CCC need to show Powerplay page. */
0055 #define ATOM_TONGA_PP_PLATFORM_CAP_SBIOSPOWERSOURCE            0x4            /* This cap indicates whether power source notificaiton is done by SBIOS directly. */
0056 #define ATOM_TONGA_PP_PLATFORM_CAP_DISABLE_VOLTAGE_ISLAND      0x8            /* Enable the option to overwrite voltage island feature to be disabled, regardless of VddGfx power rail support. */
0057 #define ____RETIRE16____                                0x10
0058 #define ATOM_TONGA_PP_PLATFORM_CAP_HARDWAREDC                 0x20            /* This cap indicates whether power source notificaiton is done by GPIO directly. */
0059 #define ____RETIRE64____                                0x40
0060 #define ____RETIRE128____                               0x80
0061 #define ____RETIRE256____                              0x100
0062 #define ____RETIRE512____                              0x200
0063 #define ____RETIRE1024____                             0x400
0064 #define ____RETIRE2048____                             0x800
0065 #define ATOM_TONGA_PP_PLATFORM_CAP_MVDD_CONTROL             0x1000            /* This cap indicates dynamic MVDD is required. Uncheck to disable it. */
0066 #define ____RETIRE2000____                            0x2000
0067 #define ____RETIRE4000____                            0x4000
0068 #define ATOM_TONGA_PP_PLATFORM_CAP_VDDCI_CONTROL            0x8000            /* This cap indicates dynamic VDDCI is required. Uncheck to disable it. */
0069 #define ____RETIRE10000____                          0x10000
0070 #define ATOM_TONGA_PP_PLATFORM_CAP_BACO                    0x20000            /* Enable to indicate the driver supports BACO state. */
0071 
0072 #define ATOM_TONGA_PP_PLATFORM_CAP_OUTPUT_THERMAL2GPIO17         0x100000     /* Enable to indicate the driver supports thermal2GPIO17. */
0073 #define ATOM_TONGA_PP_PLATFORM_COMBINE_PCC_WITH_THERMAL_SIGNAL  0x1000000     /* Enable to indicate if thermal and PCC are sharing the same GPIO */
0074 #define ATOM_TONGA_PLATFORM_LOAD_POST_PRODUCTION_FIRMWARE       0x2000000
0075 
0076 /* ATOM_PPLIB_NONCLOCK_INFO::usClassification */
0077 #define ATOM_PPLIB_CLASSIFICATION_UI_MASK               0x0007
0078 #define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT              0
0079 #define ATOM_PPLIB_CLASSIFICATION_UI_NONE               0
0080 #define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY            1
0081 #define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED           3
0082 #define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE        5
0083 /* 2, 4, 6, 7 are reserved */
0084 
0085 #define ATOM_PPLIB_CLASSIFICATION_BOOT                  0x0008
0086 #define ATOM_PPLIB_CLASSIFICATION_THERMAL               0x0010
0087 #define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE    0x0020
0088 #define ATOM_PPLIB_CLASSIFICATION_REST                  0x0040
0089 #define ATOM_PPLIB_CLASSIFICATION_FORCED                0x0080
0090 #define ATOM_PPLIB_CLASSIFICATION_ACPI                  0x1000
0091 
0092 /* ATOM_PPLIB_NONCLOCK_INFO::usClassification2 */
0093 #define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2 0x0001
0094 
0095 #define ATOM_Tonga_DISALLOW_ON_DC                       0x00004000
0096 #define ATOM_Tonga_ENABLE_VARIBRIGHT                    0x00008000
0097 
0098 #define ATOM_Tonga_TABLE_REVISION_TONGA                 7
0099 
0100 typedef struct _ATOM_Tonga_POWERPLAYTABLE {
0101     ATOM_COMMON_TABLE_HEADER sHeader;
0102 
0103     UCHAR  ucTableRevision;
0104     USHORT usTableSize;                     /*the size of header structure */
0105 
0106     ULONG   ulGoldenPPID;
0107     ULONG   ulGoldenRevision;
0108     USHORT  usFormatID;
0109 
0110     USHORT  usVoltageTime;                   /*in microseconds */
0111     ULONG   ulPlatformCaps;                   /*See ATOM_Tonga_CAPS_* */
0112 
0113     ULONG   ulMaxODEngineClock;                /*For Overdrive.  */
0114     ULONG   ulMaxODMemoryClock;                /*For Overdrive. */
0115 
0116     USHORT  usPowerControlLimit;
0117     USHORT  usUlvVoltageOffset;               /*in mv units */
0118 
0119     USHORT  usStateArrayOffset;               /*points to ATOM_Tonga_State_Array */
0120     USHORT  usFanTableOffset;                 /*points to ATOM_Tonga_Fan_Table */
0121     USHORT  usThermalControllerOffset;         /*points to ATOM_Tonga_Thermal_Controller */
0122     USHORT  usReserv;                          /*CustomThermalPolicy removed for Tonga. Keep this filed as reserved. */
0123 
0124     USHORT  usMclkDependencyTableOffset;       /*points to ATOM_Tonga_MCLK_Dependency_Table */
0125     USHORT  usSclkDependencyTableOffset;       /*points to ATOM_Tonga_SCLK_Dependency_Table */
0126     USHORT  usVddcLookupTableOffset;           /*points to ATOM_Tonga_Voltage_Lookup_Table */
0127     USHORT  usVddgfxLookupTableOffset;      /*points to ATOM_Tonga_Voltage_Lookup_Table */
0128 
0129     USHORT  usMMDependencyTableOffset;        /*points to ATOM_Tonga_MM_Dependency_Table */
0130 
0131     USHORT  usVCEStateTableOffset;             /*points to ATOM_Tonga_VCE_State_Table; */
0132 
0133     USHORT  usPPMTableOffset;                 /*points to ATOM_Tonga_PPM_Table */
0134     USHORT  usPowerTuneTableOffset;           /*points to ATOM_PowerTune_Table */
0135 
0136     USHORT  usHardLimitTableOffset;            /*points to ATOM_Tonga_Hard_Limit_Table */
0137 
0138     USHORT  usPCIETableOffset;                /*points to ATOM_Tonga_PCIE_Table */
0139 
0140     USHORT  usGPIOTableOffset;                /*points to ATOM_Tonga_GPIO_Table */
0141 
0142     USHORT  usReserved[6];                     /*TODO: modify reserved size to fit structure aligning */
0143 } ATOM_Tonga_POWERPLAYTABLE;
0144 
0145 typedef struct _ATOM_Tonga_State {
0146     UCHAR  ucEngineClockIndexHigh;
0147     UCHAR  ucEngineClockIndexLow;
0148 
0149     UCHAR  ucMemoryClockIndexHigh;
0150     UCHAR  ucMemoryClockIndexLow;
0151 
0152     UCHAR  ucPCIEGenLow;
0153     UCHAR  ucPCIEGenHigh;
0154 
0155     UCHAR  ucPCIELaneLow;
0156     UCHAR  ucPCIELaneHigh;
0157 
0158     USHORT usClassification;
0159     ULONG ulCapsAndSettings;
0160     USHORT usClassification2;
0161     UCHAR  ucUnused[4];
0162 } ATOM_Tonga_State;
0163 
0164 typedef struct _ATOM_Tonga_State_Array {
0165     UCHAR ucRevId;
0166     UCHAR ucNumEntries;     /* Number of entries. */
0167     ATOM_Tonga_State entries[1];    /* Dynamically allocate entries. */
0168 } ATOM_Tonga_State_Array;
0169 
0170 typedef struct _ATOM_Tonga_MCLK_Dependency_Record {
0171     UCHAR  ucVddcInd;   /* Vddc voltage */
0172     USHORT usVddci;
0173     USHORT usVddgfxOffset;  /* Offset relative to Vddc voltage */
0174     USHORT usMvdd;
0175     ULONG ulMclk;
0176     USHORT usReserved;
0177 } ATOM_Tonga_MCLK_Dependency_Record;
0178 
0179 typedef struct _ATOM_Tonga_MCLK_Dependency_Table {
0180     UCHAR ucRevId;
0181     UCHAR ucNumEntries;                                         /* Number of entries. */
0182     ATOM_Tonga_MCLK_Dependency_Record entries[1];               /* Dynamically allocate entries. */
0183 } ATOM_Tonga_MCLK_Dependency_Table;
0184 
0185 typedef struct _ATOM_Tonga_SCLK_Dependency_Record {
0186     UCHAR  ucVddInd;                                            /* Base voltage */
0187     USHORT usVddcOffset;                                        /* Offset relative to base voltage */
0188     ULONG ulSclk;
0189     USHORT usEdcCurrent;
0190     UCHAR  ucReliabilityTemperature;
0191     UCHAR  ucCKSVOffsetandDisable;                            /* Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level. */
0192 } ATOM_Tonga_SCLK_Dependency_Record;
0193 
0194 typedef struct _ATOM_Tonga_SCLK_Dependency_Table {
0195     UCHAR ucRevId;
0196     UCHAR ucNumEntries;                                         /* Number of entries. */
0197     ATOM_Tonga_SCLK_Dependency_Record entries[1];                /* Dynamically allocate entries. */
0198 } ATOM_Tonga_SCLK_Dependency_Table;
0199 
0200 typedef struct _ATOM_Polaris_SCLK_Dependency_Record {
0201     UCHAR  ucVddInd;                                            /* Base voltage */
0202     USHORT usVddcOffset;                                        /* Offset relative to base voltage */
0203     ULONG ulSclk;
0204     USHORT usEdcCurrent;
0205     UCHAR  ucReliabilityTemperature;
0206     UCHAR  ucCKSVOffsetandDisable;          /* Bits 0~6: Voltage offset for CKS, Bit 7: Disable/enable for the SCLK level. */
0207     ULONG  ulSclkOffset;
0208 } ATOM_Polaris_SCLK_Dependency_Record;
0209 
0210 typedef struct _ATOM_Polaris_SCLK_Dependency_Table {
0211     UCHAR ucRevId;
0212     UCHAR ucNumEntries;                         /* Number of entries. */
0213     ATOM_Polaris_SCLK_Dependency_Record entries[1];              /* Dynamically allocate entries. */
0214 } ATOM_Polaris_SCLK_Dependency_Table;
0215 
0216 typedef struct _ATOM_Tonga_PCIE_Record {
0217     UCHAR ucPCIEGenSpeed;
0218     UCHAR usPCIELaneWidth;
0219     UCHAR ucReserved[2];
0220 } ATOM_Tonga_PCIE_Record;
0221 
0222 typedef struct _ATOM_Tonga_PCIE_Table {
0223     UCHAR ucRevId;
0224     UCHAR ucNumEntries;                                         /* Number of entries. */
0225     ATOM_Tonga_PCIE_Record entries[1];                          /* Dynamically allocate entries. */
0226 } ATOM_Tonga_PCIE_Table;
0227 
0228 typedef struct _ATOM_Polaris10_PCIE_Record {
0229     UCHAR ucPCIEGenSpeed;
0230     UCHAR usPCIELaneWidth;
0231     UCHAR ucReserved[2];
0232     ULONG ulPCIE_Sclk;
0233 } ATOM_Polaris10_PCIE_Record;
0234 
0235 typedef struct _ATOM_Polaris10_PCIE_Table {
0236     UCHAR ucRevId;
0237     UCHAR ucNumEntries;                                         /* Number of entries. */
0238     ATOM_Polaris10_PCIE_Record entries[1];                      /* Dynamically allocate entries. */
0239 } ATOM_Polaris10_PCIE_Table;
0240 
0241 
0242 typedef struct _ATOM_Tonga_MM_Dependency_Record {
0243     UCHAR   ucVddcInd;                                           /* VDDC voltage */
0244     USHORT  usVddgfxOffset;                                   /* Offset relative to VDDC voltage */
0245     ULONG  ulDClk;                                              /* UVD D-clock */
0246     ULONG  ulVClk;                                              /* UVD V-clock */
0247     ULONG  ulEClk;                                              /* VCE clock */
0248     ULONG  ulAClk;                                              /* ACP clock */
0249     ULONG  ulSAMUClk;                                           /* SAMU clock */
0250 } ATOM_Tonga_MM_Dependency_Record;
0251 
0252 typedef struct _ATOM_Tonga_MM_Dependency_Table {
0253     UCHAR ucRevId;
0254     UCHAR ucNumEntries;                                         /* Number of entries. */
0255     ATOM_Tonga_MM_Dependency_Record entries[1];                /* Dynamically allocate entries. */
0256 } ATOM_Tonga_MM_Dependency_Table;
0257 
0258 typedef struct _ATOM_Tonga_Voltage_Lookup_Record {
0259     USHORT usVdd;                                              /* Base voltage */
0260     USHORT usCACLow;
0261     USHORT usCACMid;
0262     USHORT usCACHigh;
0263 } ATOM_Tonga_Voltage_Lookup_Record;
0264 
0265 typedef struct _ATOM_Tonga_Voltage_Lookup_Table {
0266     UCHAR ucRevId;
0267     UCHAR ucNumEntries;                                         /* Number of entries. */
0268     ATOM_Tonga_Voltage_Lookup_Record entries[1];                /* Dynamically allocate entries. */
0269 } ATOM_Tonga_Voltage_Lookup_Table;
0270 
0271 typedef struct _ATOM_Tonga_Fan_Table {
0272     UCHAR   ucRevId;                         /* Change this if the table format changes or version changes so that the other fields are not the same. */
0273     UCHAR   ucTHyst;                         /* Temperature hysteresis. Integer. */
0274     USHORT  usTMin;                          /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */
0275     USHORT  usTMed;                          /* The middle temperature where we change slopes. */
0276     USHORT  usTHigh;                         /* The high point above TMed for adjusting the second slope. */
0277     USHORT  usPWMMin;                        /* The minimum PWM value in percent (0.01% increments). */
0278     USHORT  usPWMMed;                        /* The PWM value (in percent) at TMed. */
0279     USHORT  usPWMHigh;                       /* The PWM value at THigh. */
0280     USHORT  usTMax;                          /* The max temperature */
0281     UCHAR   ucFanControlMode;                 /* Legacy or Fuzzy Fan mode */
0282     USHORT  usFanPWMMax;                      /* Maximum allowed fan power in percent */
0283     USHORT  usFanOutputSensitivity;       /* Sensitivity of fan reaction to temepature changes */
0284     USHORT  usFanRPMMax;                      /* The default value in RPM */
0285     ULONG  ulMinFanSCLKAcousticLimit;      /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */
0286     UCHAR   ucTargetTemperature;             /* Advanced fan controller target temperature. */
0287     UCHAR   ucMinimumPWMLimit;            /* The minimum PWM that the advanced fan controller can set.  This should be set to the highest PWM that will run the fan at its lowest RPM. */
0288     USHORT  usReserved;
0289 } ATOM_Tonga_Fan_Table;
0290 
0291 typedef struct _ATOM_Fiji_Fan_Table {
0292     UCHAR   ucRevId;                         /* Change this if the table format changes or version changes so that the other fields are not the same. */
0293     UCHAR   ucTHyst;                         /* Temperature hysteresis. Integer. */
0294     USHORT  usTMin;                          /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */
0295     USHORT  usTMed;                          /* The middle temperature where we change slopes. */
0296     USHORT  usTHigh;                         /* The high point above TMed for adjusting the second slope. */
0297     USHORT  usPWMMin;                        /* The minimum PWM value in percent (0.01% increments). */
0298     USHORT  usPWMMed;                        /* The PWM value (in percent) at TMed. */
0299     USHORT  usPWMHigh;                       /* The PWM value at THigh. */
0300     USHORT  usTMax;                          /* The max temperature */
0301     UCHAR   ucFanControlMode;                 /* Legacy or Fuzzy Fan mode */
0302     USHORT  usFanPWMMax;                      /* Maximum allowed fan power in percent */
0303     USHORT  usFanOutputSensitivity;       /* Sensitivity of fan reaction to temepature changes */
0304     USHORT  usFanRPMMax;                      /* The default value in RPM */
0305     ULONG  ulMinFanSCLKAcousticLimit;       /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */
0306     UCHAR   ucTargetTemperature;             /* Advanced fan controller target temperature. */
0307     UCHAR   ucMinimumPWMLimit;            /* The minimum PWM that the advanced fan controller can set.  This should be set to the highest PWM that will run the fan at its lowest RPM. */
0308     USHORT  usFanGainEdge;
0309     USHORT  usFanGainHotspot;
0310     USHORT  usFanGainLiquid;
0311     USHORT  usFanGainVrVddc;
0312     USHORT  usFanGainVrMvdd;
0313     USHORT  usFanGainPlx;
0314     USHORT  usFanGainHbm;
0315     USHORT  usReserved;
0316 } ATOM_Fiji_Fan_Table;
0317 
0318 typedef struct _ATOM_Polaris_Fan_Table {
0319     UCHAR   ucRevId;                         /* Change this if the table format changes or version changes so that the other fields are not the same. */
0320     UCHAR   ucTHyst;                         /* Temperature hysteresis. Integer. */
0321     USHORT  usTMin;                          /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */
0322     USHORT  usTMed;                          /* The middle temperature where we change slopes. */
0323     USHORT  usTHigh;                         /* The high point above TMed for adjusting the second slope. */
0324     USHORT  usPWMMin;                        /* The minimum PWM value in percent (0.01% increments). */
0325     USHORT  usPWMMed;                        /* The PWM value (in percent) at TMed. */
0326     USHORT  usPWMHigh;                       /* The PWM value at THigh. */
0327     USHORT  usTMax;                          /* The max temperature */
0328     UCHAR   ucFanControlMode;                 /* Legacy or Fuzzy Fan mode */
0329     USHORT  usFanPWMMax;                      /* Maximum allowed fan power in percent */
0330     USHORT  usFanOutputSensitivity;       /* Sensitivity of fan reaction to temepature changes */
0331     USHORT  usFanRPMMax;                      /* The default value in RPM */
0332     ULONG  ulMinFanSCLKAcousticLimit;       /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */
0333     UCHAR   ucTargetTemperature;             /* Advanced fan controller target temperature. */
0334     UCHAR   ucMinimumPWMLimit;            /* The minimum PWM that the advanced fan controller can set.  This should be set to the highest PWM that will run the fan at its lowest RPM. */
0335     USHORT  usFanGainEdge;
0336     USHORT  usFanGainHotspot;
0337     USHORT  usFanGainLiquid;
0338     USHORT  usFanGainVrVddc;
0339     USHORT  usFanGainVrMvdd;
0340     USHORT  usFanGainPlx;
0341     USHORT  usFanGainHbm;
0342     UCHAR   ucEnableZeroRPM;
0343     UCHAR   ucFanStopTemperature;
0344     UCHAR   ucFanStartTemperature;
0345     USHORT  usReserved;
0346 } ATOM_Polaris_Fan_Table;
0347 
0348 typedef struct _ATOM_Tonga_Thermal_Controller {
0349     UCHAR ucRevId;
0350     UCHAR ucType;          /* one of ATOM_TONGA_PP_THERMALCONTROLLER_* */
0351     UCHAR ucI2cLine;        /* as interpreted by DAL I2C */
0352     UCHAR ucI2cAddress;
0353     UCHAR ucFanParameters;  /* Fan Control Parameters. */
0354     UCHAR ucFanMinRPM;   /* Fan Minimum RPM (hundreds) -- for display purposes only. */
0355     UCHAR ucFanMaxRPM;   /* Fan Maximum RPM (hundreds) -- for display purposes only. */
0356     UCHAR ucReserved;
0357     UCHAR ucFlags;         /* to be defined */
0358 } ATOM_Tonga_Thermal_Controller;
0359 
0360 typedef struct _ATOM_Tonga_VCE_State_Record {
0361     UCHAR  ucVCEClockIndex; /*index into usVCEDependencyTableOffset of 'ATOM_Tonga_MM_Dependency_Table' type */
0362     UCHAR  ucFlag;      /* 2 bits indicates memory p-states */
0363     UCHAR  ucSCLKIndex;     /*index into ATOM_Tonga_SCLK_Dependency_Table */
0364     UCHAR  ucMCLKIndex;     /*index into ATOM_Tonga_MCLK_Dependency_Table */
0365 } ATOM_Tonga_VCE_State_Record;
0366 
0367 typedef struct _ATOM_Tonga_VCE_State_Table {
0368     UCHAR ucRevId;
0369     UCHAR ucNumEntries;
0370     ATOM_Tonga_VCE_State_Record entries[1];
0371 } ATOM_Tonga_VCE_State_Table;
0372 
0373 typedef struct _ATOM_Tonga_PowerTune_Table {
0374     UCHAR  ucRevId;
0375     USHORT usTDP;
0376     USHORT usConfigurableTDP;
0377     USHORT usTDC;
0378     USHORT usBatteryPowerLimit;
0379     USHORT usSmallPowerLimit;
0380     USHORT usLowCACLeakage;
0381     USHORT usHighCACLeakage;
0382     USHORT usMaximumPowerDeliveryLimit;
0383     USHORT usTjMax;
0384     USHORT usPowerTuneDataSetID;
0385     USHORT usEDCLimit;
0386     USHORT usSoftwareShutdownTemp;
0387     USHORT usClockStretchAmount;
0388     USHORT usReserve[2];
0389 } ATOM_Tonga_PowerTune_Table;
0390 
0391 typedef struct _ATOM_Fiji_PowerTune_Table {
0392     UCHAR  ucRevId;
0393     USHORT usTDP;
0394     USHORT usConfigurableTDP;
0395     USHORT usTDC;
0396     USHORT usBatteryPowerLimit;
0397     USHORT usSmallPowerLimit;
0398     USHORT usLowCACLeakage;
0399     USHORT usHighCACLeakage;
0400     USHORT usMaximumPowerDeliveryLimit;
0401     USHORT usTjMax;  /* For Fiji, this is also usTemperatureLimitEdge; */
0402     USHORT usPowerTuneDataSetID;
0403     USHORT usEDCLimit;
0404     USHORT usSoftwareShutdownTemp;
0405     USHORT usClockStretchAmount;
0406     USHORT usTemperatureLimitHotspot;  /*The following are added for Fiji */
0407     USHORT usTemperatureLimitLiquid1;
0408     USHORT usTemperatureLimitLiquid2;
0409     USHORT usTemperatureLimitVrVddc;
0410     USHORT usTemperatureLimitVrMvdd;
0411     USHORT usTemperatureLimitPlx;
0412     UCHAR  ucLiquid1_I2C_address;  /*Liquid */
0413     UCHAR  ucLiquid2_I2C_address;
0414     UCHAR  ucLiquid_I2C_Line;
0415     UCHAR  ucVr_I2C_address;    /*VR */
0416     UCHAR  ucVr_I2C_Line;
0417     UCHAR  ucPlx_I2C_address;  /*PLX */
0418     UCHAR  ucPlx_I2C_Line;
0419     USHORT usReserved;
0420 } ATOM_Fiji_PowerTune_Table;
0421 
0422 typedef struct _ATOM_Polaris_PowerTune_Table
0423 {
0424     UCHAR  ucRevId;
0425     USHORT usTDP;
0426     USHORT usConfigurableTDP;
0427     USHORT usTDC;
0428     USHORT usBatteryPowerLimit;
0429     USHORT usSmallPowerLimit;
0430     USHORT usLowCACLeakage;
0431     USHORT usHighCACLeakage;
0432     USHORT usMaximumPowerDeliveryLimit;
0433     USHORT usTjMax;  // For Fiji, this is also usTemperatureLimitEdge;
0434     USHORT usPowerTuneDataSetID;
0435     USHORT usEDCLimit;
0436     USHORT usSoftwareShutdownTemp;
0437     USHORT usClockStretchAmount;
0438     USHORT usTemperatureLimitHotspot;  //The following are added for Fiji
0439     USHORT usTemperatureLimitLiquid1;
0440     USHORT usTemperatureLimitLiquid2;
0441     USHORT usTemperatureLimitVrVddc;
0442     USHORT usTemperatureLimitVrMvdd;
0443     USHORT usTemperatureLimitPlx;
0444     UCHAR  ucLiquid1_I2C_address;  //Liquid
0445     UCHAR  ucLiquid2_I2C_address;
0446     UCHAR  ucLiquid_I2C_Line;
0447     UCHAR  ucVr_I2C_address;  //VR
0448     UCHAR  ucVr_I2C_Line;
0449     UCHAR  ucPlx_I2C_address;  //PLX
0450     UCHAR  ucPlx_I2C_Line;
0451     USHORT usBoostPowerLimit;
0452     UCHAR  ucCKS_LDO_REFSEL;
0453     UCHAR  ucHotSpotOnly;
0454     UCHAR  ucReserve;
0455     USHORT usReserve;
0456 } ATOM_Polaris_PowerTune_Table;
0457 
0458 #define ATOM_PPM_A_A    1
0459 #define ATOM_PPM_A_I    2
0460 typedef struct _ATOM_Tonga_PPM_Table {
0461     UCHAR   ucRevId;
0462     UCHAR   ucPpmDesign;          /*A+I or A+A */
0463     USHORT  usCpuCoreNumber;
0464     ULONG  ulPlatformTDP;
0465     ULONG  ulSmallACPlatformTDP;
0466     ULONG  ulPlatformTDC;
0467     ULONG  ulSmallACPlatformTDC;
0468     ULONG  ulApuTDP;
0469     ULONG  ulDGpuTDP;
0470     ULONG  ulDGpuUlvPower;
0471     ULONG  ulTjmax;
0472 } ATOM_Tonga_PPM_Table;
0473 
0474 typedef struct _ATOM_Tonga_Hard_Limit_Record {
0475     ULONG  ulSCLKLimit;
0476     ULONG  ulMCLKLimit;
0477     USHORT  usVddcLimit;
0478     USHORT  usVddciLimit;
0479     USHORT  usVddgfxLimit;
0480 } ATOM_Tonga_Hard_Limit_Record;
0481 
0482 typedef struct _ATOM_Tonga_Hard_Limit_Table {
0483     UCHAR ucRevId;
0484     UCHAR ucNumEntries;
0485     ATOM_Tonga_Hard_Limit_Record entries[1];
0486 } ATOM_Tonga_Hard_Limit_Table;
0487 
0488 typedef struct _ATOM_Tonga_GPIO_Table {
0489     UCHAR  ucRevId;
0490     UCHAR  ucVRHotTriggeredSclkDpmIndex;        /* If VRHot signal is triggered SCLK will be limited to this DPM level */
0491     UCHAR  ucReserve[5];
0492 } ATOM_Tonga_GPIO_Table;
0493 
0494 typedef struct _PPTable_Generic_SubTable_Header {
0495     UCHAR  ucRevId;
0496 } PPTable_Generic_SubTable_Header;
0497 
0498 
0499 #pragma pack(pop)
0500 
0501 
0502 #endif