/** @file Header file for GpioPrivateLib. All function in this library is available for PEI, DXE, and SMM, Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _GPIO_PRIVATE_LIB_H_ #define _GPIO_PRIVATE_LIB_H_ #include /** This procedure will get value of selected gpio register @param[in] Group GPIO group number @param[in] Offset GPIO register offset @param[out] RegVal Value of gpio register @retval EFI_SUCCESS The function completed successfully @retval EFI_INVALID_PARAMETER Invalid group or pad number **/ EFI_STATUS GpioGetReg ( IN GPIO_GROUP Group, IN UINT32 Offset, OUT UINT32 *RegVal ); /** This procedure will set value of selected gpio register @param[in] Group GPIO group number @param[in] Offset GPIO register offset @param[in] RegVal Value of gpio register @retval EFI_SUCCESS The function completed successfully @retval EFI_INVALID_PARAMETER Invalid group or pad number **/ EFI_STATUS GpioSetReg ( IN GPIO_GROUP Group, IN UINT32 Offset, IN UINT32 RegVal ); /** This procedure is used by PchSmiDispatcher and will return information needed to register GPI SMI. Relation between Index and GpioPad number is: Index = GpioGroup + 24 * GpioPad @param[in] Index GPI SMI number @param[out] GpioPin GPIO pin @param[out] GpiSmiBitOffset GPI SMI bit position within GpiSmi Registers @param[out] GpiSmiEnRegAddress Address of GPI SMI Enable register @param[out] GpiSmiStsRegAddress Address of GPI SMI status register @retval EFI_SUCCESS The function completed successfully @retval EFI_INVALID_PARAMETER Invalid group or pad number **/ EFI_STATUS GpioGetPadAndSmiRegs ( IN UINT32 Index, OUT GPIO_PAD *GpioPin, OUT UINT8 *GpiSmiBitOffset, OUT UINT32 *GpiSmiEnRegAddress, OUT UINT32 *GpiSmiStsRegAddress ); /** This procedure will clear GPIO_UNLOCK_SMI_STS @param[in] None @retval EFI_SUCCESS The function completed successfully @retval EFI_INVALID_PARAMETER Invalid group or pad number **/ EFI_STATUS GpioClearUnlockSmiSts ( VOID ); /** This procedure will set GPIO Driver IRQ number @param[in] Irq Irq number @retval EFI_SUCCESS The function completed successfully @retval EFI_INVALID_PARAMETER Invalid IRQ number **/ EFI_STATUS GpioSetIrq ( IN UINT8 Irq ); /** This procedure will perform special handling of GPP_A_12 on PCH-LP. @param[in] None @retval None **/ VOID GpioA12SpecialHandling ( VOID ); /** This function sets ISH I2C controller pins into native mode @param[in] IshI2cControllerNumber I2C controller @retval Status **/ EFI_STATUS GpioSetIshI2cPinsIntoNativeMode ( IN UINT32 IshI2cControllerNumber ); /** This function sets ISH UART controller pins into native mode @param[in] IshUartControllerNumber UART controller @retval Status **/ EFI_STATUS GpioSetIshUartPinsIntoNativeMode ( IN UINT32 IshUartControllerNumber ); /** This function sets ISH SPI controller pins into native mode @param[in] none @retval Status **/ EFI_STATUS GpioSetIshSpiPinsIntoNativeMode ( VOID ); /** This function sets ISH GP pins into native mode @param[in] IshGpPinNumber ISH GP pin number @retval Status **/ EFI_STATUS GpioSetIshGpPinsIntoNativeMode ( IN UINT32 IshGpPinNumber ); /** Returns pad for given CLKREQ# index. @param[in] ClkreqIndex CLKREQ# number @return CLKREQ# pad. **/ GPIO_PAD GpioGetClkreqPad ( IN UINT32 ClkreqIndex ); /** Enables CLKREQ# pad in native mode. @param[in] ClkreqIndex CLKREQ# number @return none **/ VOID GpioEnableClkreq ( IN UINT32 ClkreqIndex ); /** This function checks if GPIO pin for PCHHOTB is in NATIVE MODE @param[in] none @retval TRUE Pin is in PCHHOTB native mode FALSE Pin is in gpio mode or is not owned by HOST **/ BOOLEAN GpioIsPchHotbPinInNativeMode ( VOID ); /** This function sets CPU GP pins into native mode @param[in] CpuGpPinNum CPU GP pin number @retval Status **/ EFI_STATUS GpioSetCpuGpPinsIntoNativeMode ( IN UINT32 CpuGpPinNum ); #endif // _GPIO_PRIVATE_LIB_H_