0
0
mirror of https://github.com/edk2-porting/edk2-msm synced 2025-05-25 14:20:10 +00:00
Files
2022-10-13 21:54:35 +08:00

117 lines
3.0 KiB
C

#ifndef __EFI_QCOM_TLMM_H__
#define __EFI_QCOM_TLMM_H__
#define QCOM_TLMM_PROTOCOL_REVISION 0x0000000000000001
#define QCOM_TLMM_RT_PROTOCOL_VERSION 0x00010000
#define QCOM_TLMM_PROTOCOL_GUID \
{ \
0xad9aec18, 0x7bf0, 0x4809, \
{ \
0x9e, 0x96, 0x30, 0x12, 0x30, 0x9f, 0x3d, 0xf7 \
} \
}
#define QCOM_TLMM_RT_PROTOCOL_GUID \
{ \
0xcc3f4da6, 0xa51e, 0x4fb7, \
{ \
0x98, 0xd1, 0xa0, 0x6e, 0xb8, 0x5d, 0x8e, 0x1e \
} \
}
extern EFI_GUID gQcomTlmmProtocolGuid;
extern EFI_GUID gQcomTlmmRTProtocolGuid;
#define GPIO_ENUM_FORCE32(name) GPIO_##name##_SIZE = 0x7FFFFFFF
#define EFI_GPIO_CFG(gpio, func, dir, pull, drive) \
(((gpio) & 0x3FF)<< 4 | \
((func) & 0xF)| \
((dir) & 0x1) << 14| \
((pull) & 0x3) << 15| \
((drive)& 0xF) << 17| 0x20000000)
typedef struct _EFI_QCOM_TLMM_PROTOCOL EFI_QCOM_TLMM_PROTOCOL;
typedef enum {
TLMM_GPIO_DISABLE = 0,
TLMM_GPIO_ENABLE = 1,
GPIO_ENUM_FORCE32(ENABLE)
} TLMM_ENABLE_TYPE;
typedef enum {
GPIO_LOW_VALUE = 0,
GPIO_HIGH_VALUE = 1,
GPIO_ENUM_FORCE32(VALUE)
} TLMM_VALUE_TYPE;
typedef enum {
GPIO_INPUT = 0,
GPIO_OUTPUT = 1,
GPIO_ENUM_FORCE32(DIRECTION)
} TLMM_DIRECTION_TYPE;
typedef enum {
GPIO_NO_PULL = 0,
GPIO_PULL_DOWN = 1,
GPIO_KEEPER = 2,
GPIO_PULL_UP = 3,
GPIO_ENUM_FORCE32(PULL)
} TLMM_PULL_TYPE;
typedef enum {
GPIO_2MA = 0,
GPIO_4MA = 1,
GPIO_6MA = 2,
GPIO_8MA = 3,
GPIO_10MA = 4,
GPIO_12MA = 5,
GPIO_14MA = 6,
GPIO_16MA = 7,
GPIO_ENUM_FORCE32(DRIVESTR)
} TLMM_DRIVE_STRENGTH_TYPE;
typedef
EFI_STATUS
(EFIAPI *EFI_TLMM_CONFIG_GPIO) (
IN UINT32 Config,
IN UINT32 Enable
);
typedef
EFI_STATUS
(EFIAPI *EFI_TLMM_CONFIG_GPIO_GROUP) (
IN UINT32 Enable,
IN UINT32 *ConfigGroup,
IN UINT32 Size
);
typedef
EFI_STATUS
(EFIAPI *EFI_TLMM_GPIO_IN) (
IN UINT32 Config,
OUT UINT32 *Value
);
typedef
EFI_STATUS
(EFIAPI *EFI_TLMM_GPIO_OUT) (
IN UINT32 Config,
IN UINT32 Value
);
typedef
EFI_STATUS
(EFIAPI *EFI_TLMM_SET_INACTIVE_CONFIG) (
IN UINT32 GpioNumber,
IN UINT32 Config
);
struct _EFI_QCOM_TLMM_PROTOCOL {
UINT64 Revision;
EFI_TLMM_CONFIG_GPIO ConfigGpio;
EFI_TLMM_CONFIG_GPIO_GROUP ConfigGpioGroup;
EFI_TLMM_GPIO_IN GpioIn;
EFI_TLMM_GPIO_OUT GpioOut;
EFI_TLMM_SET_INACTIVE_CONFIG SetInactiveConfig;
};
#endif