diff --git a/bdk/soc/gpio.c b/bdk/soc/gpio.c index 5cd2ccd..d64e19c 100644 --- a/bdk/soc/gpio.c +++ b/bdk/soc/gpio.c @@ -86,6 +86,19 @@ void gpio_write(u32 port, u32 pins, int high) (void)GPIO(port_offset); // Commit the write. } +void gpio_direction_input(u32 port, u32 pins) +{ + gpio_config(port, pins, GPIO_MODE_GPIO); + gpio_output_enable(port, pins, GPIO_OUTPUT_DISABLE); +} + +void gpio_direction_output(u32 port, u32 pins, int high) +{ + gpio_config(port, pins, GPIO_MODE_GPIO); + gpio_output_enable(port, pins, GPIO_OUTPUT_ENABLE); + gpio_write(port, pins, high); +} + int gpio_read(u32 port, u32 pins) { u32 port_offset = GPIO_IN_OFFSET(port); diff --git a/bdk/soc/gpio.h b/bdk/soc/gpio.h index 0c92b14..7db001c 100644 --- a/bdk/soc/gpio.h +++ b/bdk/soc/gpio.h @@ -85,6 +85,8 @@ void gpio_config(u32 port, u32 pins, int mode); void gpio_output_enable(u32 port, u32 pins, int enable); +void gpio_direction_input(u32 port, u32 pins); +void gpio_direction_output(u32 port, u32 pins, int high); void gpio_write(u32 port, u32 pins, int high); int gpio_read(u32 port, u32 pins); int gpio_interrupt_status(u32 port, u32 pins);