blob: ee88e7123ca45b494359a178fcf23598588194dd [file] [log] [blame]
/**
* @file
*
* Southbridge CIMx configuration structure define
*
*
*
* @xrefitem bom "File Content Label" "Release Content"
* @e project: CIMx-SB
* @e sub-project:
* @e \$Revision:$ @e \$Date:$
*
*/
/*;********************************************************************************
;
; Copyright (c) 2011, Advanced Micro Devices, Inc.
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in the
; documentation and/or other materials provided with the distribution.
; * Neither the name of Advanced Micro Devices, Inc. nor the names of
; its contributors may be used to endorse or promote products derived
; from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
;*********************************************************************************/
#ifndef _AMD_SBTYPE_H_
#define _AMD_SBTYPE_H_
#ifndef LEGACY_BIOS_SUPPORT
#pragma pack (push, 1)
#endif
/**
* Entry point of Southbridge CIMx
*
*
* @param[in] Param1 Southbridge CIMx Function ID.
* @param[in] Param2 Southbridge Input Data.
* @param[in] pConfig Southbridge configuration structure pointer.
*
*/
typedef unsigned int (*SBCIM_HOOK_ENTRY) (unsigned int Param1, unsigned int Param2, void* pConfig);
/**
* SMM_SERVICE_ROUTINE - Southbridge SMI service routine
*
*/
typedef void (*SMM_SERVICE_ROUTINE) (void);
/**
* The STATIC platform information for CIMx Module.
*
*/
typedef struct _BUILDPARAM {
unsigned char BiosSize; /**< BiosSize 00-00-01
* @par
* BIOSSize [2.0] - BIOS Image Size
* @li <b>0</b> - 1M
* @li <b>1</b> - 2M
* @li <b>3</b> - 4M
* @li <b>7</b> - 8M
* In Hudson-2, default ROM size is 1M Bytes, if your platform ROM bigger then 1M
* you have to set the ROM size outside CIMx module and before AGESA module get call
*
*/
unsigned char LegacyFree; /**< LegacyFree 00-00-02
* @par
* Config Southbridge CIMx module for Legacy Free Mode
*/
unsigned char SpiSpeed; /**< SpiSpeed 00-00-03
* @par
* SPI Speed [1.0] - the clock speed for non-fast read command
* @li <b>000</b> - Default
* @li <b>001</b> - 66Mhz
* @li <b>010</b> - 33Mhz
* @li <b>011</b> - 22Mhz
* @li <b>100</b> - 16.5Mhz
*
*/
unsigned char ImcEnableOverWrite; /**< ImcEnableOverWrite 00-00-04
* @par
* Imc Enable OverWrite
* @li <b>00</b> - by default strapping
* @li <b>01</b> - On
* @li <b>10</b> - Off
*
*/
unsigned char SpiFastSpeed; /**< SpiFastSpeed 00-00-05
* @par
* SPI Speed [1.0] - the clock speed for fast read command
* @li <b>000</b> - Default
* @li <b>001</b> - 66Mhz
* @li <b>010</b> - 33Mhz
* @li <b>011</b> - 22Mhz
* @li <b>100</b> - 16.5Mhz
*
*/
unsigned char SpiMode; /**< SpiMode 00-00-06
* @par
* @li <b>000</b> - Default
* @li <b>101</b> - Qual-io 1-4-4
* @li <b>100</b> - Dual-io 1-2-2
* @li <b>011</b> - Qual-io 1-1-4
* @li <b>010</b> - Dual-io 1-1-2
* @li <b>111</b> - FastRead
* @li <b>110</b> - Normal
*/
unsigned char SpiAutoMode; /**< SpiAutoMode 00-00-07
* @par
* SPI Auto Mode
* @li <b>0</b> - Disabled
* @li <b>1</b> - Enabled
*/
/** SpiBurstWrite - Reserved 00-00-08 */
unsigned char SpiBurstWrite;
unsigned char EcKbd; /**< EcKbd 00-00-09
* @par
* EcKbd [16] - Platform use EC (as SIO) or SIO chip for PS/2 Keyboard and Mouse
* @li <b>0</b> - Use SIO PS/2 function.
* @li <b>1</b> - Use EC PS/2 function instead of SIO PS/2 function. **
* @li <b>**</b> When set 1, EC function have to enable, otherwise, CIMx treat as legacy-free system.
*/
/** EcChannel0 - Reserved 00-00-10 */
unsigned char EcChannel0;
/** UsbMsi - Reserved 00-00-11*/
unsigned char UsbMsi;
/** HdAudioMsi - Reserved 00-00-12*/
unsigned char HdAudioMsi;
/** LpcMsi - Reserved 00-00-13*/
unsigned char LpcMsi;
/** PcibMsi - Reserved 00-00-14*/
unsigned char PcibMsi;
/** AbMsi - Reserved 00-00-15*/
unsigned char AbMsi;
unsigned char SpiWriteSpeed; /**< SpiReadSpeed 00-00-16
* @par
* TBD
*/
unsigned int Smbus0BaseAddress; /**< Smbus0BaseAddress 00-00-17
* @par
* Smbus BASE Address
*/
unsigned int Smbus1BaseAddress; /**< Smbus1BaseAddress 00-00-18
* @par
* Smbus1 (ASF) BASE Address
*/
unsigned int SioPmeBaseAddress; /**< SioPmeBaseAddress 00-00-19
* @par
* SIO PME BASE Address
*/
unsigned int WatchDogTimerBase; /**< WatchDogTimerBase 00-00-20
* @par
* Watch Dog Timer Address
*/
unsigned int GecShadowRomBase; /**< GecShadowRomBase 00-00-21
* @par
* GEC (NIC) SHADOWROM BASE Address
*/
unsigned int SpiRomBaseAddress; /**< SpiRomBaseAddress 00-00-22
* @par
* SPI ROM BASE Address
*/
unsigned short AcpiPm1EvtBlkAddr; /**< AcpiPm1EvtBlkAddr 00-00-23
* @par
* ACPI PM1 event block Address
*/
unsigned short AcpiPm1CntBlkAddr; /**< AcpiPm1CntBlkAddr 00-00-24
* @par
* ACPI PM1 Control block Address
*/
unsigned short AcpiPmTmrBlkAddr; /**< AcpiPmTmrBlkAddr 00-00-25
* @par
* ACPI PM timer block Address
*/
unsigned short CpuControlBlkAddr; /**< CpuControlBlkAddr 00-00-26
* @par
* ACPI CPU control block Address
*/
unsigned short AcpiGpe0BlkAddr; /**< AcpiGpe0BlkAddr 00-00-27
* @par
* ACPI GPE0 block Address
*/
unsigned short SmiCmdPortAddr; /**< SmiCmdPortAddr 00-00-28
* @par
* SMI command port Address
*/
unsigned short AcpiPmaCntBlkAddr; /**< AcpiPmaCntBlkAddr 00-00-29
* @par
* ACPI PMA Control block Address
*/
unsigned int HpetBase; /**< HpetBase 00-00-30
* @par
* HPET Base address
*/
unsigned int SataIDESsid; /**< SataIDESsid 00-00-31
* @par
* SATA IDE mode SSID
*/
unsigned int SataRAIDSsid; /**< SataRAIDSsid 00-00-32
* @par
* SATA RAID mode SSID
*/
unsigned int SataRAID5Ssid; /**< SataRAID5Ssid 00-00-33
* @par
* SATA RAID5 mode SSID
*/
unsigned int SataAHCISsid; /**< SataAHCISsid 00-00-34
* @par
* SATA AHCI mode SSID
*/
unsigned int OhciSsid; /**< OhciSsid 00-00-35
* @par
* OHCI Controller SSID
*/
unsigned int EhciSsid; /**< EhciSsid 00-00-36
* @par
* EHCI Controller SSID
*/
unsigned int Ohci4Ssid; /**< Ohci4Ssid 00-00-37
* @par
* OHCI4 Controller SSID (Force USB 1.1 mode)
*/
unsigned int SmbusSsid; /**< SmbusSsid 00-00-38
* @par
* SMBUS controller SSID
*/
unsigned int IdeSsid; /**< IdeSsid 00-00-39
* @par
* IDE (Sata) controller SSID
*/
unsigned int AzaliaSsid; /**< AzaliaSsid 00-00-40
* @par
* HD Audio controller SSID
*/
unsigned int LpcSsid; /**< LpcSsid 00-00-41
* @par
* LPC controller SSID
*/
unsigned int PCIBSsid; /**< PCIBSsid 00-00-42
* @par
* PCIB controller SSID
*/
} BUILDPARAM;
/**
* The Hwm temprature parameter for CIMx Module. *
*/
typedef struct _HWM_temp_par_struct {
unsigned short At; ///< At
unsigned short Ct; ///< Ct
unsigned char Mode; ///< Mode BIT0:HiRatio BIT1:HiCurrent
} HWM_temp_par_struct;
/**
* The Hwm current struct for CIMx Module. *
*/
typedef struct _HWM_cur_struct {
unsigned short fanSpeed[5]; ///< fanSpeed
unsigned short temperature[5]; ///< temperature
unsigned short voltage[8]; ///< voltage
} HWM_cur_struct;
/**
* The Hwm control struct for CIMx Module.
*
*/
typedef struct _HWM_fan_ctl_struct {
unsigned char InputControl_reg00; ///< InputControl_reg00
unsigned char Control_reg01; ///< Control_reg01
unsigned char Freq_reg02; ///< Freq_reg02
unsigned char LowDuty_reg03; ///< LowDuty_reg03
unsigned char MedDuty_reg04; ///< MedDuty_reg04
unsigned char Multiplier_reg05; ///< Multiplier_reg05
unsigned short LowTemp_reg06; ///< LowTemp_reg06
unsigned short MedTemp_reg08; ///< MedTemp_reg08
unsigned short HighTemp_reg0A; ///< HighTemp_reg0A
unsigned char LinearRange_reg0C; ///< LinearRange_reg0C
unsigned char LinearHoldCount_reg0D; ///< LinearHoldCount_reg0D
} HWM_fan_ctl_struct;
/**
* The Hwm struct for CIMx Module. *
*/
typedef struct _HWM_struct {
unsigned char hwmEnable; ///< hwmEnable
unsigned int hwmControl; /**< hwmControl
* @par
* HWM control configuration
* @li <b>0</b> - HWM is Enabled
* @li <b>1</b> - IMC is Enabled
*/
unsigned char fanSampleFreqDiv; ///< fanSampleFreqDiv
unsigned char hwmSbtsiAutoPoll; ///< hwmSbtsiAutoPoll
unsigned char hwmSbtsiAutoPollStarted; ///< hwmSbtsiAutoPollStarted
unsigned char fanLinearEnhanceEn; ///< fanLinearEnhanceEn
unsigned char fanLinearHoldFix; ///< fanLinearHoldFix
unsigned char fanLinearRangeOutLimit; ///< fanLinearRangeOutLimit
unsigned char hwmSbtsiMode; ///< hwmSbtsiMode
unsigned short hwmCalibrationFactor; ///< hwmEfuseFactor
HWM_cur_struct hwmCurrent; ///< hwmCurrent
HWM_cur_struct hwmCurrentRaw; ///< hwmCurrentRaw
HWM_temp_par_struct hwmTempPar[5]; ///< hwmTempPar
HWM_fan_ctl_struct hwmFanControl[5]; ///< hwmFanControl
HWM_fan_ctl_struct hwmFanControlCooked[5]; ///< hwmFanControlCooked
} HWM_struct;
/**
* The IMC struct for CIMx Module. *
*/
typedef struct _IMC_struct {
unsigned char imcEnable; ///< imcEnable
unsigned char imcEnabled; ///< imcEnabled
unsigned char imcSureBootTimer; ///< imcSureBootTimer
} IMC_struct;
/**
* The EC fan MSGREG struct for CIMx Module. *
*/
typedef struct _EC_struct {
unsigned char MSGFun81zone0MSGREG0; ///<Thermal zone
unsigned char MSGFun81zone0MSGREG1; ///<Thermal zone
unsigned char MSGFun81zone0MSGREG2; ///<Thermal zone control byte 1
unsigned char MSGFun81zone0MSGREG3; ///<Thermal zone control byte 2
unsigned char MSGFun81zone0MSGREG4; ///<Bit[3:0] - Thermal diode offset adjustment in degrees Celsius.
unsigned char MSGFun81zone0MSGREG5; ///<Hysteresis inforamtion
unsigned char MSGFun81zone0MSGREG6; ///<SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032
unsigned char MSGFun81zone0MSGREG7; ///<Bit[1:0]: 0 - 2, SMBUS bus number where the SMBUS based temperature sensor is located.
unsigned char MSGFun81zone0MSGREG8; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
unsigned char MSGFun81zone0MSGREG9; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
//EC LDN9 funtion 81 zone 1
unsigned char MSGFun81zone1MSGREG0; ///<Thermal zone
unsigned char MSGFun81zone1MSGREG1; ///<Thermal zone
unsigned char MSGFun81zone1MSGREG2; ///<Thermal zone control byte 1
unsigned char MSGFun81zone1MSGREG3; ///<Thermal zone control byte 2
unsigned char MSGFun81zone1MSGREG4; ///<Bit[3:0] - Thermal diode offset adjustment in degrees Celsius.
unsigned char MSGFun81zone1MSGREG5; ///<Hysteresis inforamtion
unsigned char MSGFun81zone1MSGREG6; ///<SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032
unsigned char MSGFun81zone1MSGREG7; ///<Bit[1:0]: 0 - 2, SMBUS bus number where the SMBUS based temperature sensor is located.
unsigned char MSGFun81zone1MSGREG8; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
unsigned char MSGFun81zone1MSGREG9; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
//EC LDN9 funtion 81 zone 2
unsigned char MSGFun81zone2MSGREG0; ///<Thermal zone
unsigned char MSGFun81zone2MSGREG1; ///<Thermal zone
unsigned char MSGFun81zone2MSGREG2; ///<Thermal zone control byte 1
unsigned char MSGFun81zone2MSGREG3; ///<Thermal zone control byte 2
unsigned char MSGFun81zone2MSGREG4; ///<Bit[3:0] - Thermal diode offset adjustment in degrees Celsius.
unsigned char MSGFun81zone2MSGREG5; ///<Hysteresis inforamtion
unsigned char MSGFun81zone2MSGREG6; ///<SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032
unsigned char MSGFun81zone2MSGREG7; ///<Bit[1:0]: 0 - 2, SMBUS bus number where the SMBUS based temperature sensor is located.
unsigned char MSGFun81zone2MSGREG8; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
unsigned char MSGFun81zone2MSGREG9; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
//EC LDN9 funtion 81 zone 3
unsigned char MSGFun81zone3MSGREG0; ///<Thermal zone
unsigned char MSGFun81zone3MSGREG1; ///<Thermal zone
unsigned char MSGFun81zone3MSGREG2; ///<Thermal zone control byte 1
unsigned char MSGFun81zone3MSGREG3; ///<Thermal zone control byte 2
unsigned char MSGFun81zone3MSGREG4; ///<Bit[3:0] - Thermal diode offset adjustment in degrees Celsius.
unsigned char MSGFun81zone3MSGREG5; ///<Hysteresis inforamtion
unsigned char MSGFun81zone3MSGREG6; ///<SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032
unsigned char MSGFun81zone3MSGREG7; ///<Bit[1:0]: 0 - 2, SMBUS bus number where the SMBUS based temperature sensor is located.
unsigned char MSGFun81zone3MSGREG8; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
unsigned char MSGFun81zone3MSGREG9; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
//EC LDN9 funtion 83 zone 0
unsigned char MSGFun83zone0MSGREG0; ///<Thermal zone
unsigned char MSGFun83zone0MSGREG1; ///<Thermal zone
unsigned char MSGFun83zone0MSGREG2; ///<_AC0
unsigned char MSGFun83zone0MSGREG3; ///<_AC1
unsigned char MSGFun83zone0MSGREG4; ///<_AC2
unsigned char MSGFun83zone0MSGREG5; ///<_AC3
unsigned char MSGFun83zone0MSGREG6; ///<_AC4
unsigned char MSGFun83zone0MSGREG7; ///<_AC5
unsigned char MSGFun83zone0MSGREG8; ///<_AC6
unsigned char MSGFun83zone0MSGREG9; ///<_AC7
unsigned char MSGFun83zone0MSGREGA; ///<_CRT
unsigned char MSGFun83zone0MSGREGB; ///<_PSV
//EC LDN9 funtion 83 zone 1
unsigned char MSGFun83zone1MSGREG0; ///<Thermal zone
unsigned char MSGFun83zone1MSGREG1; ///<Thermal zone
unsigned char MSGFun83zone1MSGREG2; ///<_AC0
unsigned char MSGFun83zone1MSGREG3; ///<_AC1
unsigned char MSGFun83zone1MSGREG4; ///<_AC2
unsigned char MSGFun83zone1MSGREG5; ///<_AC3
unsigned char MSGFun83zone1MSGREG6; ///<_AC4
unsigned char MSGFun83zone1MSGREG7; ///<_AC5
unsigned char MSGFun83zone1MSGREG8; ///<_AC6
unsigned char MSGFun83zone1MSGREG9; ///<_AC7
unsigned char MSGFun83zone1MSGREGA; ///<_CRT
unsigned char MSGFun83zone1MSGREGB; ///<_PSV
//EC LDN9 funtion 83 zone 2
unsigned char MSGFun83zone2MSGREG0; ///<Thermal zone
unsigned char MSGFun83zone2MSGREG1; ///<Thermal zone
unsigned char MSGFun83zone2MSGREG2; ///<_AC0
unsigned char MSGFun83zone2MSGREG3; ///<_AC1
unsigned char MSGFun83zone2MSGREG4; ///<_AC2
unsigned char MSGFun83zone2MSGREG5; ///<_AC3
unsigned char MSGFun83zone2MSGREG6; ///<_AC4
unsigned char MSGFun83zone2MSGREG7; ///<_AC5
unsigned char MSGFun83zone2MSGREG8; ///<_AC6
unsigned char MSGFun83zone2MSGREG9; ///<_AC7
unsigned char MSGFun83zone2MSGREGA; ///<_CRT
unsigned char MSGFun83zone2MSGREGB; ///<_PSV
//EC LDN9 funtion 83 zone 3
unsigned char MSGFun83zone3MSGREG0; ///<Thermal zone
unsigned char MSGFun83zone3MSGREG1; ///<Thermal zone
unsigned char MSGFun83zone3MSGREG2; ///<_AC0
unsigned char MSGFun83zone3MSGREG3; ///<_AC1
unsigned char MSGFun83zone3MSGREG4; ///<_AC2
unsigned char MSGFun83zone3MSGREG5; ///<_AC3
unsigned char MSGFun83zone3MSGREG6; ///<_AC4
unsigned char MSGFun83zone3MSGREG7; ///<_AC5
unsigned char MSGFun83zone3MSGREG8; ///<_AC6
unsigned char MSGFun83zone3MSGREG9; ///<_AC7
unsigned char MSGFun83zone3MSGREGA; ///<_CRT
unsigned char MSGFun83zone3MSGREGB; ///<_PSV
//EC LDN9 funtion 85 zone 0
unsigned char MSGFun85zone0MSGREG0; ///<Thermal zone
unsigned char MSGFun85zone0MSGREG1; ///<Thermal zone
unsigned char MSGFun85zone0MSGREG2; ///<AL0 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG3; ///<AL1 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG4; ///<AL2 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG5; ///<AL3 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG6; ///<AL4 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG7; ///<AL5 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG8; ///<AL6 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone0MSGREG9; ///<AL7 PWM level in percentage (0 - 100%)
//EC LDN9 funtion 85 zone 1
unsigned char MSGFun85zone1MSGREG0; ///<Thermal zone
unsigned char MSGFun85zone1MSGREG1; ///<Thermal zone
unsigned char MSGFun85zone1MSGREG2; ///<AL0 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG3; ///<AL1 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG4; ///<AL2 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG5; ///<AL3 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG6; ///<AL4 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG7; ///<AL5 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG8; ///<AL6 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone1MSGREG9; ///<AL7 PWM level in percentage (0 - 100%)
//EC LDN9 funtion 85 zone 2
unsigned char MSGFun85zone2MSGREG0; ///<Thermal zone
unsigned char MSGFun85zone2MSGREG1; ///<Thermal zone
unsigned char MSGFun85zone2MSGREG2; ///<AL0 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG3; ///<AL1 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG4; ///<AL2 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG5; ///<AL3 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG6; ///<AL4 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG7; ///<AL5 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG8; ///<AL6 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone2MSGREG9; ///<AL7 PWM level in percentage (0 - 100%)
//EC LDN9 funtion 85 zone 3
unsigned char MSGFun85zone3MSGREG0; ///<Thermal zone
unsigned char MSGFun85zone3MSGREG1; ///<Thermal zone
unsigned char MSGFun85zone3MSGREG2; ///<AL0 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG3; ///<AL1 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG4; ///<AL2 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG5; ///<AL3 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG6; ///<AL4 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG7; ///<AL5 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG8; ///<AL6 PWM level in percentage (0 - 100%)
unsigned char MSGFun85zone3MSGREG9; ///<AL7 PWM level in percentage (0 - 100%)
//EC LDN9 funtion 89 TEMPIN channel 0
unsigned char MSGFun89zone0MSGREG0; ///<Thermal zone
unsigned char MSGFun89zone0MSGREG1; ///<Thermal zone
unsigned char MSGFun89zone0MSGREG2; ///<At DWORD bit 0-7
unsigned char MSGFun89zone0MSGREG3; ///<At DWORD bit 15-8
unsigned char MSGFun89zone0MSGREG4; ///<At DWORD bit 23-16
unsigned char MSGFun89zone0MSGREG5; ///<At DWORD bit 31-24
unsigned char MSGFun89zone0MSGREG6; ///<Ct DWORD bit 0-7
unsigned char MSGFun89zone0MSGREG7; ///<Ct DWORD bit 15-8
unsigned char MSGFun89zone0MSGREG8; ///<Ct DWORD bit 23-16
unsigned char MSGFun89zone0MSGREG9; ///<Ct DWORD bit 31-24
unsigned char MSGFun89zone0MSGREGA; ///<Mode bit 0-7
//EC LDN9 funtion 89 TEMPIN channel 1
unsigned char MSGFun89zone1MSGREG0; ///<Thermal zone
unsigned char MSGFun89zone1MSGREG1; ///<Thermal zone
unsigned char MSGFun89zone1MSGREG2; ///<At DWORD bit 0-7
unsigned char MSGFun89zone1MSGREG3; ///<At DWORD bit 15-8
unsigned char MSGFun89zone1MSGREG4; ///<At DWORD bit 23-16
unsigned char MSGFun89zone1MSGREG5; ///<At DWORD bit 31-24
unsigned char MSGFun89zone1MSGREG6; ///<Ct DWORD bit 0-7
unsigned char MSGFun89zone1MSGREG7; ///<Ct DWORD bit 15-8
unsigned char MSGFun89zone1MSGREG8; ///<Ct DWORD bit 23-16
unsigned char MSGFun89zone1MSGREG9; ///<Ct DWORD bit 31-24
unsigned char MSGFun89zone1MSGREGA; ///<Mode bit 0-7
//EC LDN9 funtion 89 TEMPIN channel 2
unsigned char MSGFun89zone2MSGREG0; ///<Thermal zone
unsigned char MSGFun89zone2MSGREG1; ///<Thermal zone
unsigned char MSGFun89zone2MSGREG2; ///<At DWORD bit 0-7
unsigned char MSGFun89zone2MSGREG3; ///<At DWORD bit 15-8
unsigned char MSGFun89zone2MSGREG4; ///<At DWORD bit 23-16
unsigned char MSGFun89zone2MSGREG5; ///<At DWORD bit 31-24
unsigned char MSGFun89zone2MSGREG6; ///<Ct DWORD bit 0-7
unsigned char MSGFun89zone2MSGREG7; ///<Ct DWORD bit 15-8
unsigned char MSGFun89zone2MSGREG8; ///<Ct DWORD bit 23-16
unsigned char MSGFun89zone2MSGREG9; ///<Ct DWORD bit 31-24
unsigned char MSGFun89zone2MSGREGA; ///<Mode bit 0-7
//EC LDN9 funtion 89 TEMPIN channel 3
unsigned char MSGFun89zone3MSGREG0; ///<Thermal zone
unsigned char MSGFun89zone3MSGREG1; ///<Thermal zone
unsigned char MSGFun89zone3MSGREG2; ///<At DWORD bit 0-7
unsigned char MSGFun89zone3MSGREG3; ///<At DWORD bit 15-8
unsigned char MSGFun89zone3MSGREG4; ///<At DWORD bit 23-16
unsigned char MSGFun89zone3MSGREG5; ///<At DWORD bit 31-24
unsigned char MSGFun89zone3MSGREG6; ///<Ct DWORD bit 0-7
unsigned char MSGFun89zone3MSGREG7; ///<Ct DWORD bit 15-8
unsigned char MSGFun89zone3MSGREG8; ///<Ct DWORD bit 23-16
unsigned char MSGFun89zone3MSGREG9; ///<Ct DWORD bit 31-24
unsigned char MSGFun89zone3MSGREGA; ///<Mode bit 0-7
// FLAG for Fun83/85/89 support
unsigned short IMCFUNSupportBitMap; ///< Bit0=81FunZone0 support(1=On;0=Off); bit1-3=81FunZone1-Zone3;Bit4-7=83FunZone0-Zone3;Bit8-11=85FunZone0-Zone3;Bit11-15=89FunZone0-Zone3;
} EC_struct;
/** SBGPPPORTCONFIG - Southbridge GPP port config structure */
typedef struct {
unsigned char PortPresent; /**< Port connection
* @par
* @li <b>0</b> - Port doesn't have slot. No need to train the link
* @li <b>1</b> - Port connection defined and needs to be trained
*/
unsigned char PortDetected; /**< Link training status
* @par
* @li <b>0</b> - EP not detected
* @li <b>1</b> - EP detected
*/
unsigned char PortIsGen2; /**< Port link speed configuration
* @par
* @li <b>00</b> - Auto
* @li <b>01</b> - Forced GEN1
* @li <b>10</b> - Forced GEN2
* @li <b>11</b> - Reserved
*/
unsigned char PortHotPlug; /**< Support hot plug?
* @par
* @li <b>0</b> - No support
* @li <b>1</b> - support
*/
} SBGPPPORTCONFIG;
/** CODECENTRY - Southbridge HD Audio OEM Codec structure */
typedef struct _CODECENTRY {
/** Nid - Reserved ?? */
unsigned char Nid;
/** Byte40 - Reserved ?? */
unsigned int Byte40;
} CODECENTRY;
/** CODECTBLLIST - Southbridge HD Audio Codec table list */
typedef struct _CODECTBLLIST {
/** CodecID - Codec ID */
unsigned int CodecID;
/** CodecTablePtr - Codec table pointer */
CODECENTRY* CodecTablePtr;
} CODECTBLLIST;
/** Sata Controller structure */
typedef struct _SATAST {
unsigned char SataModeReg; /** SataModeReg - Reserved 00-01-00*/
unsigned char SataController; /**< SataController 00-01-01
* @par
* Sata Controller
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char SataIdeCombMdPriSecOpt; /**< SataIdeCombMdPriSecOpt - Reserved 00-01-02*/
unsigned char SataSetMaxGen2; /**< SataSetMaxGen2 00-01-03
* @par
* Sata Controller Set to Max Gen2 mode
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char SataIdeCombinedMode; /**< SataIdeCombinedMode 00-01-04
* @par
* Sata IDE Controller set to Combined Mode
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
/** SataClkMode - Reserved 00-01-05 */
unsigned char SataClkMode; // 4:7
} SATAST;
/** _USBST Controller structure
*
* Usb Ohci1 Contoller is define at BIT0
* - 0:disable 1:enable
* (Bus 0 Dev 18 Func0) *
* Usb Ehci1 Contoller is define at BIT1
* - 0:disable 1:enable
* (Bus 0 Dev 18 Func2) *
* Usb Ohci2 Contoller is define at BIT2
* - 0:disable 1:enable
* (Bus 0 Dev 19 Func0) *
* Usb Ehci2 Contoller is define at BIT3
* - 0:disable 1:enable
* (Bus 0 Dev 19 Func2) *
* Usb Ohci3 Contoller is define at BIT4
* - 0:disable 1:enable
* (Bus 0 Dev 22 Func0) *
* Usb Ehci3 Contoller is define at BIT5
* - 0:disable 1:enable
* (Bus 0 Dev 22 Func2) *
* Usb Ohci4 Contoller is define at BIT6
* - 0:disable 1:enable
* (Bus 0 Dev 20 Func5) *
*/
typedef struct _USBST {
unsigned char UsbModeReg; /** UsbModeReg - Reserved */
unsigned char Ohci1; ///< Ohci0 controller - 0:disable, 1:enable
unsigned char Ehci1; ///< Ehci1 controller - 0:disable, 1:enable
unsigned char Ohci2; ///< Ohci2 controller - 0:disable, 1:enable
unsigned char Ehci2; ///< Ehci2 controller - 0:disable, 1:enable
unsigned char Ohci3; ///< Ohci3 controller - 0:disable, 1:enable
unsigned char Ehci3; ///< Ehci3 controller - 0:disable, 1:enable
unsigned char Ohci4; ///< Ohci4 controller - 0:disable, 1:enable
} USBST;
/** SATAPORTST - SATA PORT structure
*
*/
typedef struct _SATAPORTST {
unsigned char SataPortPowerReg; /** SataPortPowerReg - Reserved */
unsigned char PORT0; ///< PORT0 - 0:disable, 1:enable
unsigned char PORT1; ///< PORT1 - 0:disable, 1:enable
unsigned char PORT2; ///< PORT2 - 0:disable, 1:enable
unsigned char PORT3; ///< PORT3 - 0:disable, 1:enable
unsigned char PORT4; ///< PORT4 - 0:disable, 1:enable
unsigned char PORT5; ///< PORT5 - 0:disable, 1:enable
unsigned char PORT6; ///< PORT6 - 0:disable, 1:enable
unsigned char PORT7; ///< PORT7 - 0:disable, 1:enable
} SATAPORTST;
///< _SATAPORTMD - Force Each PORT to GEN1/GEN2 mode
typedef struct _SATAPORTMD {
unsigned short SataPortMode; /** SataPortMode - Reserved */
unsigned short PORT0; ///< PORT0 - set BIT0 to GEN1, BIT1 - PORT0 set to GEN2
unsigned short PORT1; ///< PORT1 - set BIT2 to GEN1, BIT3 - PORT1 set to GEN2
unsigned short PORT2; ///< PORT2 - set BIT4 to GEN1, BIT5 - PORT2 set to GEN2
unsigned short PORT3; ///< PORT3 - set BIT6 to GEN1, BIT7 - PORT3 set to GEN2
unsigned short PORT4; ///< PORT4 - set BIT8 to GEN1, BIT9 - PORT4 set to GEN2
unsigned short PORT5; ///< PORT5 - set BIT10 to GEN1, BIT11 - PORT5 set to GEN2
unsigned short PORT6; ///< PORT6 - set BIT12 to GEN1, BIT13 - PORT6 set to GEN2
unsigned short PORT7; ///< PORT7 - set BIT14 to GEN1, BIT15 - PORT7 set to GEN2
} SATAPORTMD;
/**
* _AZALIAPIN - HID Azalia or GPIO define structure.
*
*/
typedef struct _AZALIAPIN {
unsigned char AzaliaSdinPin; ///< @todo Style_Analyzer: Add Doxygen comments to struct entry
unsigned char AzaliaSdin0; /**< AzaliaSdin0
* @par
* SDIN0 is define at BIT0 & BIT1
* @li <b>00</b> - GPIO PIN
* @li <b>10</b> - As a Azalia SDIN pin
*/
unsigned char AzaliaSdin1; /**< AzaliaSdin1
* @par
* SDIN0 is define at BIT2 & BIT3
* @li <b>00</b> - GPIO PIN
* @li <b>10</b> - As a Azalia SDIN pin
*/
unsigned char AzaliaSdin2; /**< AzaliaSdin2
* @par
* SDIN0 is define at BIT4 & BIT5
* @li <b>00</b> - GPIO PIN
* @li <b>10</b> - As a Azalia SDIN pin
*/
unsigned char AzaliaSdin3; /**< AzaliaSdin3
* @par
* SDIN0 is define at BIT6 & BIT7
* @li <b>00</b> - GPIO PIN
* @li <b>10</b> - As a Azalia SDIN pin
*/
} AZALIAPIN;
/** AMDSBCFG - Southbridge CIMx configuration structure (Main) */
typedef struct _AMDSBCFG {
/** StdHeader - Standard header for all AGESA/CIMx services. */
AMD_CONFIG_PARAMS StdHeader;
/** BuildParameters - The STATIC platform information for CIMx Module. 00-00-00 */
BUILDPARAM BuildParameters;
//offset 90 bytes (32-121)
//MsgXchgBiosCimx //offset 8 bytes (122-129)
// SATA Configuration
union /**< union - Reserved 00-01-00 */
{ /**< SATAMODE - Sata Controller structure */
/** SataModeReg - Reserved */
unsigned char SataModeReg;
/** SataMode - Reserved */
SATAST SataMode;
} SATAMODE;
/** S3Resume - Flag of ACPI S3 Resume. 00-02 Internal USED */
unsigned char S3Resume; // 8
/** RebootRequired - Flag of Reboot system is required. 00-03 Internal USED (retired) */
unsigned char RebootRequired; // 9
/** SbSpiSpeedSupport - Reserved 00-04 (retired)*/
unsigned char SbSpiSpeedSupport; // 10
/**< SpreadSpectrum 00-05-00
* @par
* Spread Spectrum function
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char SpreadSpectrum; // 11
/** NbSbGen2 - Reserved 00-06-00 */
unsigned char NbSbGen2; // 12 00-07
unsigned char GppGen2; // 13 00-08
unsigned char GppMemWrImprove; // 14 00-09
unsigned char S4Resume; // 15 00-10 Internal
unsigned char FchVariant; //
/**< SataClass - SATA Controller mode [2:0] 00-11
* @par
* @li <b>000</b> - Native IDE mode
* @li <b>001</b> - RAID mode
* @li <b>010</b> - AHCI mode
* @li <b>011</b> - Legacy IDE mode
* @li <b>100</b> - IDE->AHCI mode
* @li <b>101</b> - AHCI mode as 7804 ID (AMD driver)
* @li <b>110</b> - IDE->AHCI mode as 7804 ID (AMD driver)
*/
unsigned char SataClass; // 2:0
/**< SataIdeMode - Sata IDE Controller mode 00-12
* @par
* @li <b>0</b> - Legacy IDE mode
* @li <b>1</b> - Native IDE mode
*/
unsigned char SataIdeMode; // 3
unsigned char sdConfig; /**< sdMode 00-13
* @par
* SD Configuration
* @li <b>00</b> - Disabled
* @li <b>00</b> - AMDA, set 24,18,16, default
* @li <b>01</b> - DMA clear 24, 16, set 18
* @li <b>10</b> - PIO clear 24,18,16
*
*/
unsigned char sdSpeed; /**< sdSpeed 00-14
* @par
* SD Configuration
* @li <b>0</b> - Low speed clear 17
* @li <b>1</b> - High speed, set 17, default
*
*/
unsigned char sdBitwidth; /**< sdBitwidth 00-15
* @par
* SD Configuration
* @li <b>0</b> - 32BIT clear 23
* @li <b>1</b> - 64BIT, set 23,default
*
*/
/**< SataDisUnusedIdePChannel - Disable Unused IDE Primary Channel 00-16
* @par
* @li <b>0</b> - Channel Enable
* @li <b>1</b> - Channel Disable
*/
unsigned char SataDisUnusedIdePChannel;
/**< SataDisUnusedIdeSChannel - Disable Unused IDE Secondary Channel 00-17
* @par
* @li <b>0</b> - Channel Enable
* @li <b>1</b> - Channel Disable
*/
unsigned char SataDisUnusedIdeSChannel;
/**< IdeDisUnusedIdePChannel - Disable Unused IDE Primary Channel 00-18
* @par
* @li <b>0</b> - Channel Enable
* @li <b>1</b> - Channel Disable
*/
unsigned char IdeDisUnusedIdePChannel;
/**< IdeDisUnusedIdeSChannel - Disable Unused IDE IDE Secondary Channel 00-19
* @par
* @li <b>0</b> - Channel Enable
* @li <b>1</b> - Channel Disable
*/
unsigned char IdeDisUnusedIdeSChannel;
/**< SataEspPort - SATA port is external accessible on a signal only connector (eSATA:) 00-20
* @par
* @li <b> BIT0 </b> - PORT0 set as ESP port
* @li <b> BIT1 </b> - PORT1 set as ESP port
* @li <b> BIT2 </b> - PORT2 set as ESP port
* @li <b> BIT3 </b> - PORT3 set as ESP port
* @li <b> BIT4 </b> - PORT4 set as ESP port
* @li <b> BIT5 </b> - PORT5 set as ESP port
* @li <b> BIT6 </b> - PORT6 set as ESP port
* @li <b> BIT7 </b> - PORT7 set as ESP port
*/
union /**< union - Reserved */
{ /**< SATAPORT - SATA Port Structure */
/** SataPortReg - Reserved */
unsigned char SataPortReg;
SATAPORTST SataEspPort; // 23:16
} SATAESPPORT;
union /**< union - Reserved 00-21*/
{ /**< SATAPORT - SATA Port Structure */
/** SataPortPowerReg - Reserved */
unsigned char SataPortPowerReg;
SATAPORTST SataPortPower; // 31:24
} SATAPORTPOWER;
// SATA Debug Option //offset 4 bytes (130-133)
union /**< union - Reserved 00-22*/
{
/**< SataPortMode - Force Each PORT to GEN1/GEN2 mode
* @par
* @li <b> 0 </b> Auto for each PORTs
* @li <b> BIT0 = 1</b> - PORT0 set to GEN1
* @li <b> BIT1 = 1</b> - PORT0 set to GEN2
* @li <b> BIT2 = 1</b> - PORT1 set to GEN1
* @li <b> BIT3 = 1</b> - PORT1 set to GEN2
* @li <b> BIT4 = 1</b> - PORT2 set to GEN1
* @li <b> BIT5 = 1</b> - PORT2 set to GEN2
* @li <b> BIT6 = 1</b> - PORT3 set to GEN1
* @li <b> BIT7 = 1</b> - PORT3 set to GEN2
* @li <b> BIT8 = 1</b> - PORT4 set to GEN1
* @li <b> BIT9 = 1</b> - PORT4 set to GEN2
* @li <b> BIT10 = 1</b> - PORT5 set to GEN1
* @li <b> BIT11 = 1</b> - PORT5 set to GEN2
* @li <b> BIT12 = 1</b> - PORT6 set to GEN1
* @li <b> BIT13 = 1</b> - PORT6 set to GEN2
* @li <b> BIT14 = 1</b> - PORT7 set to GEN1
* @li <b> BIT15 = 1</b> - PORT7 set to GEN2
*/
unsigned short SataPortMode; //15:0
SATAPORTMD SataPortMd;
} SATAPORTMODE;
/** SATAClkSelOpt - Reserved 00-23*/
unsigned char SATAClkSelOpt; //19:16 *Removed from coding side
/** SataAggrLinkPmCap - Reserved 00-24*/
unsigned char SataAggrLinkPmCap; //20, 0:OFF 1:ON
/** SataPortMultCap - Reserved 00-25*/
unsigned char SataPortMultCap; //21, 0:OFF 1:ON
/** SataClkAutoOff - Reserved 00-26*/
unsigned char SataClkAutoOff; //22, AutoClockOff 0:Disabled, 1:Enabled
/** SataPscCap - Reserved 00-27*/
unsigned char SataPscCap; //23, 1:Enable PSC capability, 0:Disable PSC capability
/** BIOSOSHandoff - Reserved 00-28*/
unsigned char BIOSOSHandoff; //24
/** SataFisBasedSwitching - Reserved 00-29*/
unsigned char SataFisBasedSwitching; //25
/** SataCccSupport - Reserved 00-30*/
unsigned char SataCccSupport; //26
/** SataSscCap - Reserved 00-31*/
unsigned char SataSscCap; //27, 1:Enable SSC capability, 0:Disable SSC capability
/** SataMsiCapability - Reserved 00-32*/
unsigned char SataMsiCapability; //28 0:Hidden 1:Visible
/** SataForceRaid - Reserved 00-33*/
unsigned char SataForceRaid; //29 0:No function 1:Force RAID
/** SataInternal100Spread - Reserved 00-34*/
unsigned char SataInternal100Spread; //30
// SATA Debug Option (2) //offset 4 bytes (134-137)
/** SataTargetSupport8Device - Reserved 00-35*/
unsigned char SataTargetSupport8Device; // 0
/** SataDisableGenericMode - Reserved 00-36*/
unsigned char SataDisableGenericMode; // 1
/** SataAhciEnclosureManagement - Reserved 00-37 */
unsigned char SataAhciEnclosureManagement; // 2
/** SataSgpio0 - Reserved 00-38*/
unsigned char SataSgpio0; // 3
/** SataSgpio1 - Reserved 00-39*/
unsigned char SataSgpio1; // 4
/** SataPhyPllShutDown - Reserved 00-40*/
unsigned char SataPhyPllShutDown; // 5
/** SataHotRemoveEnh - Reserved */
unsigned char SataHotRemoveEnh; // 6
/**< SataHotRemovelEnh for each ports - Hot-removal enhancementEnable for portN
* @par
* @li <b> BIT0 </b> - PORT0 set as HotRemovelEnh port
* @li <b> BIT1 </b> - PORT1 set as HotRemovelEnh port
* @li <b> BIT2 </b> - PORT2 set as HotRemovelEnh port
* @li <b> BIT3 </b> - PORT3 set as HotRemovelEnh port
* @li <b> BIT4 </b> - PORT4 set as HotRemovelEnh port
* @li <b> BIT5 </b> - PORT5 set as HotRemovelEnh port
* @li <b> BIT6 </b> - PORT6 set as HotRemovelEnh port
* @li <b> BIT7 </b> - PORT7 set as HotRemovelEnh port
*/
union /**< union - Reserved 00-41*/
{ /**< SATAPORT - SATA Port Structure */
/** SataHotRemovelEnh - Reserved */ // 31:24
unsigned char SataHotRemovelEnh:8;
SATAPORTST SataHotRemoveEnhPort;
} SATAHOTREMOVALENH;
//
// USB Configuration //offset 4 bytes (134-137)
//
/** USBDeviceConfig - USB Controller Configuration
*
* Usb Ohci1 Contoller is define at BIT0
* - 0:disable 1:enable
* (Bus 0 Dev 18 Func0) *
* Usb Ehci1 Contoller is define at BIT1
* - 0:disable 1:enable
* (Bus 0 Dev 18 Func2) *
* Usb Ohci2 Contoller is define at BIT2
* - 0:disable 1:enable
* (Bus 0 Dev 19 Func0) *
* Usb Ehci2 Contoller is define at BIT3
* - 0:disable 1:enable
* (Bus 0 Dev 19 Func2) *
* Usb Ohci3 Contoller is define at BIT4
* - 0:disable 1:enable
* (Bus 0 Dev 22 Func0) *
* Usb Ehci3 Contoller is define at BIT5
* - 0:disable 1:enable
* (Bus 0 Dev 22 Func2) *
* Usb Ohci4 Contoller is define at BIT6
* - 0:disable 1:enable
* (Bus 0 Dev 20 Func5) *
*/
union /**< union - Reserved */
{ /**< USBMODE - USB Controller structure */
/** SataModeReg - Reserved 00-42*/
unsigned char UsbModeReg;
/** SataMode - Reserved */
USBST UsbMode;
} USBMODE;
/**< GecConfig 00-43
* @par
* InChip Gbit NIC
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char GecConfig; //8
/**< IrConfig 00-44
* @par
* Ir Controller
* @li <b>00 </b> - disable
* @li <b>01 </b> - Rx and Tx0
* @li <b>10 </b> - Rx and Tx1
* @li <b>11 </b> - Rx and both Tx0,Tx1
*/
unsigned char IrConfig; //9:10
unsigned char XhciSwitch; //11 00-45
//Azalia Configuration
/**< AzaliaController - Azalia Controller Configuration 00-46
* @par
* Azalia Controller [0-1]
* @li <b>0</b> - Auto : Detect Azalia controller automatically.
* @li <b>1</b> - Diable : Disable Azalia controller.
* @li <b>2</b> - Enable : Enable Azalia controller.
*/
unsigned char AzaliaController; //17:16
/**< AzaliaPinCfg - Azalia Controller SDIN pin Configuration 00-47
* @par
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char AzaliaPinCfg; //18
/**< AzaliaFrontPanel - Azalia Controller Front Panel Configuration 00-48
* @par
* Support Front Panel configuration
* @li <b>0</b> - Auto
* @li <b>1</b> - disable
* @li <b>2</b> - enable
*/
unsigned char AzaliaFrontPanel; //20:19
/**< FrontPanelDetected - Force Azalia Controller Front Panel Configuration 00-49
* @par
* Force Front Panel configuration
* @li <b>0</b> - Not Detected
* @li <b>1</b> - Detected
*/
unsigned char FrontPanelDetected; //21
/**< AzaliaSnoop - Azalia Controller Snoop feature Configuration 00-59
* @par
* Azalia Controller Snoop feature Configuration
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char AzaliaSnoop; //22
/** AzaliaDummy - Reserved */
unsigned char AzaliaDummy; //23
union
{
/**< AzaliaSdinPin - Azalia Controller SDIN pin Configuration 00-51
*
* SDIN0 is define at BIT0 & BIT1
* - 00: GPIO PIN
* - 01: Reserved
* - 10: As a Azalia SDIN pin
*
* SDIN1 is define at BIT2 & BIT3
* * Config same as SDIN0
* SDIN2 is define at BIT4 & BIT5
* * Config same as SDIN0
* SDIN3 is define at BIT6 & BIT7
* * Config same as SDIN0
*/
unsigned char AzaliaSdinPin;
AZALIAPIN AzaliaConfig;
} AZALIACONFIG;
/** AZOEMTBL - Azalia Controller OEM Codec Table Pointer 00-52
*
*/
union
{
PLACEHOLDER PlaceHolder;
CODECTBLLIST* pAzaliaOemCodecTablePtr; //offset 4 bytes (138-141)
} AZOEMTBL;
/** AZOEMFPTBL - Azalia Controller Front Panel OEM Table Pointer 00-53
*
*/
union
{
PLACEHOLDER PlaceHolder;
void* pAzaliaOemFpCodecTablePtr; //offset 4 bytes (142-145)
} AZOEMFPTBL;
//Miscellaneous Configuration //offset 4 bytes (146-149)
/** AnyHT200MhzLink - Reserved 00-54 */
unsigned char AnyHT200MhzLink; //0
/**< HpetTimer - South Bridge Hpet Timer Configuration 00-56
* @par
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char HpetTimer; //1
/**< PciClks - PCI Slot Clock Control 00-57
* @par
* PCI SLOT 0 define at BIT0
* - 00: disable
* - 01: enable
*
* PCI SLOT 1 define at BIT1
* * Config same as PCI SLOT0
* PCI SLOT 2 define at BIT2
* * Config same as PCI SLOT0
* PCI SLOT 3 define at BIT3
* * Config same as PCI SLOT0
* PCI SLOT 4 define at BIT4
* * Config same as PCI SLOT0
*/
unsigned char PciClks; //2:6
/** MiscReserved1 - Reserved */
unsigned char MiscReserved1; //9:7, Reserved
/** MobilePowerSavings - Debug function Reserved 00-58*/
unsigned char MobilePowerSavings; //11, 0:Disable, 1:Enable Power saving features especially for Mobile platform
/** ExternalRTCClock - Debug function Reserved 00-59*/
unsigned char ExternalRTCClock; //12, 0:Don't Shut Off, 1:Shut Off, external RTC clock
/** NativePcieSupport - Debug function Reserved 00-60*/
unsigned char NativePcieSupport; //13, 0:Disabled, 1:Enable
/** FlashPinConfig - Debug function Reserved 00-61*/
unsigned char FlashPinConfig; //14, 0:desktop mode 1:mobile mode
/** UsbPhyPowerDown - Debug function Reserved 00-62*/
unsigned char UsbPhyPowerDown; //15
/** PcibClkStopOverride - Debug function Reserved 00-63*/
unsigned short PcibClkStopOverride; //25:16
/**< HpetMsiDis - South Bridge HPET MSI Configuration 00-64 (Retired)
* @par
* @li <b>1</b> - disable
* @li <b>0</b> - enable
*/
unsigned char HpetMsiDis; //26
/**< ResetCpuOnSyncFlood - Rest CPU on Sync Flood 00-65 (Retired)
* @par
* @li <b>0</b> - disable
* @li <b>1</b> - enable
*/
unsigned char ResetCpuOnSyncFlood; //27
//DebugOptions //offset 4 bytes (150-153)
/** PcibAutoClkCtr - Debug function Reserved 00-66*/
unsigned char PcibAutoClkCtr;
/**< OEMPROGTBL - ACPI MMIO register setting table OEM override 00-67
* @par
* OEM table for customer override ACPI MMIO register in their code.
*/
union
{
PLACEHOLDER OemProgrammingTablePtr; //offset 4 bytes (154-157)
void *OemProgrammingTablePtr_Ptr;
} OEMPROGTBL;
//Gpp Configuration //offset 24 bytes total (158-181) 00-68
union {
unsigned int PORTCFG32;
SBGPPPORTCONFIG PortCfg;
} PORTCONFIG[4]; //offset 16 bytes
unsigned char GppLinkConfig; /**< GPP_LINK_CONFIG = PCIE_GPP_Enable[3:0] 00-69
* @li <b>0000</b> - Port ABCD -> 4:0:0:0
* @li <b>0001</b> - N/A
* @li <b>0010</b> - Port ABCD -> 2:2:0:0
* @li <b>0011</b> - Port ABCD -> 2:1:1:0
* @li <b>0100</b> - Port ABCD -> 1:1:1:1
*/
unsigned char GppFoundGfxDev; ///< 3:0 If port A-D (mapped to bit [3:0]) has GFX EP detected 00-70
unsigned char GppGen2Strap; ///< 4 LC_GEN2_EN_STRAP 00-71 (internal used)
unsigned char GppFunctionEnable; ///< 5 00-72
unsigned char GppUnhidePorts; ///< 6 00-73
unsigned char AlinkPhyPllPowerDown; ///< 7 00-74
unsigned char GppPortAspm; /**< 9:8 ASPM state for all GPP ports 00-75
* @li <b>01</b> - Disabled
* @li <b>01</b> - L0s
* @li <b>10</b> - L1
* @li <b>11</b> - L0s + L1
*/
unsigned char GppLaneReversal; ///< 10 00-76
unsigned char GppPhyPllPowerDown; ///< 11 00-77
unsigned char GppDynamicPowerSaving; ///< 12 00-78
unsigned char PcieAER; ///< 13 Advanced Error Report: 0/1-disable/enable 00-79
/** UmiDynamicSpeedChange - Reserved */
unsigned char PcieRAS; // 14 00-80
unsigned char GppHardwareDowngrade; // 20:18: 0:Disable, 1-4: portA-D 00-83
unsigned char GppToggleReset; // 21 00-84
unsigned char sdbEnable; // 22 00-85
//TempMMIO //offset 4 bytes (190-193) 00-86
unsigned int TempMMIO;
// DebugOption2
unsigned char GecPhyStatus; // 00-86
unsigned char GecDebugOptionDummy; // 00-87
unsigned char SBGecPwr; // 00-88
unsigned char SBGecDebugBus; // 00-89
unsigned char SbPcieOrderRule; // 00-90
unsigned char AcDcMsg; // 00-91
unsigned char TimerTickTrack; // 00-92
unsigned char ClockInterruptTag; // 00-93
unsigned char OhciTrafficHanding; // 00-94
unsigned char EhciTrafficHanding; // 00-95
unsigned char FusionMsgCMultiCore; // 00-95A
unsigned char FusionMsgCStage; // 00-96
unsigned char ALinkClkGateOff; // 00-97
unsigned char BLinkClkGateOff; // 00-98
unsigned char Sdb; // 00-99
unsigned char SlowSpeedABlinkClock; // 01-00
unsigned char MtC1eEnable; // 01-00
union
{
PLACEHOLDER DynamicGecRomAddressPtr; //offset 4 bytes (194-201) 01-01
void *DynamicGecRomAddress_Ptr;
} DYNAMICGECROM;
// unsigned int UmiCommon; //offset 4 bytes (202-205)
/** AbGppClockGating - Reserved */
unsigned char AbClockGating; // 01-02
unsigned char GppClockGating; // 01-03
// unsigned int UmiDebug;
/** L1TimerOverwrite - Reserved */
unsigned char L1TimerOverwrite; // 01-04
/** UmiLinkWidth - Reserved */
unsigned char UmiLinkWidth; // 4:3 01-05
/** UmiDynamicSpeedChange - Reserved */
unsigned char UmiDynamicSpeedChange; // 01-06
/** PcieRefClockOverclocking - Reserved */
unsigned char PcieRefClockOverclocking; // 9:6 01-07
/** PcieRefClockOverclocking - Reserved */
unsigned char SbAlinkGppTxDriverStrength; // 12:10 01-08
unsigned char PwrFailShadow; /**< PwrFailShadow = PM_Reg: 5Bh [3:0] 01-09
* @li <b>00</b> - Always off
* @li <b>01</b> - Always on
* @li <b>10</b> - Always off
* @li <b>11</b> - Use previous
*/
unsigned char StressResetMode; /**< StressResetMode 01-10
* @li <b>00</b> - Disabed
* @li <b>01</b> - Io Write 0x64 with 0xfe
* @li <b>10</b> - Io Write 0xcf9 with 0x06
* @li <b>11</b> - Io Write 0xcf9 with 0x0e
*/
EC_struct Pecstruct; // 01-11 (Internal USED)
HWM_struct hwm; // 01-12
IMC_struct imc; // 01-13
unsigned char Cg2Pll; // 01-14
unsigned char ClockRun; // 01-15
unsigned char Debug_Reg00; // 01-16
unsigned char Debug_Reg01; // 01-17
unsigned char Debug_Reg02; // 01-18
unsigned char Debug_Reg03; // 01-19
unsigned char Debug_Reg04; // 01-20
unsigned char Debug_Reg05; // 01-21
unsigned char EhciDataCacheDis; // 01-22
unsigned char EfuseByte [0x20];
unsigned char EfuseRemainder ;
unsigned char EfuseSum ;
unsigned char L1ImmediateAck;
} AMDSBCFG;
/** SMMSERVICESTRUC- Southbridge SMI service structure */
typedef struct _SMMSERVICESTRUC {
/** enableRegNum - Reserved */
unsigned char enableRegNum;
/** enableBit - Reserved */
unsigned char enableBit;
/** statusRegNum - Reserved */
unsigned char statusRegNum;
/** statusBit - Reserved */
unsigned char statusBit;
/** *debugMessage- Reserved */
signed char *debugMessage;
/** serviceRoutine - Reserved */
SMM_SERVICE_ROUTINE serviceRoutine;
} SMMSERVICESTRUC;
#ifndef _NB_REG8MASK_
/**
* - Byte Register R/W structure
*
*/
typedef struct _Reg8Mask {
/** bRegIndex - Reserved */
unsigned char bRegIndex;
/** bANDMask - Reserved */
unsigned char bANDMask;
/** bORMask - Reserved */
unsigned char bORMask;
} REG8MASK;
#endif
/**
* - SATA Phy setting structure
*
*/
typedef struct _SATAPHYSETTING {
/** wPhyCoreControl - Reserved */
unsigned short wPhyCoreControl;
/** dwPhyFineTune - Reserved */
unsigned int dwPhyFineTune;
} SATAPHYSETTING;
/**
* _ABTblEntry - AB link register table R/W structure
*
*/
typedef struct _ABTblEntry {
/** regType : AB Register Type (ABCFG, AXCFG and so on) */
unsigned char regType;
/** regIndex : AB Register Index */
unsigned int regIndex;
/** regMask : AB Register Mask */
unsigned int regMask;
/** regData : AB Register Data */
unsigned int regData;
} ABTBLENTRY;
/**
* _AcpiRegWrite - ACPI MMIO register R/W structure
*
*/
typedef struct _AcpiRegWrite {
/** MmioBase : Index of Southbridge block (For instance GPIO_BASE:0x01 SMI_BASE:0x02) */
unsigned char MmioBase;
/** MmioReg : Register index */
unsigned char MmioReg;
/** DataANDMask : AND Register Data */
unsigned char DataANDMask;
/** DataOrMask : Or Register Data */
unsigned char DataOrMask;
} AcpiRegWrite;
/**
* PCI_ADDRESS - PCI access structure
*
*/
#define PCI_ADDRESS(bus, dev, func, reg) \
(unsigned int) ( (((unsigned int)bus) << 24) + (((unsigned int)dev) << 19) + (((unsigned int)func) << 16) + ((unsigned int)reg) )
/**
* CIM_STATUS - CIMx module function return code
*/
typedef unsigned int CIM_STATUS;
/**
* CIM_SUCCESS - Executed without error
*/
#define CIM_SUCCESS 0x00000000
/**
* CIM_ERROR - call error
*/
#define CIM_ERROR 0x80000000
/**
* CIM_UNSUPPORTED - function does not support
*/
#define CIM_UNSUPPORTED 0x80000001
#ifndef LEGACY_BIOS_SUPPORT
#pragma pack (pop)
#endif
/**
* DISABLED - Define disable in module
*/
#define DISABLED 0
/**
* ENABLED - Define enable in module
*/
#define ENABLED 1
/// PCIE Reset Block
typedef enum {
NbBlock, ///< Reset for NB PCIE
SbBlock ///< Reset for FCH GPP
} RESET_BLOCK;
/// PCIE Reset Operation
typedef enum {
DeassertReset, ///< Deassert reset
AssertReset ///< Assert reset
} RESET_OP;
/**
* SB_GPIO_INIT_ENTRY
*
*/
typedef struct _SB_GPIO_INIT_ENTRY {
unsigned char GpioPin; ///< Gpio Pin
unsigned char GpioMux; ///< Gpio Mux
unsigned char GpioOutEnB; ///< Gpio Out EnB
unsigned char GpioOut; ///< Gpio Out
} SB_GPIO_INIT_ENTRY;
/**
* SB_GPIO_CONTROL_ENTRY
*
*/
typedef struct _SB_GPIO_CONTROL_ENTRY {
unsigned char GpioPin; ///< Gpio Pin
unsigned char GpioControl; ///< Gpio Control
} SB_GPIO_CONTROL_ENTRY;
/**
* SB_SPREAD_SPECTRUM_ENTRY
*
*/
typedef struct _SB_SPREAD_SPECTRUM_ENTRY {
unsigned int P_40_25; ///< P_10_25_24
unsigned int P_18_15_5; ///< P_10_25_24
unsigned int P_18_19_16; ///< P_10_25_24
unsigned int P_10_23_8; ///< P_10_25_24
unsigned int P_10_7_0; ///< P_10_25_24
unsigned int P_1C_5_0; ///< P_10_25_24
unsigned int P_08_31_28; ///< P_10_25_24
unsigned int P_08_7; ///< P_10_25_24
unsigned int P_08_8; ///< P_10_25_24
unsigned int P_10_25_24; ///< P_10_25_24
} SB_SPREAD_SPECTRUM_ENTRY;
#endif // _AMD_SBTYPE_H_