#ifndef _UMCPMIO_INFO_H_
#define _UMCPMIO_INFO_H_
#include <sys/gpio.h>
#include <dev/usb/umcpmio_io.h>
#define UMCPMIO_MAX_GPIO_PINS 9
struct umcpmio_chip_info {
const uint16_t usb_id;
const int num_gpio_pins;
const uint32_t gpio_pin_ability[UMCPMIO_MAX_GPIO_PINS];
const char *gpio_names[UMCPMIO_MAX_GPIO_PINS];
const int num_iic_ports;
const int num_spi_slaves;
};
static const struct umcpmio_chip_info umcpmio_chip_infos[] __unused = {
{
.usb_id = USB_PRODUCT_MICROCHIP_MCP2210,
.num_gpio_pins = 9,
.gpio_pin_ability = {
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3 | GPIO_PIN_ALT4 | GPIO_PIN_ALT5 | GPIO_PIN_ALT6,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_ALT3,
},
.gpio_names = { "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8" },
.num_iic_ports = 0,
.num_spi_slaves = 8,
},
{
.usb_id = USB_PRODUCT_MICROCHIP_MCP2221,
.num_gpio_pins = 4,
.gpio_pin_ability = {
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT1 | GPIO_PIN_ALT2 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT1 | GPIO_PIN_ALT3,
GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT1 | GPIO_PIN_ALT3,
},
.gpio_names = { "GP0", "GP1", "GP2", "GP3" },
.num_iic_ports = 1,
.num_spi_slaves = 0,
}
};
#endif