130 lines
2.9 KiB
C
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__ */
|