/** @file
Support for IO expander TCA6424.
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _GPIO_EXPANDER_LIB_H_
#define _GPIO_EXPANDER_LIB_H_
#include
#include
#include
#include
#include
#include
#include
/**
Set the Direction value for the given Expander Gpio pin.
This function is to Set the direction value for the GPIO
Pin within the giving Expander.
@param[in] Expander Expander Value with in the Contoller
@param[in] Pin Pin with in the Expnader Value
@param[in] Value none
**/
VOID
GpioExpSetDirection (
IN UINT8 Expander,
IN UINT8 Pin,
IN UINT8 Direction
);
/**
Set the input value for the given Expander Gpio pin.
This function is to get the input value for the GPIO
Pin within the giving Expander.
@param[in] Expander Expander Value with in the Contoller
@param[in] Pin Pin with in the Expnader Value
@param[in] Value none
**/
VOID
GpioExpSetPolarity (
IN UINT8 Expander,
IN UINT8 Pin,
IN UINT8 Polarity
);
/**
Set the Output value for the given Expander Gpio pin.
This function is to Set the Output value for the GPIO
Pin within the giving Expander.
@param[in] Expander Expander Value with in the Contoller
@param[in] Pin Pin with in the Expnader Value
@param[in] Value none
**/
VOID
GpioExpSetOutput (
IN UINT8 Expander,
IN UINT8 Pin,
IN UINT8 Value
);
/**
Returns the data from register value giving in the input.
This function is to get the data from the Expander
Registers by following the I2C Protocol communication
@param[in] Bar0 Bar address of the SerialIo Controller
@param[in] Address Expander Value with in the Contoller
@param[in] Register Address of Input/Output/Configure/Polarity
registers with in the Expander
@retval UINT8 Value returned from the register
**/
UINT8
GpioExpGetInput (
IN UINT8 Expander,
IN UINT8 Pin
);
/**
Configures all registers of a single IO Expander in one go.
@param[in] Expander Expander number (0/1)
@param[in] Direction Bit-encoded direction values. BIT0 is for pin0, etc. 0=output, 1=input
@param[in] Polarity Bit-encoded input inversion values. BIT0 is for pin0, etc. 0=normal, 1=inversion
@param[in] Output Bit-encoded output state, ignores polarity, only applicable if direction=INPUT. BIT0 is for pin0, etc. 0=low, 1=high
**/
VOID
GpioExpBulkConfig (
IN UINT8 Expander,
IN UINT32 Direction,
IN UINT32 Polarity,
IN UINT32 Output
);
/**
Returns the Controller on which GPIO expander is present.
This function returns the Controller value
@param[out] Controller Pointer to a Controller value on
which I2C expander is configured.
@retval EFI_SUCCESS non.
**/
EFI_STATUS
GpioExpGetController (
OUT UINT8 *Controller
);
#endif