/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php. THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #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_