aboutsummaryrefslogtreecommitdiff
path: root/src/soc/nvidia/tegra
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/nvidia/tegra')
-rw-r--r--src/soc/nvidia/tegra/gpio.c23
-rw-r--r--src/soc/nvidia/tegra/gpio.h20
-rw-r--r--src/soc/nvidia/tegra/software_i2c.c6
3 files changed, 23 insertions, 26 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);
+}
diff --git a/src/soc/nvidia/tegra/gpio.h b/src/soc/nvidia/tegra/gpio.h
index 2ad3ab3e5f..72c7179f7c 100644
--- a/src/soc/nvidia/tegra/gpio.h
+++ b/src/soc/nvidia/tegra/gpio.h
@@ -21,29 +21,15 @@
#define __SOC_NVIDIA_TEGRA_GPIO_H__
#include <stdint.h>
-#include <gpiolib.h>
#include "pinmux.h"
+typedef u32 gpio_t;
+
#define GPIO_PINMUX_SHIFT 16
#define GPIO(name) ((gpio_t)(GPIO_##name##_INDEX | \
(PINMUX_GPIO_##name << GPIO_PINMUX_SHIFT)))
-void __gpio_output(gpio_t gpio, int value, u32 open_drain);
-void __gpio_input(gpio_t gpio, u32 pull);
-
-/* Higher level function wrappers for common GPIO configurations. */
-
-static inline void gpio_output(gpio_t gpio, int value)
-{
- __gpio_output(gpio, value, 0);
-}
-
-static inline void gpio_output_open_drain(gpio_t gpio, int value)
-{
- __gpio_output(gpio, value, PINMUX_OPEN_DRAIN);
-}
-
/* Functions to modify specific GPIO control values. */
enum gpio_mode {
@@ -72,6 +58,8 @@ void gpio_get_int_level(gpio_t gpio, int *high_rise, int *edge, int *delta);
void gpio_set_int_clear(gpio_t gpio);
+void gpio_output_open_drain(gpio_t gpio, int value);
+
/* Hardware definitions. */
enum {
diff --git a/src/soc/nvidia/tegra/software_i2c.c b/src/soc/nvidia/tegra/software_i2c.c
index 35fc1af3cc..d1172bcde6 100644
--- a/src/soc/nvidia/tegra/software_i2c.c
+++ b/src/soc/nvidia/tegra/software_i2c.c
@@ -18,7 +18,7 @@
*/
#include <device/i2c.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <soc/pinmux.h>
#include "i2c.h"
@@ -58,12 +58,12 @@ static void tegra_set_scl(unsigned bus, int high)
static int tegra_get_sda(unsigned bus)
{
- return gpio_get_in_value(pins[bus].sda);
+ return gpio_get(pins[bus].sda);
}
static int tegra_get_scl(unsigned bus)
{
- return gpio_get_in_value(pins[bus].scl);
+ return gpio_get(pins[bus].scl);
}
static struct software_i2c_ops tegra_ops = {