11.1Sbrad/*	$NetBSD: umcpmio_info.h,v 1.1 2025/11/29 18:39:14 brad Exp $	*/
21.1Sbrad
31.1Sbrad/*
41.1Sbrad * Copyright (c) 2024, 2025 Brad Spencer <brad@anduin.eldar.org>
51.1Sbrad *
61.1Sbrad * Permission to use, copy, modify, and distribute this software for any
71.1Sbrad * purpose with or without fee is hereby granted, provided that the above
81.1Sbrad * copyright notice and this permission notice appear in all copies.
91.1Sbrad *
101.1Sbrad * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
111.1Sbrad * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
121.1Sbrad * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
131.1Sbrad * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
141.1Sbrad * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
151.1Sbrad * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
161.1Sbrad * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
171.1Sbrad */
181.1Sbrad
191.1Sbrad#ifndef _UMCPMIO_INFO_H_
201.1Sbrad#define _UMCPMIO_INFO_H_
211.1Sbrad
221.1Sbrad#include <sys/gpio.h>
231.1Sbrad#include <dev/usb/umcpmio_io.h>
241.1Sbrad
251.1Sbrad#define UMCPMIO_MAX_GPIO_PINS 9
261.1Sbrad
271.1Sbradstruct umcpmio_chip_info {
281.1Sbrad	const uint16_t	usb_id;
291.1Sbrad	const int	num_gpio_pins;
301.1Sbrad	const uint32_t	gpio_pin_ability[UMCPMIO_MAX_GPIO_PINS];
311.1Sbrad	const char	*gpio_names[UMCPMIO_MAX_GPIO_PINS];
321.1Sbrad	const int	num_iic_ports;
331.1Sbrad	const int	num_spi_slaves;
341.1Sbrad};
351.1Sbrad
361.1Sbradstatic const struct umcpmio_chip_info umcpmio_chip_infos[] __unused = {
371.1Sbrad	{
381.1Sbrad		.usb_id = USB_PRODUCT_MICROCHIP_MCP2210,
391.1Sbrad		.num_gpio_pins = 9,
401.1Sbrad		.gpio_pin_ability = {
411.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
421.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
431.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
441.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
451.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
461.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
471.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3 | GPIO_PIN_ALT4 | GPIO_PIN_ALT5 | GPIO_PIN_ALT6,
481.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
491.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_ALT3,
501.1Sbrad		},
511.1Sbrad		.gpio_names = { "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8" },
521.1Sbrad		.num_iic_ports = 0,
531.1Sbrad		.num_spi_slaves = 8,
541.1Sbrad	},
551.1Sbrad	{
561.1Sbrad		.usb_id = USB_PRODUCT_MICROCHIP_MCP2221,
571.1Sbrad		.num_gpio_pins = 4,
581.1Sbrad		.gpio_pin_ability = {
591.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT3,
601.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT1 | GPIO_PIN_ALT2 | GPIO_PIN_ALT3,
611.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT1 | GPIO_PIN_ALT3,
621.1Sbrad			GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | GPIO_PIN_ALT0 | GPIO_PIN_ALT1 | GPIO_PIN_ALT3,
631.1Sbrad		},
641.1Sbrad		.gpio_names = { "GP0", "GP1", "GP2", "GP3" },
651.1Sbrad		.num_iic_ports = 1,
661.1Sbrad		.num_spi_slaves = 0,
671.1Sbrad	}
681.1Sbrad};
691.1Sbrad
701.1Sbrad#endif
71