/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _GPIO_NATIVE_LIB_H_ #define _GPIO_NATIVE_LIB_H_ #include /** This procedure will get number of pads for certain GPIO group @param[in] Group GPIO group number @retval Value Pad number for group If illegal group number then return 0 **/ UINT32 GpioGetPadPerGroup ( IN GPIO_GROUP Group ); /** This procedure will get number of groups @param[in] none @retval Value Group number **/ UINT8 GpioGetNumberOfGroups ( VOID ); /** This procedure will get lowest group @param[in] none @retval Value Lowest Group **/ GPIO_GROUP GpioGetLowestGroup ( VOID ); /** This procedure will get highest group @param[in] none @retval Value Highest Group **/ GPIO_GROUP GpioGetHighestGroup ( VOID ); /** This procedure will get group @param[in] GpioPad Gpio Pad @retval Value Group **/ GPIO_GROUP GpioGetGroupFromGpioPad ( IN GPIO_PAD GpioPad ); /** This procedure will get group index (0 based) from GpioPad @param[in] GpioPad Gpio Pad @retval Value Group Index **/ UINT32 GpioGetGroupIndexFromGpioPad ( IN GPIO_PAD GpioPad ); /** This procedure will get group index (0 based) from group @param[in] GpioGroup Gpio Group @retval Value Group Index **/ UINT32 GpioGetGroupIndexFromGroup ( IN GPIO_GROUP GpioGroup ); /** This procedure will get pad number (0 based) from Gpio Pad @param[in] GpioPad Gpio Pad @retval Value Pad Number **/ UINT32 GpioGetPadNumberFromGpioPad ( IN GPIO_PAD GpioPad ); /** This procedure will return GpioPad from Group and PadNumber @param[in] Group GPIO group @param[in] PadNumber GPIO PadNumber @retval GpioPad GpioPad **/ GPIO_PAD GpioGetGpioPadFromGroupAndPadNumber ( IN GPIO_GROUP Group, IN UINT32 PadNumber ); /** This procedure will return GpioPad from GroupIndex and PadNumber @param[in] GroupIndex GPIO GroupIndex @param[in] PadNumber GPIO PadNumber @retval GpioPad GpioPad **/ GPIO_PAD GpioGetGpioPadFromGroupIndexAndPadNumber ( IN UINT32 GroupIndex, IN UINT32 PadNumber ); /** This function sets SerialIo I2C controller pins into native mode @param[in] SerialIoI2cControllerNumber I2C controller @retval Status **/ EFI_STATUS GpioSetSerialIoI2cPinsIntoNativeMode ( IN UINT32 SerialIoI2cControllerNumber ); /** This function sets SerialIo I2C controller pins tolerance @param[in] SerialIoI2CControllerNumber I2C controller @param[in] Pad1v8Tolerance TRUE: Enable 1v8 Pad tolerance FALSE: Disable 1v8 Pad tolerance @retval Status **/ EFI_STATUS GpioSetSerialIoI2CPinsTolerance ( IN UINT32 SerialIoI2CControllerNumber, IN BOOLEAN Pad1v8Tolerance ); /** This function sets SerialIo UART controller pins into native mode @param[in] SerialIoI2CControllerNumber UART controller @param[in] HardwareFlowControl Hardware Flow control @retval Status **/ EFI_STATUS GpioSetSerialIoUartPinsIntoNativeMode ( IN UINT32 SerialIoUartControllerNumber, IN BOOLEAN HardwareFlowControl ); /** This function sets SerialIo SPI controller pins into native mode @param[in] SerialIoI2CControllerNumber SPI controller @retval Status **/ EFI_STATUS GpioSetSerialIoSpiPinsIntoNativeMode ( IN UINT32 SerialIoUartControllerNumber ); /** This function checks if GPIO pin for SATA reset port is in GPIO MODE @param[in] SataPort SATA port number @retval TRUE Pin is in GPIO mode FALSE Pin is in native mode **/ BOOLEAN GpioIsSataResetPortInGpioMode ( IN UINTN SataPort ); /** This function checks if SataDevSlp pin is in native mode @param[in] SataPort SATA port @param[out] DevSlpPad DevSlpPad @retval TRUE DevSlp is in native mode FALSE DevSlp is not in native mode **/ BOOLEAN GpioIsSataDevSlpPinEnabled ( IN UINTN SataPort, OUT GPIO_PAD *DevSlpPad ); #endif // _GPIO_NATIVE_LIB_H_