#include "xilinx_gpio.h" sys_ret_t xilinx_gpio_init(xilinx_gpio_handle_t *handle) { handle->instance->TRI = 0xFFFFFFFF; return RET_OK; } sys_ret_t xilinx_gpio_pinmode(xilinx_gpio_handle_t *handle, uint32_t pin, uint8_t output) { if(output) { handle->instance->TRI &= ~(1U << pin); } else { handle->instance->TRI |= (1U << pin); } return RET_OK; } sys_ret_t xilinx_gpio_write(xilinx_gpio_handle_t *handle, uint32_t pin, uint8_t value) { if(value) { handle->instance->DATA |= (1U << pin); } else { handle->instance->DATA &= ~(1U << pin); } return RET_OK; } uint8_t xilinx_gpio_read(xilinx_gpio_handle_t *handle, uint32_t pin) { return (handle->instance->DATA & (1U << pin)) ? 1 : 0; } sys_ret_t xilinx_gpio_toggle(xilinx_gpio_handle_t *handle, uint32_t pin) { handle->instance->DATA ^= (1U << pin); return RET_OK; }