/** @file
Header file for GPIO Private Lib Internal functions.
Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _GPIO_NATIVE_PRIVATE_LIB_INTERNAL_H_
#define _GPIO_NATIVE_PRIVATE_LIB_INTERNAL_H_
#include
#define GPIO_PAD_NONE 0
/**
This function provides SerialIo I2C controller pins
@param[in] SerialIoI2cControllerNumber I2C controller
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetSerialIoI2cPins (
IN UINT32 SerialIoI2cControllerNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides SerialIo UART controller pins
@param[in] SerialIoUartControllerNumber UART controller
@param[in] HardwareFlowControl Hardware Flow control
@param[in] PinMuxing UART controller pin muxing
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetSerialIoUartPins (
IN UINT32 SerialIoUartControllerNumber,
IN BOOLEAN HardwareFlowControl,
IN UINT32 PinMuxing,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides SerialIo SPI controller pins
@param[in] SerialIoSpiControllerNumber SPI controller
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetSerialIoSpiPins (
IN UINT32 SerialIoSpiControllerNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides ISH GP pin data
@param[in] IshGpPinNumber ISH GP pin number
@param[out] NativePin ISH GP pin
**/
VOID
GpioGetIshGpPin (
IN UINT32 IshGpPinNumber,
OUT GPIO_PAD_NATIVE_FUNCTION *NativePin
);
/**
This function provides ISH UART controller pins
@param[in] IshUartControllerNumber ISH UART controller
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetIshUartPins (
IN UINT32 IshUartControllerNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides ISH I2C controller pins
@param[in] IshI2cControllerNumber ISH I2C controller
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetIshI2cPins (
IN UINT32 IshI2cControllerNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides ISH SPI controller pins
@param[in] IshSpiControllerNumber SPI controller
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetIshSpiPins (
IN UINT32 IshSpiControllerNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides SCS SD CARD controller pins
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetScsSdCardPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides SCS SD CARD detect pin
@retval GpioPin SD CARD Detect pin
**/
GPIO_PAD
GpioGetScsSdCardDetectPin (
VOID
);
/**
This function provides SCS eMMC controller pins
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetScsEmmcPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides HD Audio Link pins
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetHdAudioLinkPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides DMIC interface pins
@param[in] DmicNumber DMIC interface
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetHdaDmicPins (
IN UINT32 DmicNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides SSP/I2S interface pins
@param[in] SspInterfaceNumber SSP/I2S interface
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetHdaSspPins (
IN UINT32 SspInterfaceNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides SNDW interface pins
@param[in] SndwInterfaceNumber SNDWx interface number
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetHdaSndwPins (
IN UINT32 SndwInterfaceNumber,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides SMBUS interface pins
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetSmbusPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides SATA DevSlp pin data
@param[in] SataCtrlIndex SATA controller index
@param[in] SataPort SATA port number
@param[out] NativePin SATA DevSlp pin
**/
VOID
GpioGetSataDevSlpPin (
IN UINT32 SataCtrlIndex,
IN UINTN SataPort,
OUT GPIO_PAD_NATIVE_FUNCTION *NativePin
);
/**
This function provides PCIe CLKREQ pin data
@param[in] ClkreqIndex CLKREQ# number
@param[out] NativePin Native pin data
**/
VOID
GpioGetPcieClkReqPin (
IN UINT32 ClkreqIndex,
OUT GPIO_PAD_NATIVE_FUNCTION *NativePin
);
/**
This function provides eDP pins
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetEdpPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides DDPx interface pins
@param[in] DdpInterface DDPx interface
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetDdpPins (
IN GPIO_DDP DdpInterface,
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides CNVi BT UART pins
@param[in] ConnectionType CNVi BT UART connection type
@param[out] VCnviBtUartPad Table with vCNV_BT_UARTx pads
@param[out] VCnviBtUartPadMode vCNV_BT_UARTx pad mode
@param[out] VUartForCnviBtPad Table with vUART0 pads
@param[out] VUartForCnviBtPadMode vUART0 pad mode
**/
VOID
GpioGetCnviBtUartPins (
IN VGPIO_CNVI_BT_UART_CONNECTION_TYPE ConnectionType,
OUT GPIO_PAD **VCnviBtUartPad,
OUT GPIO_PAD_MODE *VCnviBtUartPadMode,
OUT GPIO_PAD **VUartForCnviBtPad,
OUT GPIO_PAD_MODE *VUartForCnviBtPadMode
);
/**
This function provides CNVi BT UART external pads
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetCnviBtUartExternalPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides CNVi BT I2S pins
@param[in] ConnectionType CNVi BT I2S connection type
@param[out] VCnviBtI2sPad Table with vCNV_BT_I2Sx pads
@param[out] VCnviBtI2sPadMode vCNV_BT_I2Sx pad mode
@param[out] VSspForCnviBtPad Table with vSSP2 pads
@param[out] VSspForCnviBtPadMode vSSP2 pad mode
**/
VOID
GpioGetCnviBtI2sPins (
IN VGPIO_CNVI_BT_I2S_CONNECTION_TYPE ConnectionType,
OUT GPIO_PAD **VCnviBtI2sPad,
OUT GPIO_PAD_MODE *VCnviBtI2sPadMode,
OUT GPIO_PAD **VSspForCnviBtPad,
OUT GPIO_PAD_MODE *VSspForCnviBtPadMode
);
/**
This function provides CNVi BT I2S external pads
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetCnviBtI2sExternalPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides CNVi MFUART1 pins
@param[in] ConnectionType CNVi MFUART1 connection type
@param[out] VCnviBtI2sPad Table with vCNV_MFUART1x pads
@param[out] VCnviBtI2sPadMode vCNV_MFUART1x pad mode
@param[out] VSspForCnviBtPad Table with vISH_UART0 pads
@param[out] VSspForCnviBtPadMode vISH_UART0 pad mode
**/
VOID
GpioGetCnviMfUart1Pins (
IN VGPIO_CNVI_MF_UART1_CONNECTION_TYPE ConnectionType,
OUT GPIO_PAD **VCnviMfUart1Pad,
OUT GPIO_PAD_MODE *VCnviMfUart1PadMode,
OUT GPIO_PAD **VUartForCnviMfUart1Pad,
OUT GPIO_PAD_MODE *VUartForCnviMfUart1PadMode
);
/**
This function provides CNVi MFUART1 external pads
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetCnviMfUart1ExternalPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides CNVi Bluetooth Enable pad
@retval GpioPad CNVi Bluetooth Enable pad
**/
GPIO_PAD
GpioGetCnviBtEnablePin (
VOID
);
/**
This function provides CNVi BRI RGI GPIO pads
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetCnvBriRgiPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides CNVi MFUART2 external pins
@param[out] NativePinsTable Table with pins
**/
VOID
GpioGetCnvMfUart2ExternalPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable
);
/**
This function provides CNVi BT interface select pin
@retval GpioPad GPIO pad for CNVi BT interface select
**/
GPIO_PAD
GpioGetCnviBtIfSelectPin (
VOID
);
/**
This function provides CNVi BT Charging pin
@retval GpioPad GPIO pad for CNVi BT Charging select
**/
GPIO_PAD
GpioGetCnviBtChargingPin (
VOID
);
/**
This function provides CNVi A4WP pin
@param[out] GpioNativePad GPIO native pad for CNVi A4WP
**/
VOID
GpioGetCnviA4WpPin (
OUT GPIO_PAD_NATIVE_FUNCTION *GpioNativePad
);
/**
This function provides CNVi BT host wake int pin
@retval GpioPad GPIO pad BT host wake int
**/
GPIO_PAD
GpioGetCnviBtHostWakeIntPin (
VOID
);
/**
This function provides IMGCLKOUT pins
@param[out] NativePinsTable Table with pins
@param[out] NoOfNativePins Number of pins
**/
VOID
GpioGetImgClkOutPins (
OUT GPIO_PAD_NATIVE_FUNCTION **NativePinsTable,
OUT UINT32 *NoOfNativePins
);
/**
This function provides PWRBTN pin
@retval GpioPad PWRTBTN pin
**/
GPIO_PAD
GpioGetPwrBtnPin (
VOID
);
/**
This procedure enables debounce feature on a selected pad configured in input mode
Debounce time can be specified in microseconds. GPIO HW supports only certain values
according to below formula:
DebounceTime = (2 ^ PADCFG_DW2.DEBOUNCE)*(glitch filter clock period).
RTC clock with f = 32 KHz is used for glitch filter.
DebounceTime = (2 ^ PADCFG_DW2.DEBOUNCE)*(31.25 us).
Supported DebounceTime values are following:
DebounceTime = 0 -> Debounce feature disabled
DebounceTime > 0 && < 250us -> Not supported
DebounceTime = 250us - 1024000us -> Supported range (DebounceTime = 250us * 2^n)
For values not supported by GPIO HW, function will round down
to closest supported
@param[in] GpioPad GPIO pad
@param[in, out] DebounceTime Debounce Time in microseconds
If Debounce Time = 0, Debouncer feature will be disabled
Function will set DebounceTime argument to rounded supported value
@retval EFI_SUCCESS The function completed successfully
@retval EFI_INVALID_PARAMETER Invalid GpioPad or unsupported DebounceDuration value
@retval EFI_UNSUPPORTED GpioPad is not owned by host
**/
EFI_STATUS
GpioSetDebounceTimer (
IN GPIO_PAD GpioPad,
IN OUT UINT32 *DebounceTime
);
/**
This function provides LPC pin
@retval GpioPad LPC pin
**/
GPIO_PAD
GpioGetLpcPin (
VOID
);
#endif // _GPIO_NATIVE_PRIVATE_LIB_INTERNAL_H_