summaryrefslogtreecommitdiff
path: root/source/gpio_ext.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/gpio_ext.c')
-rw-r--r--source/gpio_ext.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/source/gpio_ext.c b/source/gpio_ext.c
deleted file mode 100644
index 1347796..0000000
--- a/source/gpio_ext.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * gpio_ext.c
- *
- */
-
-#include "gpio_ext.h"
-#include "com_task.h"
-#include "errno.h"
-
-
-static inline int port_type_to_int(PORT_Type *port)
-{
- switch ((int) port) {
- case PORTA_BASE:
- return 0;
- case PORTB_BASE:
- return 1;
- case PORTC_BASE:
- return 2;
- case PORTD_BASE:
- return 3;
- case PORTE_BASE:
- return 4;
- default:
- return -EINVAL;
- }
-}
-
-/* returns GPIO index in gpio_list table and -EINVAL
- * if there is no entry for this gpio.
- */
-static int is_gpio_valid(uint8_t pin)
-{
- uint16_t i;
- int temp;
- if (pin == 0xFF)
- return -EINVAL;
-
- for (i = 0; i < sizeof(gpio_list)/sizeof(struct gpio_id); i++){
- temp = port_type_to_int(gpio_list[i].port) * 32;
- temp += gpio_list[i].pin;
- if ( temp == pin ) {
- return i;
- }
- if (temp > pin)
- return -EINVAL;
- }
-
- return -EINVAL;
-}
-
-static int set_gpio_status(uint8_t status, int index)
-{
- gpio_pin_config_t gpio_config;
-
- gpio_config.pinDirection = (status & APALIS_TK1_K20_GPIO_STA_OE) ? kGPIO_DigitalOutput : kGPIO_DigitalInput;
- gpio_config.outputLogic = (status & APALIS_TK1_K20_GPIO_STA_VAL);
-
- if (index >= 0)
- GPIO_PinInit(gpio_list[index].gpio, gpio_list[index].pin, &gpio_config);
- else
- return index;
-
- return 0;
-}
-
-
-static uint8_t get_gpio_status(int index)
-{
- uint8_t status;
- GPIO_Type *base;
- uint32_t gpio_pin;
-
- if (index == -EINVAL)
- return 0xFF;
- base = gpio_list[index].gpio;
- gpio_pin = gpio_list[index].pin;
-
- if (((base->PDDR) >> gpio_pin) & 0x01U) {
- status = APALIS_TK1_K20_GPIO_STA_OE;
- status += (((base->PDOR) >> gpio_pin) & 0x01U) ? APALIS_TK1_K20_GPIO_STA_VAL : 0x00;
- } else {
- status = 0x00;
- status += (((base->PDIR) >> gpio_pin) & 0x01U) ? APALIS_TK1_K20_GPIO_STA_VAL : 0x00;
- }
-
- return status;
-}
-
-int gpio_registers(dspi_transfer_t *spi_transfer)
-{
- uint8_t *rx_buf = spi_transfer->rxData;
- int index;
-
- if (rx_buf[0] == APALIS_TK1_K20_WRITE_INST) {
- switch (rx_buf[1]) {
- case APALIS_TK1_K20_GPIOREG:
- return -ENOENT;
- break;
- case APALIS_TK1_K20_GPIO_NO:
- index = is_gpio_valid(rx_buf[2]);
- if (index >= 0){
- registers[APALIS_TK1_K20_GPIO_NO]= rx_buf[2];
- registers[APALIS_TK1_K20_GPIO_STA] = get_gpio_status(index);
- return 1;
- } else {
- registers[APALIS_TK1_K20_GPIO_NO] = 0xFF;
- return -ENOENT;
- }
- break;
- case APALIS_TK1_K20_GPIO_STA:
- index = is_gpio_valid(registers[APALIS_TK1_K20_GPIO_NO]);
- if (index >= 0){
- set_gpio_status(rx_buf[2], index);
- registers[APALIS_TK1_K20_GPIO_STA] = get_gpio_status(index);
- return 1;
- } else {
- return -ENOENT;
- }
- break;
- default:
- return -ENOENT;
- }
- }
- return -ENOENT;
-}
-
-
-
-