Files

130 lines
2.9 KiB
C

/*
* Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
*
* SPDX-License-Identifier: MIT
*/
#ifndef __BOARD_COMMON_H__
#define __BOARD_COMMON_H__
#define GE_GPIO_CTRL(n, io, is_invert) \
static inline void n##_on(void) \
{ \
int ret; \
printf("%s on, invert:%d\n", #n, is_invert); \
xPinmuxSet(io, PIN_FUNC0); \
ret = xGpioSetDir(io, GPIO_DIR_OUT); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #n); \
return; \
} \
\
if (is_invert) \
ret = xGpioSetValue(io, GPIO_LEVEL_LOW); \
else \
ret = xGpioSetValue(io, GPIO_LEVEL_HIGH); \
if (ret < 0) { \
printf("%s set gpio val fail\n", #n); \
return; \
} \
} \
\
static inline void n##_off(void) \
{ \
int ret; \
printf("%s off, invert:%d\n", #n, is_invert); \
xPinmuxSet(io, PIN_FUNC0); \
ret = xGpioSetDir(io, GPIO_DIR_OUT); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #n); \
return; \
} \
\
if (is_invert) \
ret = xGpioSetValue(io, GPIO_LEVEL_HIGH); \
else \
ret = xGpioSetValue(io, GPIO_LEVEL_LOW); \
if (ret < 0) { \
printf("%s set gpio val fail\n", #n); \
return; \
} \
}
#define HIZ_GPIO_CTRL(n, io) \
static inline void n##_on(void) \
{ \
int ret; \
ret = xGpioSetDir(io, GPIO_DIR_IN); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #n); \
return; \
} \
} \
\
static inline void n##_off(void) \
{ \
int ret; \
ret = xGpioSetDir(io, GPIO_DIR_OUT); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #n); \
return; \
} \
\
}
#define INPUT_DWN_GPIO_CTRL(io) \
static inline void io##_input_DWN(void) \
{ \
int ret; \
xPinmuxSet(io, PIN_FUNC0); \
ret = xGpioSetDir(io, GPIO_DIR_IN); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #io); \
return; \
} \
ret = xPinconfSet(io, PINF_CONFIG_BIAS_PULL_DOWN); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #io); \
return; \
} \
}
#define INPUT_UP_GPIO_CTRL(io) \
static inline void io##_input_UP(void) \
{ \
int ret; \
xPinmuxSet(io, PIN_FUNC0); \
ret = xGpioSetDir(io, GPIO_DIR_IN); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #io); \
return; \
} \
ret = xPinconfSet(io, PINF_CONFIG_BIAS_PULL_UP); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #io); \
return; \
} \
}
#define INPUT_DIS_GPIO_CTRL(io) \
static inline void io##_input_DIS(void) \
{ \
int ret; \
xPinmuxSet(io, PIN_FUNC0); \
ret = xGpioSetDir(io, GPIO_DIR_IN); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #io); \
return; \
} \
ret = xPinconfSet(io, PINF_CONFIG_BIAS_DISABLE); \
if (ret < 0) { \
printf("%s gpio dir fail\n", #io); \
return; \
} \
}
#define INVERT 1
#define NOINVERT 0
#endif /* __BOARD_COMMON_H__ */