/** @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_