diff options
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/nvidia/tegra/gpio.c | 23 | ||||
-rw-r--r-- | src/soc/nvidia/tegra/gpio.h | 20 | ||||
-rw-r--r-- | src/soc/nvidia/tegra/software_i2c.c | 6 | ||||
-rw-r--r-- | src/soc/nvidia/tegra124/chip.h | 2 | ||||
-rw-r--r-- | src/soc/qualcomm/ipq806x/gpio.c | 6 | ||||
-rw-r--r-- | src/soc/qualcomm/ipq806x/include/soc/gpio.h | 4 | ||||
-rw-r--r-- | src/soc/qualcomm/ipq806x/spi.c | 2 | ||||
-rw-r--r-- | src/soc/qualcomm/ipq806x/uart.c | 2 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/gpio.c | 6 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/include/soc/gpio.h | 8 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/soc.c | 2 | ||||
-rw-r--r-- | src/soc/samsung/exynos5250/include/soc/gpio.h | 2 | ||||
-rw-r--r-- | src/soc/samsung/exynos5420/include/soc/gpio.h | 2 |
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; |