/** * @file * * Southbridge CIMx Function Support Define (All) * * * * @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. ; ;*********************************************************************************/ #include "cbtypes.h" // Southbridge SBMAIN Routines /** * Southbridge Main Function Public Function * */ /** * sbBeforePciInit - Config Southbridge before PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbBeforePciInit (IN AMDSBCFG* pConfig); /** * sbAfterPciInit - Config Southbridge after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbAfterPciInit (IN AMDSBCFG* pConfig); /** * sbMidPostInit - Config Southbridge during middle of POST * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbMidPostInit (IN AMDSBCFG* pConfig); /** * sbLatePost - Prepare Southbridge to boot to OS. * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbLatePost (IN AMDSBCFG* pConfig); /** * sbBeforePciRestoreInit - Config Southbridge before ACPI S3 resume PCI config device restore * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbBeforePciRestoreInit (IN AMDSBCFG* pConfig); /** * sbAfterPciRestoreInit - Config Southbridge after ACPI S3 resume PCI config device restore * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbAfterPciRestoreInit (IN AMDSBCFG* pConfig); /** * sbSmmAcpiOn - Config Southbridge during ACPI_ON * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbSmmAcpiOn (IN AMDSBCFG* pConfig); /** * CallBackToOEM - Call Back routine. * * * * @param[in] Func Callback ID. * @param[in] Data Callback specific data. * @param[in] pConfig Southbridge configuration structure pointer. */ UINTN CallBackToOEM (IN unsigned int Func, IN UINTN Data, IN AMDSBCFG* pConfig); // Southbridge SBPOR Routines /** * Southbridge power-on initial Public Function * */ /** * sbPowerOnInit - Config Southbridge during power on stage. * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbPowerOnInit (IN AMDSBCFG* pConfig); /** * XhciEarlyInit - XhciEarlyInit. * * * * * */ void XhciEarlyInit (void); /** * XhciInitIndirectReg - XhciInitIndirectReg. * * * * * */ void XhciInitIndirectReg (void); // Southbridge Common Routines /** * Southbridge Common Public Function * */ /** * commonInitEarlyBoot - Config Southbridge SMBUS/ACPI/IDE/LPC/PCIB. * * This settings should be done during S3 resume also * * @param[in] pConfig Southbridge configuration structure pointer. * */ void commonInitEarlyBoot (IN AMDSBCFG* pConfig); /** * commonInitEarlyPost - Config Southbridge SMBUS/ACPI/IDE/LPC/PCIB. * * This settings might not program during S3 resume * * @param[in] pConfig Southbridge configuration structure pointer. * */ void commonInitEarlyPost (IN AMDSBCFG* pConfig); /** * commonInitLateBoot - Prepare Southbridge register setting to boot to OS. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void commonInitLateBoot (IN AMDSBCFG* pConfig); /** * abSpecialSetBeforePciEnum - Special setting ABCFG registers before PCI emulation. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void abSpecialSetBeforePciEnum (IN AMDSBCFG* pConfig); /** * hpetInit - Program Southbridge HPET function * * ** Eric * * @param[in] pConfig Southbridge configuration structure pointer. * @param[in] pStaticOptions Platform build configuration table. * */ void hpetInit (IN AMDSBCFG* pConfig, IN BUILDPARAM *pStaticOptions); /** * c3PopupSetting - Program Southbridge C state function * * ** Eric * * @param[in] pConfig Southbridge configuration structure pointer. * */ void c3PopupSetting (IN AMDSBCFG* pConfig); /** * GcpuRelatedSetting - Program GCPU C related function * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void GcpuRelatedSetting (IN AMDSBCFG* pConfig); /** * MtC1eEnable - Program Mt C1E Enable Function * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void MtC1eEnable (IN AMDSBCFG* pConfig); /** * Southbridge Common Private Function * */ /** * abLinkInitBeforePciEnum - Set ABCFG registers before PCI emulation. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void abLinkInitBeforePciEnum (IN AMDSBCFG* pConfig); // Southbridge SATA Routines /** * Southbridge SATA Controller Public Function * */ /** * sataInitMidPost - Config SATA controller in Middle POST. * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sataInitMidPost (IN AMDSBCFG* pConfig); /** * sataInitAfterPciEnum - Config SATA controller after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sataInitAfterPciEnum (IN AMDSBCFG* pConfig); /** * sataInitBeforePciEnum - Config SATA controller before PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sataInitBeforePciEnum (IN AMDSBCFG* pConfig); /** * sataInitLatePost - Prepare SATA controller to boot to OS. * * - Set class ID to AHCI (if set to AHCI * Mode) * - Enable AHCI interrupt * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sataInitLatePost (IN AMDSBCFG* pConfig); // Southbridge GEC Routines /** * Southbridge GEC Controller Public Function * */ /** * gecInitBeforePciEnum - Config GEC controller before PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void gecInitBeforePciEnum (IN AMDSBCFG* pConfig); /** * gecInitAfterPciEnum - Config GEC controller after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void gecInitAfterPciEnum (IN AMDSBCFG* pConfig); /** * gecInitLatePost - Prepare GEC controller to boot to OS. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void gecInitLatePost (IN AMDSBCFG* pConfig); // Southbridge USB Routines /** * Southbridge USB Controller Public Function * */ /** * Config USB controller before PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void usbInitBeforePciEnum (IN AMDSBCFG* pConfig); /** * Config USB controller after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void usbInitAfterPciInit (IN AMDSBCFG* pConfig); /** * Config USB controller after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void usbInitLate (IN AMDSBCFG* pConfig); /** * Config USB1 EHCI controller after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void usb1EhciInitAfterPciInit (IN AMDSBCFG* pConfig); void usb2EhciInitAfterPciInit (IN AMDSBCFG* pConfig); void usb3EhciInitAfterPciInit (IN AMDSBCFG* pConfig); void usb1OhciInitAfterPciInit (IN AMDSBCFG* pConfig); void usb2OhciInitAfterPciInit (IN AMDSBCFG* pConfig); void usb3OhciInitAfterPciInit (IN AMDSBCFG* pConfig); void usb4OhciInitAfterPciInit (IN AMDSBCFG* pConfig); // Southbridge SMI Service Routines (SMM.C) /** * Southbridge SMI Service Routines Public Function * */ /** * Southbridge SMI service module * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbSmmService (IN AMDSBCFG* pConfig); /** * softwareSMIservice - Software SMI service * * ** Eric * * @param[in] VOID Southbridge software SMI service ID. * */ void softwareSMIservice (IN void); // Southbridge GPP Controller Routines /** * Southbridge GPP Controller Routines Public Function * */ /** * GPP early programming and link training. On exit all populated EPs should be fully operational. * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbPcieGppEarlyInit (IN AMDSBCFG* pConfig); /** * sbPcieGppLateInit - Late PCIE initialization for Hudson-2 GPP component * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void sbPcieGppLateInit (IN AMDSBCFG* pConfig); // Southbridge HD Controller Routines (AZALIA.C) /** * Southbridge HD Controller Routines (AZALIA.C) Public Function * */ /** * Config HD Audio Before PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void azaliaInitBeforePciEnum (IN AMDSBCFG* pConfig); /** * Config HD Audio after PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void azaliaInitAfterPciEnum (IN AMDSBCFG* pConfig); // Southbridge EC Routines #ifndef NO_EC_SUPPORT /** * Southbridge EC Controller Public Function * */ /** * Config EC controller during power-on * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void ecPowerOnInit (IN AMDSBCFG* pConfig); /** * Config EC controller before PCI emulation * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void ecInitBeforePciEnum (IN AMDSBCFG* pConfig); /** * Prepare EC controller to boot to OS. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void ecInitLatePost (IN AMDSBCFG* pConfig); /** * validateImcFirmware - Validate IMC Firmware. * * * @param[in] pConfig Southbridge configuration structure pointer. * * @retval TRUE Pass * @retval FALSE Failed */ unsigned char validateImcFirmware (IN AMDSBCFG* pConfig); /** * validateImcFirmware - Validate IMC Firmware. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void softwareToggleImcStrapping (IN AMDSBCFG* pConfig); #endif #ifndef NO_HWM_SUPPORT /** * hwmInit - Init Hardware Monitor. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void hwmInit (IN AMDSBCFG* pConfig); /** * hwmUpdateData - Hardware Monitor Update Data. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void hwmUpdateData (IN AMDSBCFG* pConfig); /** * hwmUpdateData - Hardware Monitor Update Data. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void hwmCopyFanControl (IN AMDSBCFG* pConfig); /** * hwmCopyFanControl - Copy Hardware Monitor Update Data. * * * @param[in] pConfig Southbridge configuration structure pointer. * */ #endif /** * Stress Reset Mode Late * * * * @param[in] pConfig Southbridge configuration structure pointer. * */ void StressResetModeLate (IN AMDSBCFG* pConfig); /** * TurnOffCG2 * * * @retval VOID * */ void TurnOffCG2 (OUT void); /** * BackUpCG2 * * * @retval VOID * */ void BackUpCG2 (OUT void); void XhciA12Fix (OUT void);