summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/gpio.h (renamed from src/include/gpiolib.h)33
-rw-r--r--src/lib/tristate_gpios.c8
-rw-r--r--src/mainboard/google/nyan/boardid.c10
-rw-r--r--src/mainboard/google/nyan/bootblock.c2
-rw-r--r--src/mainboard/google/nyan/chromeos.c10
-rw-r--r--src/mainboard/google/nyan/early_configs.c2
-rw-r--r--src/mainboard/google/nyan/mainboard.c2
-rw-r--r--src/mainboard/google/nyan/reset.c2
-rw-r--r--src/mainboard/google/nyan_big/boardid.c4
-rw-r--r--src/mainboard/google/nyan_big/bootblock.c2
-rw-r--r--src/mainboard/google/nyan_big/chromeos.c10
-rw-r--r--src/mainboard/google/nyan_big/early_configs.c2
-rw-r--r--src/mainboard/google/nyan_big/mainboard.c2
-rw-r--r--src/mainboard/google/nyan_big/reset.c2
-rw-r--r--src/mainboard/google/nyan_blaze/boardid.c4
-rw-r--r--src/mainboard/google/nyan_blaze/bootblock.c2
-rw-r--r--src/mainboard/google/nyan_blaze/chromeos.c10
-rw-r--r--src/mainboard/google/nyan_blaze/early_configs.c2
-rw-r--r--src/mainboard/google/nyan_blaze/mainboard.c2
-rw-r--r--src/mainboard/google/nyan_blaze/reset.c2
-rw-r--r--src/mainboard/google/rush/boardid.c10
-rw-r--r--src/mainboard/google/rush/chromeos.c6
-rw-r--r--src/mainboard/google/rush/reset.c2
-rw-r--r--src/mainboard/google/rush_ryu/boardid.c4
-rw-r--r--src/mainboard/google/rush_ryu/chromeos.c6
-rw-r--r--src/mainboard/google/rush_ryu/gpio.h2
-rw-r--r--src/mainboard/google/rush_ryu/romstage.c2
-rw-r--r--src/mainboard/google/storm/boardid.c9
-rw-r--r--src/mainboard/google/storm/cdp.c2
-rw-r--r--src/mainboard/google/storm/mainboard.c13
-rw-r--r--src/mainboard/google/veyron_pinky/board.h2
-rw-r--r--src/mainboard/google/veyron_pinky/boardid.c4
-rw-r--r--src/mainboard/google/veyron_pinky/chromeos.c12
-rw-r--r--src/mainboard/google/veyron_pinky/mainboard.c6
-rw-r--r--src/mainboard/google/veyron_pinky/reset.c2
-rw-r--r--src/mainboard/google/veyron_pinky/sdram_configs.c10
-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
49 files changed, 142 insertions, 148 deletions
diff --git a/src/include/gpiolib.h b/src/include/gpio.h
index 436f26ac04..af06697050 100644
--- a/src/include/gpiolib.h
+++ b/src/include/gpio.h
@@ -17,11 +17,22 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef __SRC_INCLUDE_GPIOLIB_H__
-#define __SRC_INCLUDE_GPIOLIB_H__
+#ifndef __SRC_INCLUDE_GPIO_H__
+#define __SRC_INCLUDE_GPIO_H__
-/* A generic type, use accessor macros to actually access the hardware. */
-typedef unsigned gpio_t;
+#include <soc/gpio.h>
+#include <types.h>
+
+/* <soc/gpio.h> must typedef a gpio_t that fits in 32 bits. */
+_Static_assert(sizeof(gpio_t) <= sizeof(u32), "gpio_t doesn't fit in lb_gpio");
+
+/* The following functions must be implemented by SoC/board code. */
+int gpio_get(gpio_t gpio);
+void gpio_set(gpio_t gpio, int value);
+void gpio_input_pulldown(gpio_t gpio);
+void gpio_input_pullup(gpio_t gpio);
+void gpio_input(gpio_t gpio);
+void gpio_output(gpio_t gpio, int value);
/*
* Read the value presented by the set of GPIOs, when each pin is interpreted
@@ -36,16 +47,6 @@ typedef unsigned gpio_t;
* tertiary: 1: pins are interpreted as a quad coded tertiary.
* 0: pins are interpreted as a set of two bit fields.
*/
-int gpio_get_in_tristate_values(gpio_t gpio[], int num_gpio, int tertiary);
-
-/*
- * The following functions are not provided by the common library, but must be
- * implemented by the appropriate SOC/board instead.
- */
-int gpio_get_in_value(gpio_t gpio);
-void gpio_set_out_value(gpio_t gpio, int value);
-void gpio_input_pulldown(gpio_t gpio);
-void gpio_input_pullup(gpio_t gpio);
-void gpio_input(gpio_t gpio);
+int gpio_get_tristates(gpio_t gpio[], int num_gpio, int tertiary);
-#endif
+#endif /* __SRC_INCLUDE_GPIO_H__ */
diff --git a/src/lib/tristate_gpios.c b/src/lib/tristate_gpios.c
index 8e93e3704a..5ee5580ae8 100644
--- a/src/lib/tristate_gpios.c
+++ b/src/lib/tristate_gpios.c
@@ -18,9 +18,9 @@
*/
#include <delay.h>
-#include <gpiolib.h>
+#include <gpio.h>
-int gpio_get_in_tristate_values(gpio_t gpio[], int num_gpio, int tertiary)
+int gpio_get_tristates(gpio_t gpio[], int num_gpio, int tertiary)
{
/*
* GPIOs which are tied to stronger external pull up or pull down
@@ -45,7 +45,7 @@ int gpio_get_in_tristate_values(gpio_t gpio[], int num_gpio, int tertiary)
/* Get gpio values at internal pull up */
for (index = 0; index < num_gpio; ++index)
- value[index] = gpio_get_in_value(gpio[index]);
+ value[index] = gpio_get(gpio[index]);
/* Enable internal pull down */
for (index = 0; index < num_gpio; ++index)
@@ -67,7 +67,7 @@ int gpio_get_in_tristate_values(gpio_t gpio[], int num_gpio, int tertiary)
id *= 3;
else
id <<= 2;
- temp = gpio_get_in_value(gpio[index]);
+ temp = gpio_get(gpio[index]);
id += ((value[index] ^ temp) << 1) | temp;
}
diff --git a/src/mainboard/google/nyan/boardid.c b/src/mainboard/google/nyan/boardid.c
index 4628cb60e0..85a55fc329 100644
--- a/src/mainboard/google/nyan/boardid.c
+++ b/src/mainboard/google/nyan/boardid.c
@@ -19,17 +19,17 @@
#include <boardid.h>
#include <console/console.h>
-#include <soc/gpio.h>
+#include <gpio.h>
uint8_t board_id(void)
{
static int id = -1;
if (id < 0) {
- id = gpio_get_in_value(GPIO(Q3)) << 0 |
- gpio_get_in_value(GPIO(T1)) << 1 |
- gpio_get_in_value(GPIO(X1)) << 2 |
- gpio_get_in_value(GPIO(X4)) << 3;
+ id = gpio_get(GPIO(Q3)) << 0 |
+ gpio_get(GPIO(T1)) << 1 |
+ gpio_get(GPIO(X1)) << 2 |
+ gpio_get(GPIO(X4)) << 3;
printk(BIOS_SPEW, "Board ID: %#x.\n", id);
}
diff --git a/src/mainboard/google/nyan/bootblock.c b/src/mainboard/google/nyan/bootblock.c
index 1f23d43dd3..bc3cd3efa2 100644
--- a/src/mainboard/google/nyan/bootblock.c
+++ b/src/mainboard/google/nyan/bootblock.c
@@ -21,10 +21,10 @@
#include <bootblock_common.h>
#include <console/console.h>
#include <device/i2c.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clk_rst.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/nvidia/tegra/i2c.h>
#include <soc/pinmux.h>
#include <soc/spi.h> /* FIXME: move back to soc code? */
diff --git a/src/mainboard/google/nyan/chromeos.c b/src/mainboard/google/nyan/chromeos.c
index 1210f75ad9..91a3f13de6 100644
--- a/src/mainboard/google/nyan/chromeos.c
+++ b/src/mainboard/google/nyan/chromeos.c
@@ -22,7 +22,7 @@
#include <console/console.h>
#include <ec/google/chromeec/ec.h>
#include <ec/google/chromeec/ec_commands.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <string.h>
#include <vendorcode/google/chromeos/chromeos.h>
@@ -33,7 +33,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Write Protect: active low */
gpios->gpios[count].port = GPIO_R1_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R1));
+ gpios->gpios[count].value = gpio_get(GPIO(R1));
strncpy((char *)gpios->gpios[count].name, "write protect",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -49,14 +49,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Lid: active high */
gpios->gpios[count].port = GPIO_R4_INDEX;
gpios->gpios[count].polarity = ACTIVE_HIGH;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R4));
+ gpios->gpios[count].value = gpio_get(GPIO(R4));
strncpy((char *)gpios->gpios[count].name, "lid", GPIO_MAX_NAME_LENGTH);
count++;
/* Power: active low */
gpios->gpios[count].port = GPIO_Q0_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(Q0));
+ gpios->gpios[count].value = gpio_get(GPIO(Q0));
strncpy((char *)gpios->gpios[count].name, "power",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -91,5 +91,5 @@ int get_recovery_mode_switch(void)
int get_write_protect_state(void)
{
- return !gpio_get_in_value(GPIO(R1));
+ return !gpio_get(GPIO(R1));
}
diff --git a/src/mainboard/google/nyan/early_configs.c b/src/mainboard/google/nyan/early_configs.c
index 046e2bd419..de9fe8ef9d 100644
--- a/src/mainboard/google/nyan/early_configs.c
+++ b/src/mainboard/google/nyan/early_configs.c
@@ -17,10 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clock.h>
#include <soc/early_configs.h>
-#include <soc/gpio.h>
#include <soc/nvidia/tegra/i2c.h>
static struct clk_rst_ctlr *clk_rst = (void *)TEGRA_CLK_RST_BASE;
diff --git a/src/mainboard/google/nyan/mainboard.c b/src/mainboard/google/nyan/mainboard.c
index f4aa93adc2..dce4cbcbd5 100644
--- a/src/mainboard/google/nyan/mainboard.c
+++ b/src/mainboard/google/nyan/mainboard.c
@@ -21,10 +21,10 @@
#include <device/device.h>
#include <elog.h>
#include <boot/coreboot_tables.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clock.h>
#include <soc/clk_rst.h>
-#include <soc/gpio.h>
#include <soc/mc.h>
#include <soc/nvidia/tegra/i2c.h>
#include <soc/nvidia/tegra/usb.h>
diff --git a/src/mainboard/google/nyan/reset.c b/src/mainboard/google/nyan/reset.c
index de096c6520..e58890e604 100644
--- a/src/mainboard/google/nyan/reset.c
+++ b/src/mainboard/google/nyan/reset.c
@@ -18,7 +18,7 @@
*/
#include <arch/io.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <reset.h>
void hard_reset(void)
diff --git a/src/mainboard/google/nyan_big/boardid.c b/src/mainboard/google/nyan_big/boardid.c
index 335da87a50..00f646d392 100644
--- a/src/mainboard/google/nyan_big/boardid.c
+++ b/src/mainboard/google/nyan_big/boardid.c
@@ -19,7 +19,7 @@
#include <boardid.h>
#include <console/console.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <stdlib.h>
uint8_t board_id(void)
@@ -29,7 +29,7 @@ uint8_t board_id(void)
if (id < 0) {
gpio_t gpio[] = {GPIO(Q3), GPIO(T1), GPIO(X1), GPIO(X4)};
- id = gpio_get_in_tristate_values(gpio, ARRAY_SIZE(gpio), 0);
+ id = gpio_get_tristates(gpio, ARRAY_SIZE(gpio), 0);
printk(BIOS_SPEW, "Board TRISTATE ID: %#x.\n", id);
}
diff --git a/src/mainboard/google/nyan_big/bootblock.c b/src/mainboard/google/nyan_big/bootblock.c
index b24862e8b9..c471cb841a 100644
--- a/src/mainboard/google/nyan_big/bootblock.c
+++ b/src/mainboard/google/nyan_big/bootblock.c
@@ -21,10 +21,10 @@
#include <bootblock_common.h>
#include <console/console.h>
#include <device/i2c.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clk_rst.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/nvidia/tegra/i2c.h>
#include <soc/pinmux.h>
#include <soc/spi.h> /* FIXME: move back to soc code? */
diff --git a/src/mainboard/google/nyan_big/chromeos.c b/src/mainboard/google/nyan_big/chromeos.c
index 28da0538f1..7073198a78 100644
--- a/src/mainboard/google/nyan_big/chromeos.c
+++ b/src/mainboard/google/nyan_big/chromeos.c
@@ -22,7 +22,7 @@
#include <console/console.h>
#include <ec/google/chromeec/ec.h>
#include <ec/google/chromeec/ec_commands.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <string.h>
#include <vendorcode/google/chromeos/chromeos.h>
@@ -33,7 +33,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Write Protect: active low */
gpios->gpios[count].port = GPIO_R1_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R1));
+ gpios->gpios[count].value = gpio_get(GPIO(R1));
strncpy((char *)gpios->gpios[count].name, "write protect",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -49,14 +49,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Lid: active high */
gpios->gpios[count].port = GPIO_R4_INDEX;
gpios->gpios[count].polarity = ACTIVE_HIGH;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R4));
+ gpios->gpios[count].value = gpio_get(GPIO(R4));
strncpy((char *)gpios->gpios[count].name, "lid", GPIO_MAX_NAME_LENGTH);
count++;
/* Power: active low */
gpios->gpios[count].port = GPIO_Q0_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(Q0));
+ gpios->gpios[count].value = gpio_get(GPIO(Q0));
strncpy((char *)gpios->gpios[count].name, "power",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -91,5 +91,5 @@ int get_recovery_mode_switch(void)
int get_write_protect_state(void)
{
- return !gpio_get_in_value(GPIO(R1));
+ return !gpio_get(GPIO(R1));
}
diff --git a/src/mainboard/google/nyan_big/early_configs.c b/src/mainboard/google/nyan_big/early_configs.c
index 046e2bd419..de9fe8ef9d 100644
--- a/src/mainboard/google/nyan_big/early_configs.c
+++ b/src/mainboard/google/nyan_big/early_configs.c
@@ -17,10 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clock.h>
#include <soc/early_configs.h>
-#include <soc/gpio.h>
#include <soc/nvidia/tegra/i2c.h>
static struct clk_rst_ctlr *clk_rst = (void *)TEGRA_CLK_RST_BASE;
diff --git a/src/mainboard/google/nyan_big/mainboard.c b/src/mainboard/google/nyan_big/mainboard.c
index 63d9d5c93e..712269a708 100644
--- a/src/mainboard/google/nyan_big/mainboard.c
+++ b/src/mainboard/google/nyan_big/mainboard.c
@@ -21,10 +21,10 @@
#include <boot/coreboot_tables.h>
#include <device/device.h>
#include <elog.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clk_rst.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/mc.h>
#include <soc/nvidia/tegra/i2c.h>
#include <soc/pmc.h>
diff --git a/src/mainboard/google/nyan_big/reset.c b/src/mainboard/google/nyan_big/reset.c
index de096c6520..e58890e604 100644
--- a/src/mainboard/google/nyan_big/reset.c
+++ b/src/mainboard/google/nyan_big/reset.c
@@ -18,7 +18,7 @@
*/
#include <arch/io.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <reset.h>
void hard_reset(void)
diff --git a/src/mainboard/google/nyan_blaze/boardid.c b/src/mainboard/google/nyan_blaze/boardid.c
index 335da87a50..00f646d392 100644
--- a/src/mainboard/google/nyan_blaze/boardid.c
+++ b/src/mainboard/google/nyan_blaze/boardid.c
@@ -19,7 +19,7 @@
#include <boardid.h>
#include <console/console.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <stdlib.h>
uint8_t board_id(void)
@@ -29,7 +29,7 @@ uint8_t board_id(void)
if (id < 0) {
gpio_t gpio[] = {GPIO(Q3), GPIO(T1), GPIO(X1), GPIO(X4)};
- id = gpio_get_in_tristate_values(gpio, ARRAY_SIZE(gpio), 0);
+ id = gpio_get_tristates(gpio, ARRAY_SIZE(gpio), 0);
printk(BIOS_SPEW, "Board TRISTATE ID: %#x.\n", id);
}
diff --git a/src/mainboard/google/nyan_blaze/bootblock.c b/src/mainboard/google/nyan_blaze/bootblock.c
index b24862e8b9..c471cb841a 100644
--- a/src/mainboard/google/nyan_blaze/bootblock.c
+++ b/src/mainboard/google/nyan_blaze/bootblock.c
@@ -21,10 +21,10 @@
#include <bootblock_common.h>
#include <console/console.h>
#include <device/i2c.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clk_rst.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/nvidia/tegra/i2c.h>
#include <soc/pinmux.h>
#include <soc/spi.h> /* FIXME: move back to soc code? */
diff --git a/src/mainboard/google/nyan_blaze/chromeos.c b/src/mainboard/google/nyan_blaze/chromeos.c
index 0b944d1667..7718849fe8 100644
--- a/src/mainboard/google/nyan_blaze/chromeos.c
+++ b/src/mainboard/google/nyan_blaze/chromeos.c
@@ -21,7 +21,7 @@
#include <console/console.h>
#include <ec/google/chromeec/ec.h>
#include <ec/google/chromeec/ec_commands.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <string.h>
#include <vendorcode/google/chromeos/chromeos.h>
@@ -37,7 +37,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Write Protect: active low */
gpios->gpios[count].port = GPIO_R1_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R1));
+ gpios->gpios[count].value = gpio_get(GPIO(R1));
strncpy((char *)gpios->gpios[count].name, "write protect",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -53,14 +53,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Lid: active high */
gpios->gpios[count].port = GPIO_R4_INDEX;
gpios->gpios[count].polarity = ACTIVE_HIGH;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R4));
+ gpios->gpios[count].value = gpio_get(GPIO(R4));
strncpy((char *)gpios->gpios[count].name, "lid", GPIO_MAX_NAME_LENGTH);
count++;
/* Power: active low */
gpios->gpios[count].port = GPIO_Q0_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(Q0));
+ gpios->gpios[count].value = gpio_get(GPIO(Q0));
strncpy((char *)gpios->gpios[count].name, "power",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -95,5 +95,5 @@ int get_recovery_mode_switch(void)
int get_write_protect_state(void)
{
- return !gpio_get_in_value(GPIO(R1));
+ return !gpio_get(GPIO(R1));
}
diff --git a/src/mainboard/google/nyan_blaze/early_configs.c b/src/mainboard/google/nyan_blaze/early_configs.c
index 020f3fd8a8..de9fe8ef9d 100644
--- a/src/mainboard/google/nyan_blaze/early_configs.c
+++ b/src/mainboard/google/nyan_blaze/early_configs.c
@@ -17,9 +17,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/early_configs.h>
#include <soc/nvidia/tegra/i2c.h>
diff --git a/src/mainboard/google/nyan_blaze/mainboard.c b/src/mainboard/google/nyan_blaze/mainboard.c
index da49377166..9daa2bb6b3 100644
--- a/src/mainboard/google/nyan_blaze/mainboard.c
+++ b/src/mainboard/google/nyan_blaze/mainboard.c
@@ -21,10 +21,10 @@
#include <boot/coreboot_tables.h>
#include <device/device.h>
#include <elog.h>
+#include <gpio.h>
#include <soc/addressmap.h>
#include <soc/clock.h>
#include <soc/clk_rst.h>
-#include <soc/gpio.h>
#include <soc/mc.h>
#include <soc/nvidia/tegra/i2c.h>
#include <soc/nvidia/tegra/usb.h>
diff --git a/src/mainboard/google/nyan_blaze/reset.c b/src/mainboard/google/nyan_blaze/reset.c
index de096c6520..e58890e604 100644
--- a/src/mainboard/google/nyan_blaze/reset.c
+++ b/src/mainboard/google/nyan_blaze/reset.c
@@ -18,7 +18,7 @@
*/
#include <arch/io.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <reset.h>
void hard_reset(void)
diff --git a/src/mainboard/google/rush/boardid.c b/src/mainboard/google/rush/boardid.c
index 7ed2b53ed6..0c9d2c5e70 100644
--- a/src/mainboard/google/rush/boardid.c
+++ b/src/mainboard/google/rush/boardid.c
@@ -19,17 +19,17 @@
#include <boardid.h>
#include <console/console.h>
-#include <soc/gpio.h>
+#include <gpio.h>
uint8_t board_id(void)
{
static int id = -1;
if (id < 0) {
- id = gpio_get_in_value(GPIO(Q3)) << 0 |
- gpio_get_in_value(GPIO(T1)) << 1 |
- gpio_get_in_value(GPIO(X1)) << 2 |
- gpio_get_in_value(GPIO(X4)) << 3;
+ id = gpio_get(GPIO(Q3)) << 0 |
+ gpio_get(GPIO(T1)) << 1 |
+ gpio_get(GPIO(X1)) << 2 |
+ gpio_get(GPIO(X4)) << 3;
printk(BIOS_SPEW, "Board ID: %#x.\n", id);
}
diff --git a/src/mainboard/google/rush/chromeos.c b/src/mainboard/google/rush/chromeos.c
index 5232344223..1a017f5078 100644
--- a/src/mainboard/google/rush/chromeos.c
+++ b/src/mainboard/google/rush/chromeos.c
@@ -21,7 +21,7 @@
#include <console/console.h>
#include <ec/google/chromeec/ec.h>
#include <ec/google/chromeec/ec_commands.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <string.h>
#include <vendorcode/google/chromeos/chromeos.h>
@@ -32,7 +32,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Write Protect: active low */
gpios->gpios[count].port = GPIO_R1_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO(R1));
+ gpios->gpios[count].value = gpio_get(GPIO(R1));
strncpy((char *)gpios->gpios[count].name, "write protect",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -90,5 +90,5 @@ int get_recovery_mode_switch(void)
int get_write_protect_state(void)
{
- return !gpio_get_in_value(GPIO(R1));
+ return !gpio_get(GPIO(R1));
}
diff --git a/src/mainboard/google/rush/reset.c b/src/mainboard/google/rush/reset.c
index dbaed0d95b..0fc6320489 100644
--- a/src/mainboard/google/rush/reset.c
+++ b/src/mainboard/google/rush/reset.c
@@ -18,7 +18,7 @@
*/
#include <arch/io.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <reset.h>
void hard_reset(void)
diff --git a/src/mainboard/google/rush_ryu/boardid.c b/src/mainboard/google/rush_ryu/boardid.c
index 9d99b90ddc..ba3a4be9e9 100644
--- a/src/mainboard/google/rush_ryu/boardid.c
+++ b/src/mainboard/google/rush_ryu/boardid.c
@@ -19,7 +19,6 @@
#include <boardid.h>
#include <console/console.h>
-#include <soc/gpio.h>
#include <stdlib.h>
#include "gpio.h"
@@ -75,8 +74,7 @@ uint8_t board_id(void)
int tristate_id;
gpio_t gpio[] = { BD_ID0, BD_ID1 };
- tristate_id = gpio_get_in_tristate_values(gpio,
- ARRAY_SIZE(gpio), 0);
+ tristate_id = gpio_get_tristates(gpio, ARRAY_SIZE(gpio), 0);
for (i = 0; i < ARRAY_SIZE(bdid_map); i++) {
if (tristate_id != bdid_map[i].tri_state_value)
diff --git a/src/mainboard/google/rush_ryu/chromeos.c b/src/mainboard/google/rush_ryu/chromeos.c
index 521fe59372..f752aeee6c 100644
--- a/src/mainboard/google/rush_ryu/chromeos.c
+++ b/src/mainboard/google/rush_ryu/chromeos.c
@@ -33,7 +33,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Write Protect: active low */
gpios->gpios[count].port = WRITE_PROTECT_L_INDEX;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(WRITE_PROTECT_L);
+ gpios->gpios[count].value = gpio_get(WRITE_PROTECT_L);
strncpy((char *)gpios->gpios[count].name, "write protect",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -51,7 +51,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Power: active low */
gpios->gpios[count].port = POWER_BUTTON_INDEX,
gpios->gpios[count].polarity = ACTIVE_HIGH;
- gpios->gpios[count].value = gpio_get_in_value(POWER_BUTTON);
+ gpios->gpios[count].value = gpio_get(POWER_BUTTON);
strncpy((char *)gpios->gpios[count].name, "power",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -86,5 +86,5 @@ int get_recovery_mode_switch(void)
int get_write_protect_state(void)
{
- return !gpio_get_in_value(WRITE_PROTECT_L);
+ return !gpio_get(WRITE_PROTECT_L);
}
diff --git a/src/mainboard/google/rush_ryu/gpio.h b/src/mainboard/google/rush_ryu/gpio.h
index 9c67420ff0..2792ec389f 100644
--- a/src/mainboard/google/rush_ryu/gpio.h
+++ b/src/mainboard/google/rush_ryu/gpio.h
@@ -20,7 +20,7 @@
#ifndef __MAINBOARD_GOOGLE_RUSH_RYU_GPIO_H__
#define __MAINBOARD_GOOGLE_RUSH_RYU_GPIO_H__
-#include <soc/gpio.h>
+#include <gpio.h>
/* Board ID definitions. */
enum {
diff --git a/src/mainboard/google/rush_ryu/romstage.c b/src/mainboard/google/rush_ryu/romstage.c
index 41c9149be4..fc2379f9b3 100644
--- a/src/mainboard/google/rush_ryu/romstage.c
+++ b/src/mainboard/google/rush_ryu/romstage.c
@@ -69,7 +69,7 @@ static void lte_modem_init(void)
int mdm_det;
/* A LTE modem is present if MDM_DET is pulled down by the modem */
- mdm_det = gpio_get_in_value(MDM_DET);
+ mdm_det = gpio_get(MDM_DET);
if (mdm_det == 1)
return;
diff --git a/src/mainboard/google/storm/boardid.c b/src/mainboard/google/storm/boardid.c
index a8dd84439b..878598bf92 100644
--- a/src/mainboard/google/storm/boardid.c
+++ b/src/mainboard/google/storm/boardid.c
@@ -18,15 +18,15 @@
*/
#include <boardid.h>
-#include <gpiolib.h>
+#include <gpio.h>
#include <console/console.h>
#include <stdlib.h>
/*
* Storm boards dedicate to the board ID three GPIOs in tertiary mode: 29, 30
* and 68. On proto0 GPIO68 is used and tied low, so it reads as 'zero' by
- * gpio_get_in_tristate_values(), whereas the other two pins are not connected
- * and read as 'two'. This results in gpio_get_in_tristate_values() returning
+ * gpio_get_tristates(), whereas the other two pins are not connected
+ * and read as 'two'. This results in gpio_get_tristates() returning
* 8 on proto0.
*
* Three tertitiary signals could represent 27 different values. To make
@@ -45,8 +45,7 @@ static uint8_t get_board_id(void)
gpio_t hw_rev_gpios[] = {29, 30, 68};
int offset = 19;
- bid = gpio_get_in_tristate_values(hw_rev_gpios,
- ARRAY_SIZE(hw_rev_gpios), 1);
+ bid = gpio_get_tristates(hw_rev_gpios, ARRAY_SIZE(hw_rev_gpios), 1);
bid = (bid + offset) % 27;
printk(BIOS_INFO, "Board ID %d\n", bid);
diff --git a/src/mainboard/google/storm/cdp.c b/src/mainboard/google/storm/cdp.c
index 7e1aeb66ad..78edb26048 100644
--- a/src/mainboard/google/storm/cdp.c
+++ b/src/mainboard/google/storm/cdp.c
@@ -1,7 +1,7 @@
/* * Copyright (c) 2012 - 2013 The Linux Foundation. All rights reserved.* */
-#include <soc/gpio.h>
+#include <gpio.h>
#include <soc/cdp.h>
#include <types.h>
diff --git a/src/mainboard/google/storm/mainboard.c b/src/mainboard/google/storm/mainboard.c
index 552f968609..59e7ce7764 100644
--- a/src/mainboard/google/storm/mainboard.c
+++ b/src/mainboard/google/storm/mainboard.c
@@ -23,9 +23,8 @@
#include <console/console.h>
#include <delay.h>
#include <device/device.h>
-#include <gpiolib.h>
+#include <gpio.h>
#include <soc/clock.h>
-#include <soc/gpio.h>
#include <soc/usb.h>
#include <string.h>
#include <symbols.h>
@@ -46,7 +45,7 @@ static void setup_usb(void)
#if !CONFIG_BOARD_VARIANT_AP148
gpio_tlmm_config_set(USB_ENABLE_GPIO, FUNC_SEL_GPIO,
GPIO_PULL_UP, GPIO_10MA, GPIO_ENABLE);
- gpio_set_out_value(USB_ENABLE_GPIO, 1);
+ gpio_set(USB_ENABLE_GPIO, 1);
#endif
usb_clock_config();
@@ -86,9 +85,9 @@ static void setup_tpm(void)
* make it twice as long. If the output was driven low originally, the
* reset pulse will be even longer.
*/
- gpio_set_out_value(TPM_RESET_GPIO, 0);
+ gpio_set(TPM_RESET_GPIO, 0);
udelay(160);
- gpio_set_out_value(TPM_RESET_GPIO, 1);
+ gpio_set(TPM_RESET_GPIO, 1);
}
#define SW_RESET_GPIO 26
@@ -106,7 +105,7 @@ static void deassert_sw_reset(void)
gpio_tlmm_config_set(SW_RESET_GPIO, FUNC_SEL_GPIO,
GPIO_PULL_UP, GPIO_4MA, GPIO_ENABLE);
- gpio_set_out_value(SW_RESET_GPIO, 0);
+ gpio_set(SW_RESET_GPIO, 0);
}
static void mainboard_init(device_t dev)
@@ -148,7 +147,7 @@ static int read_gpio(gpio_t gpio_num)
gpio_tlmm_config_set(gpio_num, GPIO_FUNC_DISABLE,
GPIO_NO_PULL, GPIO_2MA, GPIO_DISABLE);
udelay(10); /* Should be enough to settle. */
- return gpio_get_in_value(gpio_num);
+ return gpio_get(gpio_num);
}
void fill_lb_gpios(struct lb_gpios *gpios)
diff --git a/src/mainboard/google/veyron_pinky/board.h b/src/mainboard/google/veyron_pinky/board.h
index 8d452c8a89..73eb5efc44 100644
--- a/src/mainboard/google/veyron_pinky/board.h
+++ b/src/mainboard/google/veyron_pinky/board.h
@@ -21,7 +21,7 @@
#define __MAINBOARD_GOOGLE_VEYRON_PINKY_BOARD_H
#include <boardid.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#define PMIC_BUS 0
diff --git a/src/mainboard/google/veyron_pinky/boardid.c b/src/mainboard/google/veyron_pinky/boardid.c
index 01e92a3d32..d8f4a3d7f7 100644
--- a/src/mainboard/google/veyron_pinky/boardid.c
+++ b/src/mainboard/google/veyron_pinky/boardid.c
@@ -19,7 +19,7 @@
#include <boardid.h>
#include <console/console.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <stdlib.h>
uint8_t board_id(void)
@@ -38,7 +38,7 @@ uint8_t board_id(void)
id = 0;
for (i = 0; i < ARRAY_SIZE(pins); i++) {
gpio_input(pins[i]);
- id |= gpio_get_in_value(pins[i]) << i;
+ id |= gpio_get(pins[i]) << i;
}
printk(BIOS_SPEW, "Board ID: %#x.\n", id);
}
diff --git a/src/mainboard/google/veyron_pinky/chromeos.c b/src/mainboard/google/veyron_pinky/chromeos.c
index 30cd277623..dc224a5a2f 100644
--- a/src/mainboard/google/veyron_pinky/chromeos.c
+++ b/src/mainboard/google/veyron_pinky/chromeos.c
@@ -21,7 +21,7 @@
#include <console/console.h>
#include <ec/google/chromeec/ec.h>
#include <ec/google/chromeec/ec_commands.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <string.h>
#include <vendorcode/google/chromeos/chromeos.h>
@@ -47,7 +47,7 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Write Protect: active low */
gpios->gpios[count].port = GPIO_WP.raw;
gpios->gpios[count].polarity = ACTIVE_LOW;
- gpios->gpios[count].value = gpio_get_in_value(GPIO_WP);
+ gpios->gpios[count].value = gpio_get(GPIO_WP);
strncpy((char *)gpios->gpios[count].name, "write protect",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -63,14 +63,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
/* Lid: active high */
gpios->gpios[count].port = GPIO_LID.raw;
gpios->gpios[count].polarity = ACTIVE_HIGH;
- gpios->gpios[count].value = gpio_get_in_value(GPIO_LID);
+ gpios->gpios[count].value = gpio_get(GPIO_LID);
strncpy((char *)gpios->gpios[count].name, "lid", GPIO_MAX_NAME_LENGTH);
count++;
/* Power:GPIO active high */
gpios->gpios[count].port = GPIO_POWER.raw;
gpios->gpios[count].polarity = ACTIVE_HIGH;
- gpios->gpios[count].value = gpio_get_in_value(GPIO_POWER);
+ gpios->gpios[count].value = gpio_get(GPIO_POWER);
strncpy((char *)gpios->gpios[count].name, "power",
GPIO_MAX_NAME_LENGTH);
count++;
@@ -99,7 +99,7 @@ int get_recovery_mode_switch(void)
uint32_t ec_events;
/* The GPIO is active low. */
- if (!gpio_get_in_value(GPIO_RECOVERY))
+ if (!gpio_get(GPIO_RECOVERY))
return 1;
ec_events = google_chromeec_get_events_b();
@@ -109,6 +109,6 @@ int get_recovery_mode_switch(void)
int get_write_protect_state(void)
{
- return !gpio_get_in_value(GPIO_WP);
+ return !gpio_get(GPIO_WP);
}
diff --git a/src/mainboard/google/veyron_pinky/mainboard.c b/src/mainboard/google/veyron_pinky/mainboard.c
index a8cc3c3aa4..2442472b67 100644
--- a/src/mainboard/google/veyron_pinky/mainboard.c
+++ b/src/mainboard/google/veyron_pinky/mainboard.c
@@ -19,13 +19,13 @@
#include <arch/cache.h>
#include <arch/io.h>
+#include <boot/coreboot_tables.h>
#include <console/console.h>
#include <delay.h>
#include <device/device.h>
-#include <edid.h>
-#include <boot/coreboot_tables.h>
#include <device/i2c.h>
-#include <soc/gpio.h>
+#include <edid.h>
+#include <gpio.h>
#include <soc/grf.h>
#include <soc/soc.h>
#include <soc/pmu.h>
diff --git a/src/mainboard/google/veyron_pinky/reset.c b/src/mainboard/google/veyron_pinky/reset.c
index a2777f86d6..9cbe9c1551 100644
--- a/src/mainboard/google/veyron_pinky/reset.c
+++ b/src/mainboard/google/veyron_pinky/reset.c
@@ -18,7 +18,7 @@
*/
#include <arch/io.h>
-#include <soc/gpio.h>
+#include <gpio.h>
#include <reset.h>
#include "board.h"
diff --git a/src/mainboard/google/veyron_pinky/sdram_configs.c b/src/mainboard/google/veyron_pinky/sdram_configs.c
index 1a331cebef..a58c6dd3d3 100644
--- a/src/mainboard/google/veyron_pinky/sdram_configs.c
+++ b/src/mainboard/google/veyron_pinky/sdram_configs.c
@@ -18,8 +18,8 @@
*/
#include <arch/io.h>
#include <console/console.h>
+#include <gpio.h>
#include <soc/sdram.h>
-#include <soc/gpio.h>
#include <string.h>
#include <types.h>
@@ -56,10 +56,10 @@ u32 sdram_get_ram_code(void)
gpio_input(GPIO_RAMCODE2);
gpio_input(GPIO_RAMCODE3);
- code = gpio_get_in_value(GPIO_RAMCODE3) << 3
- | gpio_get_in_value(GPIO_RAMCODE2) << 2
- | gpio_get_in_value(GPIO_RAMCODE1) << 1
- | gpio_get_in_value(GPIO_RAMCODE0) << 0;
+ code = gpio_get(GPIO_RAMCODE3) << 3
+ | gpio_get(GPIO_RAMCODE2) << 2
+ | gpio_get(GPIO_RAMCODE1) << 1
+ | gpio_get(GPIO_RAMCODE0) << 0;
return code;
}
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;