diff --git a/src/soc/nvidia/tegra/gpio.c b/src/soc/nvidia/tegra/gpio.c index 01b5242ca9..f834cd2b37 100644 --- a/src/soc/nvidia/tegra/gpio.c +++ b/src/soc/nvidia/tegra/gpio.c @@ -26,7 +26,7 @@ #include "gpio.h" #include "pinmux.h" -static void gpio_input_common(int gpio_index, int pinmux_index, u32 pull) +void __gpio_input(int gpio_index, int pinmux_index, u32 pull) { u32 pinmux_config = PINMUX_INPUT_ENABLE | PINMUX_TRISTATE | pull; @@ -36,22 +36,7 @@ static void gpio_input_common(int gpio_index, int pinmux_index, u32 pull) pinmux_set_config(pinmux_index, pinmux_config); } -void gpio_input(int gpio_index, int pinmux_index) -{ - gpio_input_common(gpio_index, pinmux_index, PINMUX_PULL_NONE); -} - -void gpio_input_pullup(int gpio_index, int pinmux_index) -{ - gpio_input_common(gpio_index, pinmux_index, PINMUX_PULL_UP); -} - -void gpio_input_pulldown(int gpio_index, int pinmux_index) -{ - gpio_input_common(gpio_index, pinmux_index, PINMUX_PULL_DOWN); -} - -void gpio_output(int gpio_index, int pinmux_index, int value) +void __gpio_output(int gpio_index, int pinmux_index, int value) { /* TODO: Set OPEN_DRAIN based on what pin it is? */ diff --git a/src/soc/nvidia/tegra/gpio.h b/src/soc/nvidia/tegra/gpio.h index b62dc90906..71a552e870 100644 --- a/src/soc/nvidia/tegra/gpio.h +++ b/src/soc/nvidia/tegra/gpio.h @@ -22,12 +22,20 @@ #include -/* Higher level functions for common GPIO configurations. */ +/* Higher level function wrappers for common GPIO configurations. */ -void gpio_input(int gpio_index, int pinmux_index); -void gpio_input_pullup(int gpio_index, int pinmux_index); -void gpio_input_pulldown(int gpio_index, int pinmux_index); -void gpio_output(int gpio_index, int pinmux_index, int value); +#define gpio_input(gpio_enum) __gpio_input(gpio_enum, \ + PINMUX_##gpio_enum, PINMUX_PULL_NONE) +#define gpio_input_pulldown(gpio_enum) __gpio_input(gpio_enum, \ + PINMUX_##gpio_enum, PINMUX_PULL_DOWN) +#define gpio_input_pullup(gpio_enum) __gpio_input(gpio_enum, \ + PINMUX_##gpio_enum, PINMUX_PULL_UP) + +#define gpio_output(gpio_enum, value) __gpio_output(gpio_enum, \ + PINMUX_##gpio_enum, value) + +void __gpio_input(int gpio_index, int pinmux_index, u32 pull); +void __gpio_output(int gpio_index, int pinmux_index, int value); /* Functions to modify specific GPIO control values. */ diff --git a/src/soc/nvidia/tegra124/gpio.h b/src/soc/nvidia/tegra124/gpio.h index 83d727d979..64e5fad0d9 100644 --- a/src/soc/nvidia/tegra124/gpio.h +++ b/src/soc/nvidia/tegra124/gpio.h @@ -23,6 +23,8 @@ #include #include +#include "pinmux.h" /* for pinmux constants in GPIO macros */ + /* GPIO index constants. */ #define GPIO_PORT_CONSTANTS(port) \