/** @file Header file for GPIO Lib implementation. Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _GPIO_LIBRARY_H_ #define _GPIO_LIBRARY_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // BIT15-0 - pad number // BIT31-16 - group info // BIT23- 16 - group index // BIT31- 24 - chipset ID #define PAD_INFO_MASK 0x0000FFFF #define GROUP_INFO_POSITION 16 #define GROUP_INFO_MASK 0xFFFF0000 #define GROUP_INDEX_MASK 0x00FF0000 #define UNIQUE_ID_MASK 0xFF000000 #define UNIQUE_ID_POSITION 24 #define GPIO_PAD_DEF(Group,Pad) (UINT32)(((Group) << 16) + (Pad)) #define GPIO_GROUP_DEF(Index,ChipsetId) ((Index) | ((ChipsetId) << 8)) #define GPIO_GET_GROUP_INDEX(Group) ((Group) & 0xFF) #define GPIO_GET_GROUP_FROM_PAD(Pad) ((Pad) >> 16) #define GPIO_GET_GROUP_INDEX_FROM_PAD(Pad) GPIO_GET_GROUP_INDEX (((Pad) >> 16)) #define GPIO_GET_PAD_NUMBER(Pad) ((Pad) & 0xFFFF) #define GPIO_GET_CHIPSET_ID(Pad) ((Pad) >> 24) #define GPIO_GET_PAD_POSITION(PadNumber) ((PadNumber) % 32) #define GPIO_GET_DW_NUM(PadNumber) ((PadNumber) / 32u) // // Number of PADCFG_DW registers // #define GPIO_PADCFG_DW_REG_NUMBER 4 /** This internal procedure will calculate GPIO_RESET_CONFIG value (new type) based on provided PadRstCfg for a specific GPIO Pad. @param[in] GpioPad GPIO Pad @param[in] PadRstCfg GPIO PadRstCfg value @retval GpioResetConfig GPIO Reset configuration (new type) **/ GPIO_RESET_CONFIG GpioResetConfigFromPadRstCfg ( IN GPIO_PAD GpioPad, IN UINT32 PadRstCfg ); /** This internal procedure will calculate PadRstCfg register value based on provided GPIO Reset configuration for a certain pad. @param[in] GpioPad GPIO Pad @param[in] GpioResetConfig GPIO Reset configuration @param[out] PadRstCfg GPIO PadRstCfg value @retval EFI_SUCCESS The function completed successfully @retval EFI_INVALID_PARAMETER Invalid configuration **/ EFI_STATUS GpioPadRstCfgFromResetConfig ( IN GPIO_PAD GpioPad, IN GPIO_RESET_CONFIG GpioResetConfig, OUT UINT32 *PadRstCfg ); /** This procedure will calculate PADCFG register value based on GpioConfig data @param[in] GpioPad GPIO Pad @param[in] GpioConfig GPIO Configuration data @param[out] PadCfgDwReg PADCFG DWx register value @param[out] PadCfgDwRegMask Mask with PADCFG DWx register bits to be modified **/ VOID GpioPadCfgRegValueFromGpioConfig ( IN GPIO_PAD GpioPad, IN CONST GPIO_CONFIG *GpioConfig, OUT UINT32 *PadCfgDwReg, OUT UINT32 *PadCfgDwRegMask ); /** Generates GPIO group name from GroupIndex @param[in] GroupIndex Gpio GroupIndex @retval CHAR8* Pointer to the GPIO group name **/ CONST CHAR8* GpioGetGroupName ( IN UINT32 GroupIndex ); #endif // _GPIO_LIBRARY_H_