/** * @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 0 - 1M * @li 1 - 2M * @li 3 - 4M * @li 7 - 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 000 - Default * @li 001 - 66Mhz * @li 010 - 33Mhz * @li 011 - 22Mhz * @li 100 - 16.5Mhz * */ unsigned char ImcEnableOverWrite; /**< ImcEnableOverWrite 00-00-04 * @par * Imc Enable OverWrite * @li 00 - by default strapping * @li 01 - On * @li 10 - Off * */ unsigned char SpiFastSpeed; /**< SpiFastSpeed 00-00-05 * @par * SPI Speed [1.0] - the clock speed for fast read command * @li 000 - Default * @li 001 - 66Mhz * @li 010 - 33Mhz * @li 011 - 22Mhz * @li 100 - 16.5Mhz * */ unsigned char SpiMode; /**< SpiMode 00-00-06 * @par * @li 000 - Default * @li 101 - Qual-io 1-4-4 * @li 100 - Dual-io 1-2-2 * @li 011 - Qual-io 1-1-4 * @li 010 - Dual-io 1-1-2 * @li 111 - FastRead * @li 110 - Normal */ unsigned char SpiAutoMode; /**< SpiAutoMode 00-00-07 * @par * SPI Auto Mode * @li 0 - Disabled * @li 1 - 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 0 - Use SIO PS/2 function. * @li 1 - Use EC PS/2 function instead of SIO PS/2 function. ** * @li ** 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 0 - HWM is Enabled * @li 1 - 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; ///0 - Port doesn't have slot. No need to train the link * @li 1 - Port connection defined and needs to be trained */ unsigned char PortDetected; /**< Link training status * @par * @li 0 - EP not detected * @li 1 - EP detected */ unsigned char PortIsGen2; /**< Port link speed configuration * @par * @li 00 - Auto * @li 01 - Forced GEN1 * @li 10 - Forced GEN2 * @li 11 - Reserved */ unsigned char PortHotPlug; /**< Support hot plug? * @par * @li 0 - No support * @li 1 - 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 0 - disable * @li 1 - 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 0 - disable * @li 1 - enable */ unsigned char SataIdeCombinedMode; /**< SataIdeCombinedMode 00-01-04 * @par * Sata IDE Controller set to Combined Mode * @li 0 - disable * @li 1 - 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 00 - GPIO PIN * @li 10 - As a Azalia SDIN pin */ unsigned char AzaliaSdin1; /**< AzaliaSdin1 * @par * SDIN0 is define at BIT2 & BIT3 * @li 00 - GPIO PIN * @li 10 - As a Azalia SDIN pin */ unsigned char AzaliaSdin2; /**< AzaliaSdin2 * @par * SDIN0 is define at BIT4 & BIT5 * @li 00 - GPIO PIN * @li 10 - As a Azalia SDIN pin */ unsigned char AzaliaSdin3; /**< AzaliaSdin3 * @par * SDIN0 is define at BIT6 & BIT7 * @li 00 - GPIO PIN * @li 10 - 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 0 - disable * @li 1 - 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 000 - Native IDE mode * @li 001 - RAID mode * @li 010 - AHCI mode * @li 011 - Legacy IDE mode * @li 100 - IDE->AHCI mode * @li 101 - AHCI mode as 7804 ID (AMD driver) * @li 110 - IDE->AHCI mode as 7804 ID (AMD driver) */ unsigned char SataClass; // 2:0 /**< SataIdeMode - Sata IDE Controller mode 00-12 * @par * @li 0 - Legacy IDE mode * @li 1 - Native IDE mode */ unsigned char SataIdeMode; // 3 unsigned char sdConfig; /**< sdMode 00-13 * @par * SD Configuration * @li 00 - Disabled * @li 00 - AMDA, set 24,18,16, default * @li 01 - DMA clear 24, 16, set 18 * @li 10 - PIO clear 24,18,16 * */ unsigned char sdSpeed; /**< sdSpeed 00-14 * @par * SD Configuration * @li 0 - Low speed clear 17 * @li 1 - High speed, set 17, default * */ unsigned char sdBitwidth; /**< sdBitwidth 00-15 * @par * SD Configuration * @li 0 - 32BIT clear 23 * @li 1 - 64BIT, set 23,default * */ /**< SataDisUnusedIdePChannel - Disable Unused IDE Primary Channel 00-16 * @par * @li 0 - Channel Enable * @li 1 - Channel Disable */ unsigned char SataDisUnusedIdePChannel; /**< SataDisUnusedIdeSChannel - Disable Unused IDE Secondary Channel 00-17 * @par * @li 0 - Channel Enable * @li 1 - Channel Disable */ unsigned char SataDisUnusedIdeSChannel; /**< IdeDisUnusedIdePChannel - Disable Unused IDE Primary Channel 00-18 * @par * @li 0 - Channel Enable * @li 1 - Channel Disable */ unsigned char IdeDisUnusedIdePChannel; /**< IdeDisUnusedIdeSChannel - Disable Unused IDE IDE Secondary Channel 00-19 * @par * @li 0 - Channel Enable * @li 1 - Channel Disable */ unsigned char IdeDisUnusedIdeSChannel; /**< SataEspPort - SATA port is external accessible on a signal only connector (eSATA:) 00-20 * @par * @li BIT0 - PORT0 set as ESP port * @li BIT1 - PORT1 set as ESP port * @li BIT2 - PORT2 set as ESP port * @li BIT3 - PORT3 set as ESP port * @li BIT4 - PORT4 set as ESP port * @li BIT5 - PORT5 set as ESP port * @li BIT6 - PORT6 set as ESP port * @li BIT7 - 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 0 Auto for each PORTs * @li BIT0 = 1 - PORT0 set to GEN1 * @li BIT1 = 1 - PORT0 set to GEN2 * @li BIT2 = 1 - PORT1 set to GEN1 * @li BIT3 = 1 - PORT1 set to GEN2 * @li BIT4 = 1 - PORT2 set to GEN1 * @li BIT5 = 1 - PORT2 set to GEN2 * @li BIT6 = 1 - PORT3 set to GEN1 * @li BIT7 = 1 - PORT3 set to GEN2 * @li BIT8 = 1 - PORT4 set to GEN1 * @li BIT9 = 1 - PORT4 set to GEN2 * @li BIT10 = 1 - PORT5 set to GEN1 * @li BIT11 = 1 - PORT5 set to GEN2 * @li BIT12 = 1 - PORT6 set to GEN1 * @li BIT13 = 1 - PORT6 set to GEN2 * @li BIT14 = 1 - PORT7 set to GEN1 * @li BIT15 = 1 - 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 BIT0 - PORT0 set as HotRemovelEnh port * @li BIT1 - PORT1 set as HotRemovelEnh port * @li BIT2 - PORT2 set as HotRemovelEnh port * @li BIT3 - PORT3 set as HotRemovelEnh port * @li BIT4 - PORT4 set as HotRemovelEnh port * @li BIT5 - PORT5 set as HotRemovelEnh port * @li BIT6 - PORT6 set as HotRemovelEnh port * @li BIT7 - 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 0 - disable * @li 1 - enable */ unsigned char GecConfig; //8 /**< IrConfig 00-44 * @par * Ir Controller * @li 00 - disable * @li 01 - Rx and Tx0 * @li 10 - Rx and Tx1 * @li 11 - 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 0 - Auto : Detect Azalia controller automatically. * @li 1 - Diable : Disable Azalia controller. * @li 2 - Enable : Enable Azalia controller. */ unsigned char AzaliaController; //17:16 /**< AzaliaPinCfg - Azalia Controller SDIN pin Configuration 00-47 * @par * @li 0 - disable * @li 1 - enable */ unsigned char AzaliaPinCfg; //18 /**< AzaliaFrontPanel - Azalia Controller Front Panel Configuration 00-48 * @par * Support Front Panel configuration * @li 0 - Auto * @li 1 - disable * @li 2 - enable */ unsigned char AzaliaFrontPanel; //20:19 /**< FrontPanelDetected - Force Azalia Controller Front Panel Configuration 00-49 * @par * Force Front Panel configuration * @li 0 - Not Detected * @li 1 - Detected */ unsigned char FrontPanelDetected; //21 /**< AzaliaSnoop - Azalia Controller Snoop feature Configuration 00-59 * @par * Azalia Controller Snoop feature Configuration * @li 0 - disable * @li 1 - 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 0 - disable * @li 1 - 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 1 - disable * @li 0 - enable */ unsigned char HpetMsiDis; //26 /**< ResetCpuOnSyncFlood - Rest CPU on Sync Flood 00-65 (Retired) * @par * @li 0 - disable * @li 1 - 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 0000 - Port ABCD -> 4:0:0:0 * @li 0001 - N/A * @li 0010 - Port ABCD -> 2:2:0:0 * @li 0011 - Port ABCD -> 2:1:1:0 * @li 0100 - 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 01 - Disabled * @li 01 - L0s * @li 10 - L1 * @li 11 - 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 00 - Always off * @li 01 - Always on * @li 10 - Always off * @li 11 - Use previous */ unsigned char StressResetMode; /**< StressResetMode 01-10 * @li 00 - Disabed * @li 01 - Io Write 0x64 with 0xfe * @li 10 - Io Write 0xcf9 with 0x06 * @li 11 - 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_