aboutsummaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-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
-rw-r--r--src/soc/nvidia/tegra124/chip.h2
-rw-r--r--src/soc/qualcomm/ipq806x/gpio.c6
-rw-r--r--src/soc/qualcomm/ipq806x/include/soc/gpio.h4
-rw-r--r--src/soc/qualcomm/ipq806x/spi.c2
-rw-r--r--src/soc/qualcomm/ipq806x/uart.c2
-rw-r--r--src/soc/rockchip/rk3288/gpio.c6
-rw-r--r--src/soc/rockchip/rk3288/include/soc/gpio.h8
-rw-r--r--src/soc/rockchip/rk3288/soc.c2
-rw-r--r--src/soc/samsung/exynos5250/include/soc/gpio.h2
-rw-r--r--src/soc/samsung/exynos5420/include/soc/gpio.h2
13 files changed, 41 insertions, 44 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 = {
diff --git a/src/soc/nvidia/tegra124/chip.h b/src/soc/nvidia/tegra124/chip.h
index c3652a182a..acabd37f7b 100644
--- a/src/soc/nvidia/tegra124/chip.h
+++ b/src/soc/nvidia/tegra124/chip.h
@@ -20,8 +20,8 @@
#ifndef __SOC_NVIDIA_TEGRA124_CHIP_H__
#define __SOC_NVIDIA_TEGRA124_CHIP_H__
#include <arch/cache.h>
+#include <gpio.h>
#include <soc/addressmap.h>
-#include <soc/gpio.h>
#define EFAULT 1
#define EINVAL 2
diff --git a/src/soc/qualcomm/ipq806x/gpio.c b/src/soc/qualcomm/ipq806x/gpio.c
index 46dca4e3c3..a0a3df9495 100644
--- a/src/soc/qualcomm/ipq806x/gpio.c
+++ b/src/soc/qualcomm/ipq806x/gpio.c
@@ -29,7 +29,7 @@
*/
#include <arch/io.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <soc/iomap.h>
/*******************************************************
@@ -116,7 +116,7 @@ unsigned *out - Value of GPIO output
Return : None
*******************************************************/
-int gpio_get_in_value(gpio_t gpio)
+int gpio_get(gpio_t gpio)
{
if (gpio_not_valid(gpio))
return -1;
@@ -126,7 +126,7 @@ int gpio_get_in_value(gpio_t gpio)
GPIO_IO_IN_MASK;
}
-void gpio_set_out_value(gpio_t gpio, int value)
+void gpio_set(gpio_t gpio, int value)
{
if (gpio_not_valid(gpio))
return;
diff --git a/src/soc/qualcomm/ipq806x/include/soc/gpio.h b/src/soc/qualcomm/ipq806x/include/soc/gpio.h
index 276022c0af..35429917ed 100644
--- a/src/soc/qualcomm/ipq806x/include/soc/gpio.h
+++ b/src/soc/qualcomm/ipq806x/include/soc/gpio.h
@@ -33,7 +33,7 @@
#ifndef __SOC_QUALCOMM_IPQ806X_GPIO_H_
#define __SOC_QUALCOMM_IPQ806X_GPIO_H_
-#include <gpiolib.h>
+#include <types.h>
#define GPIO_FUNC_ENABLE 1
#define GPIO_FUNC_DISABLE 0
@@ -90,6 +90,8 @@
#define GPIO_IO_IN_SHIFT 0
#define GPIO_IO_OUT_SHIFT 1
+typedef u32 gpio_t;
+
void gpio_tlmm_config_set(gpio_t gpio, unsigned int func,
unsigned int pull, unsigned int drvstr,
unsigned int enable);
diff --git a/src/soc/qualcomm/ipq806x/spi.c b/src/soc/qualcomm/ipq806x/spi.c
index 4cf64ebadc..0f72cac6be 100644
--- a/src/soc/qualcomm/ipq806x/spi.c
+++ b/src/soc/qualcomm/ipq806x/spi.c
@@ -4,7 +4,7 @@
#include <arch/io.h>
#include <delay.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <soc/iomap.h>
#include <soc/spi.h>
#include <stdlib.h>
diff --git a/src/soc/qualcomm/ipq806x/uart.c b/src/soc/qualcomm/ipq806x/uart.c
index 3e8e187fde..0a19e9a4f2 100644
--- a/src/soc/qualcomm/ipq806x/uart.c
+++ b/src/soc/qualcomm/ipq806x/uart.c
@@ -36,8 +36,8 @@
#include <console/console.h>
#include <console/uart.h>
#include <delay.h>
+#include <gpio.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/gsbi.h>
#include <soc/ipq_uart.h>
#include <stdint.h>
diff --git a/src/soc/rockchip/rk3288/gpio.c b/src/soc/rockchip/rk3288/gpio.c
index c3784ec4a8..b84d6a0821 100644
--- a/src/soc/rockchip/rk3288/gpio.c
+++ b/src/soc/rockchip/rk3288/gpio.c
@@ -19,10 +19,10 @@
#include <arch/io.h>
#include <console/console.h>
-#include <soc/soc.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <soc/grf.h>
#include <soc/pmu.h>
+#include <soc/soc.h>
#include <stdlib.h>
struct rk3288_gpio_regs *gpio_port[] = {
@@ -72,7 +72,7 @@ void gpio_input_pullup(gpio_t gpio)
__gpio_input(gpio, PULLUP);
}
-int gpio_get_in_value(gpio_t gpio)
+int gpio_get(gpio_t gpio)
{
return (readl(&gpio_port[gpio.port]->ext_porta) >> gpio.num) & 0x1;
}
diff --git a/src/soc/rockchip/rk3288/include/soc/gpio.h b/src/soc/rockchip/rk3288/include/soc/gpio.h
index c459de9321..6a0055ecb6 100644
--- a/src/soc/rockchip/rk3288/include/soc/gpio.h
+++ b/src/soc/rockchip/rk3288/include/soc/gpio.h
@@ -67,10 +67,4 @@ enum {
GPIO_D,
};
-void gpio_input(gpio_t gpio);
-void gpio_input_pulldown(gpio_t gpio);
-void gpio_input_pullup(gpio_t gpio);
-void gpio_output(gpio_t gpio, int value);
-int gpio_get_in_value(gpio_t gpio);
-
-#endif /* _ASM_ROCKCHIP_GPIO_H_ */
+#endif /* __SOC_ROCKCHIP_RK3288_GPIO_H__ */
diff --git a/src/soc/rockchip/rk3288/soc.c b/src/soc/rockchip/rk3288/soc.c
index e379644680..3048547ff9 100644
--- a/src/soc/rockchip/rk3288/soc.c
+++ b/src/soc/rockchip/rk3288/soc.c
@@ -22,7 +22,7 @@
#include <console/console.h>
#include <delay.h>
#include <device/device.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <soc/soc.h>
#include <stddef.h>
#include <stdlib.h>
diff --git a/src/soc/samsung/exynos5250/include/soc/gpio.h b/src/soc/samsung/exynos5250/include/soc/gpio.h
index bbe97a1048..398e7b02de 100644
--- a/src/soc/samsung/exynos5250/include/soc/gpio.h
+++ b/src/soc/samsung/exynos5250/include/soc/gpio.h
@@ -22,6 +22,8 @@
#include <soc/cpu.h>
+/* TODO: Align interface to src/include/gpio.h! */
+
struct gpio_bank {
unsigned int con;
unsigned int dat;
diff --git a/src/soc/samsung/exynos5420/include/soc/gpio.h b/src/soc/samsung/exynos5420/include/soc/gpio.h
index 1c6a77b7c4..ee34bc3abf 100644
--- a/src/soc/samsung/exynos5420/include/soc/gpio.h
+++ b/src/soc/samsung/exynos5420/include/soc/gpio.h
@@ -22,6 +22,8 @@
#include <soc/cpu.h>
+/* TODO: Align interface to src/include/gpio.h! */
+
struct gpio_bank {
unsigned int con;
unsigned int dat;