summaryrefslogtreecommitdiff
path: root/src/soc/nvidia/tegra/gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/nvidia/tegra/gpio.c')
-rw-r--r--src/soc/nvidia/tegra/gpio.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/soc/nvidia/tegra/gpio.c b/src/soc/nvidia/tegra/gpio.c
index 9f09f24547..009334f74c 100644
--- a/src/soc/nvidia/tegra/gpio.c
+++ b/src/soc/nvidia/tegra/gpio.c
@@ -19,16 +19,15 @@
#include <arch/io.h>
#include <console/console.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <stddef.h>
#include <stdint.h>
#include <delay.h>
-#include <gpiolib.h>
-#include "gpio.h"
#include "pinmux.h"
-void __gpio_input(gpio_t gpio, u32 pull)
+static void __gpio_input(gpio_t gpio, u32 pull)
{
u32 pinmux_config = PINMUX_INPUT_ENABLE | pull;
@@ -38,10 +37,10 @@ void __gpio_input(gpio_t gpio, u32 pull)
pinmux_set_config(gpio >> GPIO_PINMUX_SHIFT, pinmux_config);
}
-void __gpio_output(gpio_t gpio, int value, u32 od)
+static void __gpio_output(gpio_t gpio, int value, u32 od)
{
gpio_set_int_enable(gpio, 0);
- gpio_set_out_value(gpio, value);
+ gpio_set(gpio, value);
gpio_set_out_enable(gpio, 1);
gpio_set_mode(gpio, GPIO_MODE_GPIO);
pinmux_set_config(gpio >> GPIO_PINMUX_SHIFT, PINMUX_PULL_NONE | od);
@@ -121,7 +120,7 @@ int gpio_get_out_enable(gpio_t gpio)
return (port & (1 << bit)) != 0;
}
-void gpio_set_out_value(gpio_t gpio, int value)
+void gpio_set(gpio_t gpio, int value)
{
int bit = gpio % GPIO_GPIOS_PER_PORT;
gpio_write_port(gpio & ((1 << GPIO_PINMUX_SHIFT) - 1),
@@ -137,7 +136,7 @@ int gpio_get_out_value(gpio_t gpio)
return (port & (1 << bit)) != 0;
}
-int gpio_get_in_value(gpio_t gpio)
+int gpio_get(gpio_t gpio)
{
int bit = gpio % GPIO_GPIOS_PER_PORT;
u32 port = gpio_read_port(gpio & ((1 << GPIO_PINMUX_SHIFT) - 1),
@@ -212,3 +211,13 @@ void gpio_input(gpio_t gpio)
{
__gpio_input(gpio, PINMUX_PULL_NONE);
}
+
+void gpio_output(gpio_t gpio, int value)
+{
+ __gpio_output(gpio, value, 0);
+}
+
+void gpio_output_open_drain(gpio_t gpio, int value)
+{
+ __gpio_output(gpio, value, PINMUX_OPEN_DRAIN);
+}