5651 lines
296 KiB
C
5651 lines
296 KiB
C
/* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
/** USB cable definitions and utilities
|
|
* @file
|
|
* @author King Kévin <kingkevin@cuvoodoo.info>
|
|
* @date 2019-2020
|
|
*/
|
|
/* standard libraries */
|
|
#include <stdint.h> // standard integer types
|
|
#include <string.h> // string utilities
|
|
#include <stdlib.h> // memory utilities
|
|
|
|
/* STM32 (including CM3) libraries */
|
|
#include <libopencmsis/core_cm3.h> // Cortex M3 utilities
|
|
#include <libopencm3/cm3/assert.h> // assert definitions
|
|
#include <libopencm3/stm32/gpio.h> // general purpose input output library
|
|
|
|
/* own libraries */
|
|
#include "global.h" // board definitions
|
|
#include "print.h" // printing utilities
|
|
#include "usb_cables.h" // own definitions
|
|
|
|
const struct usb_pin_t usb_pins[] = {
|
|
// A host
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOD,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "VBUS",
|
|
.port = GPIOC,
|
|
.pin = GPIO12,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "D-",
|
|
.port = GPIOA,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D+",
|
|
.port = GPIOG,
|
|
.pin = GPIO6,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND",
|
|
.port = GPIOG,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "RX-",
|
|
.port = GPIOD,
|
|
.pin = GPIO14,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+",
|
|
.port = GPIOG,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND_DRAIN",
|
|
.port = GPIOG,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX-",
|
|
.port = GPIOC,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX+",
|
|
.port = GPIOC,
|
|
.pin = GPIO11,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
// C host
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOG,
|
|
.pin = GPIO13,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "GND-A1",
|
|
.port = GPIOD,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX+1",
|
|
.port = GPIOG,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX-1",
|
|
.port = GPIOG,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "VBUS-A4",
|
|
.port = GPIOG,
|
|
.pin = GPIO7,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "CC1",
|
|
.port = GPIOC,
|
|
.pin = GPIO6,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION, // can be used to power eMarker
|
|
},
|
|
{
|
|
.name = "D+1",
|
|
.port = GPIOC,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D-1",
|
|
.port = GPIOA,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "SBU1",
|
|
.port = GPIOA,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_OTHER,
|
|
},
|
|
{
|
|
.name = "VBUS-A9",
|
|
.port = GPIOG,
|
|
.pin = GPIO11,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "RX-2",
|
|
.port = GPIOA,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+2",
|
|
.port = GPIOC,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND-A12",
|
|
.port = GPIOC,
|
|
.pin = GPIO7,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "GND-B1",
|
|
.port = GPIOD,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX+2",
|
|
.port = GPIOD,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX-2",
|
|
.port = GPIOD,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "VBUS-B4",
|
|
.port = GPIOD,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "CC2",
|
|
.port = GPIOD,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION, // can be used to power eMarker
|
|
},
|
|
{
|
|
.name = "D+2",
|
|
.port = GPIOD,
|
|
.pin = GPIO6,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D-2",
|
|
.port = GPIOD,
|
|
.pin = GPIO7,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "SBU2",
|
|
.port = GPIOG,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_OTHER,
|
|
},
|
|
{
|
|
.name = "VBUS-B9",
|
|
.port = GPIOG,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "RX-1",
|
|
.port = GPIOG,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+1",
|
|
.port = GPIOG,
|
|
.pin = GPIO14,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND-B12",
|
|
.port = GPIOG,
|
|
.pin = GPIO12,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
// A device
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOB,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "VBUS",
|
|
.port = GPIOE,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "D-",
|
|
.port = GPIOE,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D+",
|
|
.port = GPIOB,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND",
|
|
.port = GPIOB,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "RX-",
|
|
.port = GPIOB,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+",
|
|
.port = GPIOB,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND_DRAIN",
|
|
.port = GPIOE,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX-",
|
|
.port = GPIOC,
|
|
.pin = GPIO13,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX+",
|
|
.port = GPIOE,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
// B
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOF,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "VBUS",
|
|
.port = GPIOC,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "D-",
|
|
.port = GPIOA,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D+",
|
|
.port = GPIOA,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND",
|
|
.port = GPIOC,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX-",
|
|
.port = GPIOA,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX+",
|
|
.port = GPIOA,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND_DRAIN",
|
|
.port = GPIOF,
|
|
.pin = GPIO6,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "RX-",
|
|
.port = GPIOC,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+",
|
|
.port = GPIOC,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
// mini-B
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOC,
|
|
.pin = GPIO14,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "VBUS",
|
|
.port = GPIOE,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "D-",
|
|
.port = GPIOE,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D+",
|
|
.port = GPIOE,
|
|
.pin = GPIO6,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "ID",
|
|
.port = GPIOF,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION,
|
|
},
|
|
{
|
|
.name = "GND",
|
|
.port = GPIOC,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
// micro-B
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOD,
|
|
.pin = GPIO12,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "VBUS",
|
|
.port = GPIOD,
|
|
.pin = GPIO11,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "D-",
|
|
.port = GPIOD,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D+",
|
|
.port = GPIOD,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "ID",
|
|
.port = GPIOD,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION,
|
|
},
|
|
{
|
|
.name = "GND",
|
|
.port = GPIOB,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX-",
|
|
.port = GPIOB,
|
|
.pin = GPIO14,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX+",
|
|
.port = GPIOB,
|
|
.pin = GPIO13,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND_DRAIN",
|
|
.port = GPIOB,
|
|
.pin = GPIO11,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "RX-",
|
|
.port = GPIOB,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+",
|
|
.port = GPIOB,
|
|
.pin = GPIO12,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
// C device
|
|
{
|
|
.name = "shield",
|
|
.port = GPIOE,
|
|
.pin = GPIO11,
|
|
.type = USB_PIN_TYPE_SHIELD,
|
|
},
|
|
{
|
|
.name = "GND-A1",
|
|
.port = GPIOF,
|
|
.pin = GPIO13,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX+1",
|
|
.port = GPIOF,
|
|
.pin = GPIO12,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX-1",
|
|
.port = GPIOF,
|
|
.pin = GPIO11,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "VBUS-A4",
|
|
.port = GPIOB,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "CC1",
|
|
.port = GPIOB,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION, // can be used to power eMarker
|
|
},
|
|
{
|
|
.name = "D+1",
|
|
.port = GPIOB,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D-1",
|
|
.port = GPIOC,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "SBU1",
|
|
.port = GPIOC,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_OTHER,
|
|
},
|
|
{
|
|
.name = "VBUS-A9",
|
|
.port = GPIOA,
|
|
.pin = GPIO7,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "RX-2",
|
|
.port = GPIOA,
|
|
.pin = GPIO6,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+2",
|
|
.port = GPIOA,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND-A12",
|
|
.port = GPIOA,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "GND-B1",
|
|
.port = GPIOF,
|
|
.pin = GPIO14,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "TX+2",
|
|
.port = GPIOE,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "TX-2",
|
|
.port = GPIOF,
|
|
.pin = GPIO15,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "VBUS-B4",
|
|
.port = GPIOG,
|
|
.pin = GPIO0,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "CC2",
|
|
.port = GPIOE,
|
|
.pin = GPIO14,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION, // can be used to power eMarker
|
|
},
|
|
{
|
|
.name = "D+2",
|
|
.port = GPIOG,
|
|
.pin = GPIO1,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "D-2",
|
|
.port = GPIOE,
|
|
.pin = GPIO7,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "SBU2",
|
|
.port = GPIOE,
|
|
.pin = GPIO13,
|
|
.type = USB_PIN_TYPE_OTHER,
|
|
},
|
|
{
|
|
.name = "VBUS-B9",
|
|
.port = GPIOE,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "RX-1",
|
|
.port = GPIOE,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "RX+1",
|
|
.port = GPIOE,
|
|
.pin = GPIO12,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "GND-B12",
|
|
.port = GPIOE,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
// lightning
|
|
{
|
|
.name = "GND",
|
|
.port = GPIOF,
|
|
.pin = GPIO10,
|
|
.type = USB_PIN_TYPE_GROUND,
|
|
},
|
|
{
|
|
.name = "L0p",
|
|
.port = GPIOF,
|
|
.pin = GPIO9,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "L0n",
|
|
.port = GPIOF,
|
|
.pin = GPIO8,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "ID0",
|
|
.port = GPIOF,
|
|
.pin = GPIO7,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION,
|
|
},
|
|
{
|
|
.name = "PWR",
|
|
.port = GPIOF,
|
|
.pin = GPIO5,
|
|
.type = USB_PIN_TYPE_POWER,
|
|
},
|
|
{
|
|
.name = "L1n",
|
|
.port = GPIOF,
|
|
.pin = GPIO2,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "L1p",
|
|
.port = GPIOF,
|
|
.pin = GPIO3,
|
|
.type = USB_PIN_TYPE_DIFFERENTIAL,
|
|
},
|
|
{
|
|
.name = "ID1",
|
|
.port = GPIOF,
|
|
.pin = GPIO4,
|
|
.type = USB_PIN_TYPE_IDENTIFICATION,
|
|
},
|
|
};
|
|
|
|
/* USB connectors */
|
|
|
|
/** USB type A connector pins (host side) */
|
|
static const uint8_t usb_a_host_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
|
/** USB type A connector (host side) */
|
|
static const struct usb_connector_t usb_a_host_connector = {
|
|
.name = "A",
|
|
.shortname = "A",
|
|
.variant = "host",
|
|
.pins_nb = LENGTH(usb_a_host_pins),
|
|
.pins = usb_a_host_pins,
|
|
};
|
|
|
|
/** USB-C connector ("host" side, "A" side first) pins */
|
|
static const uint8_t usb_c_host_sidea_pins[] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34};
|
|
/** USB-C connector ("host" side, "B" side first) pins */
|
|
static const uint8_t usb_c_host_sideb_pins[] = {10, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
|
|
/** USB-C connector ("host" side) */
|
|
static const struct usb_connector_t usb_c_host_connector = {
|
|
.name = "C",
|
|
.shortname = "C",
|
|
.variant = "host",
|
|
.pins_nb = LENGTH(usb_c_host_sidea_pins),
|
|
.pins = usb_c_host_sidea_pins,
|
|
};
|
|
|
|
/** USB type A connector (device) pins */
|
|
static const uint8_t usb_a_device_pins[] = {35, 36, 37, 38, 39, 40, 41, 42, 43, 44};
|
|
/** USB type A connector (device)
|
|
* @note type A should be a host side connector, but it is sometimes used on the device side, or to provide additional power on Y cables
|
|
*/
|
|
static const struct usb_connector_t usb_a_device_connector = {
|
|
.name = "A",
|
|
.shortname = "A",
|
|
.variant = "device",
|
|
.pins_nb = LENGTH(usb_a_device_pins),
|
|
.pins = usb_a_device_pins,
|
|
};
|
|
|
|
/** USB type B connector (device side) pins */
|
|
static const uint8_t usb_b_device_pins[] = {45, 46, 47, 48, 49, 50, 51, 52, 53, 54};
|
|
/** USB type B connector (device side) */
|
|
static const struct usb_connector_t usb_b_device_connector = {
|
|
.name = "B",
|
|
.shortname = "B",
|
|
.variant = NULL,
|
|
.pins_nb = LENGTH(usb_b_device_pins),
|
|
.pins = usb_b_device_pins,
|
|
};
|
|
|
|
/** USB mini-B connector (device side) */
|
|
static const uint8_t usb_minib_device_pins[] = {55, 56, 57, 58, 59, 60};
|
|
/** USB mini-B connector (device side)
|
|
* @note this connector does not support USB 3.x
|
|
*/
|
|
static const struct usb_connector_t usb_minib_device_connector = {
|
|
.name = "mini-B",
|
|
.shortname = "mB",
|
|
.variant = NULL,
|
|
.pins_nb = LENGTH(usb_minib_device_pins),
|
|
.pins = usb_minib_device_pins,
|
|
};
|
|
|
|
/** USB micro-B connector (device side) pins */
|
|
static const uint8_t usb_microb_device_pins[] = {61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71};
|
|
/** USB micro-B connector (device side) */
|
|
static const struct usb_connector_t usb_microb_device_connector = {
|
|
.name = "micro-B",
|
|
.shortname = "uB",
|
|
.variant = NULL,
|
|
.pins_nb = LENGTH(usb_microb_device_pins),
|
|
.pins = usb_microb_device_pins,
|
|
};
|
|
|
|
/** USB-C connector ("device" side, "A" side first) pins */
|
|
static const uint8_t usb_c_device_sidea_pins[] = {72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96};
|
|
/** USB-C connector ("device" side, "B" side first) pins */
|
|
static const uint8_t usb_c_device_sideb_pins[] = {72, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84};
|
|
/** USB-C connector ("device" side) */
|
|
static const struct usb_connector_t usb_c_device_connector = {
|
|
.name = "C",
|
|
.shortname = "C",
|
|
.variant = "device",
|
|
.pins_nb = LENGTH(usb_c_device_sidea_pins),
|
|
.pins = usb_c_device_sidea_pins,
|
|
};
|
|
|
|
/** Apple lightning connector (device side) pins */
|
|
static const uint8_t lighnting_device_pins[] = {97, 98, 99, 100, 101, 102, 103, 104};
|
|
/** Apple lightning connector (device side)
|
|
* @note this is not strictly a USB connector
|
|
*/
|
|
static const struct usb_connector_t lightning_device_connector = {
|
|
.name = "lightning",
|
|
.shortname = "L",
|
|
.variant = NULL,
|
|
.pins_nb = LENGTH(lighnting_device_pins),
|
|
.pins = lighnting_device_pins,
|
|
};
|
|
|
|
const struct usb_connector_t* usb_connectors[] = {
|
|
[USB_CONNECTOR_A_HOST] = &usb_a_host_connector,
|
|
[USB_CONNECTOR_C_HOST] = &usb_c_host_connector,
|
|
[USB_CONNECTOR_A_DEVICE] = &usb_a_device_connector,
|
|
[USB_CONNECTOR_B_DEVICE] = &usb_b_device_connector,
|
|
[USB_CONNECTOR_MINIB_DEVICE] = &usb_minib_device_connector,
|
|
[USB_CONNECTOR_MICROB_DEVICE] = &usb_microb_device_connector,
|
|
[USB_CONNECTOR_C_DEVICE] = &usb_c_device_connector,
|
|
[USB_CONNECTOR_LIGHTNING_DEVICE] = &lightning_device_connector,
|
|
};
|
|
|
|
/* USB cables definitions */
|
|
|
|
/** list of connectors for A-A cables */
|
|
static const struct usb_connector_t* usb_a_a_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_a_device_connector,
|
|
};
|
|
|
|
/** USB type A to type A power cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB data signals
|
|
* @note A-A cable are not specified since they use a host connector on both sides
|
|
*/
|
|
static const uint8_t usb_aa0_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
};
|
|
|
|
/** USB type A to type A USB 2.0 cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB data signals
|
|
* @note A-A cable are not specified since they use a host connector on both sides, but some cheap devices use it because the connector is cheap
|
|
*/
|
|
static const uint8_t usb_aa2_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_a_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_a_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_a_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
};
|
|
|
|
/** USB type A to type A USB 3.x cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB data signals
|
|
* @note A-A cable are not specified since they use a host connector on both sides, but it is often used on PCIe raiser boards
|
|
*/
|
|
static const uint8_t usb_aa3_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_a_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_a_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_a_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
{usb_a_host_pins[5], usb_a_device_pins[5]}, // RX-, TX-
|
|
{usb_a_host_pins[6], usb_a_device_pins[6]}, // RX+, TX+
|
|
{usb_a_host_pins[7], usb_a_device_pins[7]}, // GND_DRAIN
|
|
{usb_a_host_pins[8], usb_a_device_pins[8]}, // TX-, RX-
|
|
{usb_a_host_pins[9], usb_a_device_pins[9]}, // TX+, RX+
|
|
};
|
|
|
|
/** list of connectors for A-B cables (using A host connector) */
|
|
static const struct usb_connector_t* usb_a_host_b_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_b_device_connector,
|
|
};
|
|
|
|
/** USB type A to type B power only cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB data signals
|
|
*/
|
|
static const uint8_t usb__a_host__b__ab0_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_b_device_pins[4]}, // GND
|
|
};
|
|
|
|
/** USB type A to type B battery charger cable mandatory pin pairs
|
|
* @implements Battery Charging Specification, Revision 1.1: A Dedicated Charging Port is required to short the D+ line to the D- line. Doing it in the cable on the device side is kind of cheating
|
|
* @note this cable is not specified since it does not carry USB data signals
|
|
*/
|
|
static const uint8_t usb__a_host__b__abbc_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_b_device_pins[4]}, // GND
|
|
{usb_b_device_pins[2], usb_b_device_pins[3]}, // D+, D-
|
|
};
|
|
|
|
/** USB type A to type B USB 2.0 cable mandatory pin pairs
|
|
* @implements USB Cables and Connectors Class 2.0 (https://www.usb.org/document-library/cables-and-connectors-class-20)
|
|
* @note the shield is mandatory
|
|
*/
|
|
static const uint8_t usb__a_host__b__ab2_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_b_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_b_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_b_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_b_device_pins[4]}, // GND
|
|
};
|
|
|
|
/** USB type A to type B USB 3.x cable mandatory pin pairs
|
|
* @implements USB 3.1 Legacy Cable and Connector (https://www.usb.org/document-library/usb-31-legacy-cable-and-connector-revision-10)
|
|
* @note the shield is mandatory
|
|
*/
|
|
static const uint8_t usb__a_host__b__ab3_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_b_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_b_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_b_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_b_device_pins[4]}, // GND
|
|
{usb_a_host_pins[5], usb_b_device_pins[5]}, // RX-, TX-
|
|
{usb_a_host_pins[6], usb_b_device_pins[6]}, // RX+, TX+
|
|
{usb_a_host_pins[7], usb_b_device_pins[7]}, // GND_DRAIN
|
|
{usb_a_host_pins[8], usb_b_device_pins[8]}, // TX-, RX-
|
|
{usb_a_host_pins[9], usb_b_device_pins[9]}, // TX+, RX+
|
|
};
|
|
|
|
/** list of connectors for A-B cables (using A device connector) */
|
|
static const struct usb_connector_t* usb_a_device_b_connectors[] = {
|
|
&usb_a_device_connector,
|
|
&usb_b_device_connector,
|
|
};
|
|
|
|
static const uint8_t usb__a_device__b__ab0_pins[][2] = {
|
|
{usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_b_device_pins[4]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb__a_device__b__abbc_pins[][2] = {
|
|
{usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_b_device_pins[4]}, // GND
|
|
{usb_b_device_pins[2], usb_b_device_pins[3]}, // D+, D-
|
|
};
|
|
|
|
static const uint8_t usb__a_device__b__ab0_opts[][2] = {
|
|
{usb_b_device_pins[2], usb_b_device_pins[3]}, // D+, D- (Battery Charging Specification, Revision 1.1: A Dedicated Charging Port is required to short the D+ line to the D- line. Doing it in the cable on the device side is kind of cheating)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__b__ab2_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_b_device_pins[0]}, // shield
|
|
{usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_b_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_b_device_pins[3]}, // D+
|
|
{usb_a_device_pins[4], usb_b_device_pins[4]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb__a_device__b__ab3_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_b_device_pins[0]}, // shield
|
|
{usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_b_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_b_device_pins[3]}, // D+
|
|
{usb_a_device_pins[4], usb_b_device_pins[4]}, // GND
|
|
{usb_a_device_pins[5], usb_b_device_pins[5]}, // RX-, TX-
|
|
{usb_a_device_pins[6], usb_b_device_pins[6]}, // RX+, TX+
|
|
{usb_a_device_pins[7], usb_b_device_pins[7]}, // GND_DRAIN
|
|
{usb_a_device_pins[8], usb_b_device_pins[8]}, // TX-, RX-
|
|
{usb_a_device_pins[9], usb_b_device_pins[9]}, // TX+, RX+
|
|
};
|
|
|
|
/** list of connectors for A+A-B cables */
|
|
static const struct usb_connector_t* usb_a_a_b_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_a_device_connector,
|
|
&usb_b_device_connector,
|
|
};
|
|
|
|
/** USB type A to type B USB 2.0, with additional A for power cable mandatory pin pairs,
|
|
* @implements this cable is not specified
|
|
*/
|
|
static const uint8_t usb_a_host_a_device_b_aab2_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_b_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_b_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_b_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_b_device_pins[4]}, // GND
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
{usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_b_device_pins[4]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb_a_device_a_host_b_aab2_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_b_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_b_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_b_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_b_device_pins[4]}, // GND
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
{usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_b_device_pins[4]}, // GND
|
|
};
|
|
|
|
/** list of connectors for A-miniB cables (using A host connector) */
|
|
static const struct usb_connector_t* usb_a_host_minib_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_minib_device_connector,
|
|
};
|
|
|
|
/** USB type A to type mini-B power only cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB data signals
|
|
*/
|
|
static const uint8_t usb__a_host__minib__amb0_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_minib_device_pins[5]}, // GND
|
|
};
|
|
|
|
/** USB type A to type mini-B battery charger cable mandatory pin pairs
|
|
* @implements Battery Charging Specification, Revision 1.1: A Dedicated Charging Port is required to short the D+ line to the D- line. Doing it in the cable on the device side is kind of cheating
|
|
* @note this cable is not specified since it does not carry USB data signals
|
|
*/
|
|
static const uint8_t usb__a_host__minib__ambbc_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_minib_device_pins[5]}, // GND
|
|
{usb_minib_device_pins[2], usb_minib_device_pins[3]}, // D+, D-
|
|
};
|
|
|
|
/** USB type A to type mini-B USB 2.0 cable mandatory pin pairs
|
|
* @implements USB Cables and Connectors Class 2.0 (https://www.usb.org/document-library/cables-and-connectors-class-20)
|
|
* @note the shield is mandatory
|
|
*/
|
|
static const uint8_t usb__a_host__minib__amb2_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_minib_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_minib_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_minib_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_minib_device_pins[5]}, // GND
|
|
};
|
|
|
|
/** list of connectors for A-miniB cables (using A device connector) */
|
|
static const struct usb_connector_t* usb_a_device_minib_connectors[] = {
|
|
&usb_a_device_connector,
|
|
&usb_minib_device_connector,
|
|
};
|
|
|
|
static const uint8_t usb__a_device__minib__amb0_pins[][2] = {
|
|
{usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_minib_device_pins[5]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb__a_device__minib__ambbc_pins[][2] = {
|
|
{usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_minib_device_pins[5]}, // GND
|
|
{usb_minib_device_pins[2], usb_minib_device_pins[3]}, // D+, D-
|
|
};
|
|
|
|
static const uint8_t usb__a_device__minib__amb2_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_minib_device_pins[0]}, // shield
|
|
{usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_minib_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_minib_device_pins[3]}, // D+
|
|
{usb_a_device_pins[4], usb_minib_device_pins[5]}, // GND
|
|
};
|
|
|
|
/** list of connectors for A+A-B cables */
|
|
static const struct usb_connector_t* usb_a_a_minib_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_a_device_connector,
|
|
&usb_minib_device_connector,
|
|
};
|
|
|
|
/** USB type A to type B USB 2.0, with additional A for power cable mandatory pin pairs,
|
|
* @implements this cable is not specified
|
|
*/
|
|
static const uint8_t usb_a_host_a_device_minib_aamb2_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_minib_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_minib_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_minib_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_minib_device_pins[4]}, // GND
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
{usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_minib_device_pins[4]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb_a_device_a_host_minib_aamb2_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_minib_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_minib_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_minib_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_minib_device_pins[4]}, // GND
|
|
{usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_a_device_pins[4]}, // GND
|
|
{usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_minib_device_pins[4]}, // GND
|
|
};
|
|
|
|
/** list of connectors for A-microB cables (using A host connector) */
|
|
static const struct usb_connector_t* usb_a_host_microb_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_microb_device_connector,
|
|
};
|
|
|
|
/** USB type A to type micro-B power only cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB data signals
|
|
*/
|
|
static const uint8_t usb__a_host__microb__aub0_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND
|
|
};
|
|
|
|
/** USB type A to type micro-B power only cable mandatory pin pairs
|
|
* @implements Battery Charging Specification, Revision 1.1: A Dedicated Charging Port is required to short the D+ line to the D- line. Doing it in the cable on the device side is kind of cheating
|
|
* @note this cable is not specified since it does not carry USB data signals
|
|
*/
|
|
static const uint8_t usb__a_host__microb__aubbc_pins[][2] = {
|
|
{usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND
|
|
{usb_microb_device_pins[2], usb_microb_device_pins[3]}, // D+, D-
|
|
};
|
|
|
|
/** USB type A to type micro-B USB 2.0 cable mandatory pin pairs
|
|
* @implements USB Cables and Connectors Class 2.0 (https://www.usb.org/document-library/cables-and-connectors-class-20)
|
|
* @note the shield is mandatory
|
|
*/
|
|
static const uint8_t usb__a_host__microb__aub2_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_microb_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_microb_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_microb_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND
|
|
};
|
|
|
|
/** USB type A to type micro-B USB 3.x cable mandatory pin pairs
|
|
* @implements USB 3.1 Legacy Cable and Connector (https://www.usb.org/document-library/usb-31-legacy-cable-and-connector-revision-10)
|
|
* @note the shield is mandatory
|
|
*/
|
|
static const uint8_t usb__a_host__microb__aub3_pins[][2] = {
|
|
{usb_a_host_pins[0], usb_microb_device_pins[0]}, // shield
|
|
{usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_host_pins[2], usb_microb_device_pins[2]}, // D-
|
|
{usb_a_host_pins[3], usb_microb_device_pins[3]}, // D+
|
|
{usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND
|
|
{usb_a_host_pins[5], usb_microb_device_pins[6]}, // RX-, TX-
|
|
{usb_a_host_pins[6], usb_microb_device_pins[7]}, // RX+, TX+
|
|
{usb_a_host_pins[7], usb_microb_device_pins[8]}, // GND_DRAIN
|
|
{usb_a_host_pins[8], usb_microb_device_pins[9]}, // TX-, RX-
|
|
{usb_a_host_pins[9], usb_microb_device_pins[10]}, // TX+, RX+
|
|
};
|
|
|
|
/** list of connectors for A-microB cables (using A device connector) */
|
|
static const struct usb_connector_t* usb_a_device_microb_connectors[] = {
|
|
&usb_a_device_connector,
|
|
&usb_microb_device_connector,
|
|
};
|
|
|
|
static const uint8_t usb__a_device__microb__aub0_pins[][2] = {
|
|
{usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb__a_device__microb__aubbc_pins[][2] = {
|
|
{usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND
|
|
{usb_microb_device_pins[2], usb_microb_device_pins[3]}, // D+, D-
|
|
};
|
|
|
|
static const uint8_t usb__a_device__microb__aub2_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_microb_device_pins[0]}, // shield
|
|
{usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_microb_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_microb_device_pins[3]}, // D+
|
|
{usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND
|
|
};
|
|
|
|
static const uint8_t usb__a_device__microb__aub3_pins[][2] = {
|
|
{usb_a_device_pins[0], usb_microb_device_pins[0]}, // shield
|
|
{usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS
|
|
{usb_a_device_pins[2], usb_microb_device_pins[2]}, // D-
|
|
{usb_a_device_pins[3], usb_microb_device_pins[3]}, // D+
|
|
{usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND
|
|
{usb_a_device_pins[5], usb_microb_device_pins[6]}, // RX-, TX-
|
|
{usb_a_device_pins[6], usb_microb_device_pins[7]}, // RX+, TX+
|
|
{usb_a_device_pins[7], usb_microb_device_pins[8]}, // GND_DRAIN
|
|
{usb_a_device_pins[8], usb_microb_device_pins[9]}, // TX-, RX-
|
|
{usb_a_device_pins[9], usb_microb_device_pins[10]}, // TX+, RX+
|
|
};
|
|
|
|
/** list of connectors for C shunts (using C host connector) */
|
|
static const struct usb_connector_t* usb_c_host_connectors[] = {
|
|
&usb_c_host_connector,
|
|
};
|
|
|
|
/** this is not a cable, but a shunt shorting opposite pins the type C connector so to test it */
|
|
static const uint8_t usb__c_host__c_host__cpinshunt_pins[][2] = {
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[2], usb_c_host_sideb_pins[11]}, // A2 TX+1, B11 RX+1
|
|
{usb_c_host_sidea_pins[3], usb_c_host_sideb_pins[10]}, // A3 TX-1, B10 RX-1
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sideb_pins[8]}, // A5 CC1, B8 SBU2
|
|
{usb_c_host_sidea_pins[6], usb_c_host_sideb_pins[7]}, // A6 D+1, B7 D-2
|
|
{usb_c_host_sidea_pins[7], usb_c_host_sideb_pins[6]}, // A7 D-1, B6 D+2
|
|
{usb_c_host_sidea_pins[8], usb_c_host_sideb_pins[5]}, // A8 SBU1, B5 CC2
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sideb_pins[4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[10], usb_c_host_sideb_pins[3]}, // A10 RX-2, B3 TX-2
|
|
{usb_c_host_sidea_pins[11], usb_c_host_sideb_pins[2]}, // A11 RX+2, B2 TX+2
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sideb_pins[1]}, // A12 GND, B1 GND
|
|
};
|
|
|
|
/** this is not a cable, but a shunt shorting opposite signal the type C connector so to test it */
|
|
static const uint8_t usb__c_host__c_host__csignalshunt_pins[][2] = {
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sideb_pins[1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[2], usb_c_host_sideb_pins[2]}, // A2 TX+1, B2 TX+2
|
|
{usb_c_host_sidea_pins[3], usb_c_host_sideb_pins[3]}, // A3 TX-1, B3 TX-2
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sideb_pins[4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sideb_pins[5]}, // A5 CC1, B5 CC2
|
|
{usb_c_host_sidea_pins[6], usb_c_host_sideb_pins[6]}, // A6 D+1, B6 D+2
|
|
{usb_c_host_sidea_pins[7], usb_c_host_sideb_pins[7]}, // A7 D-1, B7 D-2
|
|
{usb_c_host_sidea_pins[8], usb_c_host_sideb_pins[8]}, // A8 SBU1, B8 SBU2
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sideb_pins[9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[10], usb_c_host_sideb_pins[10]}, // A10 RX-2, B10 RX-1
|
|
{usb_c_host_sidea_pins[11], usb_c_host_sideb_pins[11]}, // A11 RX+2, B11 RX+1
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sideb_pins[12]}, // A12 GND, B12 GND
|
|
};
|
|
|
|
/** list of connectors for C shunts (using C device connector) */
|
|
static const struct usb_connector_t* usb_c_device_connectors[] = {
|
|
&usb_c_device_connector,
|
|
};
|
|
|
|
static const uint8_t usb__c_device__c_device__cpinshunt_pins[][2] = {
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[2], usb_c_device_sideb_pins[11]}, // A2 TX+1, B11 RX+1
|
|
{usb_c_device_sidea_pins[3], usb_c_device_sideb_pins[10]}, // A3 TX-1, B10 RX-1
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sideb_pins[8]}, // A5 CC1, B8 SBU2
|
|
{usb_c_device_sidea_pins[6], usb_c_device_sideb_pins[7]}, // A6 D+1, B7 D-2
|
|
{usb_c_device_sidea_pins[7], usb_c_device_sideb_pins[6]}, // A7 D-1, B6 D+2
|
|
{usb_c_device_sidea_pins[8], usb_c_device_sideb_pins[5]}, // A8 SBU1, B5 CC2
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[10], usb_c_device_sideb_pins[3]}, // A10 RX-2, B3 TX-2
|
|
{usb_c_device_sidea_pins[11], usb_c_device_sideb_pins[2]}, // A11 RX+2, B2 TX+2
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, B1 GND
|
|
};
|
|
|
|
static const uint8_t usb__c_device__c_device__csignalshunt_pins[][2] = {
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[2], usb_c_device_sideb_pins[2]}, // A2 TX+1, B2 TX+2
|
|
{usb_c_device_sidea_pins[3], usb_c_device_sideb_pins[3]}, // A3 TX-1, B3 TX-2
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, B5 CC2
|
|
{usb_c_device_sidea_pins[6], usb_c_device_sideb_pins[6]}, // A6 D+1, B6 D+2
|
|
{usb_c_device_sidea_pins[7], usb_c_device_sideb_pins[7]}, // A7 D-1, B7 D-2
|
|
{usb_c_device_sidea_pins[8], usb_c_device_sideb_pins[8]}, // A8 SBU1, B8 SBU2
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[10], usb_c_device_sideb_pins[10]}, // A10 RX-2, B10 RX-1
|
|
{usb_c_device_sidea_pins[11], usb_c_device_sideb_pins[11]}, // A11 RX+2, B11 RX+1
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, B12 GND
|
|
};
|
|
|
|
/** list of connectors for A-C cables (using A host connector and C host connector) */
|
|
static const struct usb_connector_t* usb_a_host_c_host_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_c_host_connector,
|
|
};
|
|
|
|
/** list of connectors for A-C cables (using A host connector and C device connector) */
|
|
static const struct usb_connector_t* usb_a_host_c_device_connectors[] = {
|
|
&usb_a_host_connector,
|
|
&usb_c_device_connector,
|
|
};
|
|
|
|
/** list of connectors for A-C cables (using A device connector and C host connector) */
|
|
static const struct usb_connector_t* usb_a_device_c_host_connectors[] = {
|
|
&usb_a_device_connector,
|
|
&usb_c_host_connector,
|
|
};
|
|
|
|
/** list of connectors for A-C cables (using A device connector and C device connector) */
|
|
static const struct usb_connector_t* usb_a_device_c_device_connectors[] = {
|
|
&usb_a_device_connector,
|
|
&usb_c_device_connector,
|
|
};
|
|
|
|
/** USB type A to type C power only cable mandatory pin pairs
|
|
* @implements this cable is not specified since it does not carry USB signals
|
|
*/
|
|
static const uint8_t usb__a_host__c_host_sidea__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_host_sideb__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_device_sidea__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_device_sideb__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_host_sidea__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_host_sideb__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_device_sidea__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_device_sideb__ac0_pins[][2] = {
|
|
// C internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
/** USB type A to type C USB 2.0 cable mandatory pin pairs
|
|
* @implements AC2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__a_host__c_host_sidea__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_host_sideb__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_device_sidea__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_device_sideb__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_host_sidea__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_host_sideb__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_device_sidea__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_device_sideb__ac2_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
// C internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO)
|
|
// A-C connections
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
};
|
|
|
|
/** USB type A to type C USB 3.1 cable mandatory pin pairs
|
|
* @implements AC3G2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__a_host__c_host_sidea__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
{usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[7], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_host_pins[7], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_host_pins[7], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_host_pins[7], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_host_pins[7], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_host_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_host_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[6], usb_c_host_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_host_pins[5], usb_c_host_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_host_pins[9], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_host_pins[8], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_host_sideb__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
{usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[7], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_host_pins[7], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_host_pins[7], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_host_pins[7], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_host_pins[7], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_host_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_host_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[6], usb_c_host_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_host_pins[5], usb_c_host_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_host_pins[9], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_host_pins[8], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_device_sidea__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
{usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[7], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_host_pins[7], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_host_pins[7], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_host_pins[7], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_host_pins[7], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_host_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_host_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[6], usb_c_device_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_host_pins[5], usb_c_device_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_host_pins[9], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_host_pins[8], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_host__c_device_sideb__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND
|
|
{usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_host_pins[7], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_host_pins[7], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_host_pins[7], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_host_pins[7], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_host_pins[7], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_host_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_host_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_host_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_host_pins[6], usb_c_device_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_host_pins[5], usb_c_device_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_host_pins[9], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_host_pins[8], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_host_sidea__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
{usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[7], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_device_pins[7], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_device_pins[7], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_device_pins[7], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_device_pins[7], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[6], usb_c_host_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_device_pins[5], usb_c_host_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_device_pins[9], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_device_pins[8], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_host_sideb__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
{usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[7], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_device_pins[7], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_device_pins[7], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_device_pins[7], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_device_pins[7], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[6], usb_c_host_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_device_pins[5], usb_c_host_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_device_pins[9], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_device_pins[8], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_device_sidea__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
{usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[7], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_device_pins[7], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_device_pins[7], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_device_pins[7], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_device_pins[7], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[6], usb_c_device_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_device_pins[5], usb_c_device_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_device_pins[9], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_device_pins[8], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__a_device__c_device_sideb__ac3_pins[][2] = {
|
|
// A internal connections
|
|
{usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND
|
|
{usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO)
|
|
// A-C connections, GND and VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_a_device_pins[7], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_a_device_pins[7], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_a_device_pins[7], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_a_device_pins[7], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_a_device_pins[7], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_a_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO)
|
|
// A-C connections, data
|
|
{usb_a_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_a_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_a_device_pins[6], usb_c_device_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_a_device_pins[5], usb_c_device_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_a_device_pins[9], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_a_device_pins[8], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
/** list of connectors for C-B cables (using C host connector) */
|
|
static const struct usb_connector_t* usb_c_host_b_device_connectors[] = {
|
|
&usb_c_host_connector,
|
|
&usb_b_device_connector,
|
|
};
|
|
|
|
/** list of connectors for C-B cables (using C device connector) */
|
|
static const struct usb_connector_t* usb_c_device_b_device_connectors[] = {
|
|
&usb_c_device_connector,
|
|
&usb_b_device_connector,
|
|
};
|
|
|
|
/** USB type C to type B USB 2.0 cable mandatory pin pairs
|
|
* @implements CB2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__b_device__cb2_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[0]}, // A5 CC1, shield
|
|
// B-C connections
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__b_device__cb2_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[0]}, // A5 CC1, shield
|
|
// B-C connections
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sidea__b_device__cb2_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[0]}, // A5 CC1, shield
|
|
// B-C connections
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sideb__b_device__cb2_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[0]}, // A5 CC1, shield
|
|
// B-C connections
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
/** USB type C to type B USB 3.1 cable mandatory pin pairs
|
|
* @implements CB3G2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__b_device__cb3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
{usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[7], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_b_device_pins[7], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_b_device_pins[7], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_b_device_pins[7], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_b_device_pins[7], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_b_device_pins[7], usb_c_host_sidea_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_b_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[9], usb_c_host_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_b_device_pins[8], usb_c_host_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_b_device_pins[6], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_b_device_pins[5], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__b_device__cb3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
{usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[7], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_b_device_pins[7], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_b_device_pins[7], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_b_device_pins[7], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_b_device_pins[7], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_b_device_pins[4], usb_c_host_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_b_device_pins[7], usb_c_host_sideb_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_b_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[9], usb_c_host_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_b_device_pins[8], usb_c_host_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_b_device_pins[6], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_b_device_pins[5], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sidea__b_device__cb3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
{usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[7], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_b_device_pins[7], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_b_device_pins[7], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_b_device_pins[7], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_b_device_pins[7], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_b_device_pins[7], usb_c_device_sidea_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_b_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[9], usb_c_device_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_b_device_pins[8], usb_c_device_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_b_device_pins[6], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_b_device_pins[5], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sideb__b_device__cb3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND
|
|
{usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN
|
|
{usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_b_device_pins[7], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_b_device_pins[7], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_b_device_pins[7], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_b_device_pins[7], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_b_device_pins[7], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_b_device_pins[4], usb_c_device_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_b_device_pins[7], usb_c_device_sideb_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_b_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_b_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_b_device_pins[9], usb_c_device_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_b_device_pins[8], usb_c_device_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_b_device_pins[6], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_b_device_pins[5], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
/** list of connectors for C-miniB cables (using C host connector) */
|
|
static const struct usb_connector_t* usb_c_host_minib_device_connectors[] = {
|
|
&usb_c_host_connector,
|
|
&usb_minib_device_connector,
|
|
};
|
|
|
|
/** list of connectors for C-miniB cables (using C device connector) */
|
|
static const struct usb_connector_t* usb_c_device_minib_device_connectors[] = {
|
|
&usb_c_device_connector,
|
|
&usb_minib_device_connector,
|
|
};
|
|
|
|
/** USB type C to type mini-B USB 2.0 cable mandatory pin pairs
|
|
* @implements CmB2 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__minib_device__cminib2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_minib_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_minib_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_minib_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_minib_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_minib_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_minib_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_minib_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_minib_device_pins[5], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_minib_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_minib_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_minib_device_pins[5], usb_c_host_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__minib_device__cminib2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_minib_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_minib_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_minib_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_minib_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_minib_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_minib_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_minib_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_minib_device_pins[5], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_minib_device_pins[5], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_minib_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_minib_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_minib_device_pins[5], usb_c_host_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sidea__minib_device__cminib2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_minib_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_minib_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_minib_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_minib_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_minib_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_minib_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_minib_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_minib_device_pins[5], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_minib_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_minib_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_minib_device_pins[5], usb_c_device_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sideb__minib_device__cminib2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_minib_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_minib_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_minib_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_minib_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_minib_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_minib_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_minib_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_minib_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_minib_device_pins[5], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_minib_device_pins[5], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_minib_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_minib_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_minib_device_pins[5], usb_c_device_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
/** list of connectors for C-miniB cables (using C host connector) */
|
|
static const struct usb_connector_t* usb_c_host_microb_device_connectors[] = {
|
|
&usb_c_host_connector,
|
|
&usb_microb_device_connector,
|
|
};
|
|
|
|
/** list of connectors for C-miniB cables (using C device connector) */
|
|
static const struct usb_connector_t* usb_c_device_microb_device_connectors[] = {
|
|
&usb_c_device_connector,
|
|
&usb_microb_device_connector,
|
|
};
|
|
|
|
/** USB type C to type micro-B USB 2.0 cable mandatory pin pairs
|
|
* @implements CµB2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__microb_device__cmicrob2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__microb_device__cmicrob2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sidea__microb_device__cmicrob2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sideb__microb_device__cmicrob2_pins[][2] = {
|
|
// mini-B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[0]}, // A5 CC1, shield
|
|
// mini-B-C connections
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
};
|
|
|
|
/** USB type C to type micro-B USB 3.1 Gen 2 cable mandatory pin pairs
|
|
* @implements CµB3G2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__microb_device__cmicrob3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN
|
|
{usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_microb_device_pins[8], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_microb_device_pins[8], usb_c_host_sidea_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_microb_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[9], usb_c_host_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_microb_device_pins[10], usb_c_host_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_microb_device_pins[6], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_microb_device_pins[7], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__microb_device__cmicrob3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN
|
|
{usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_microb_device_pins[8], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_microb_device_pins[8], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_host_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_microb_device_pins[8], usb_c_host_sideb_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_microb_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[9], usb_c_host_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_microb_device_pins[10], usb_c_host_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_microb_device_pins[6], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_microb_device_pins[7], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sidea__microb_device__cmicrob3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN
|
|
{usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield
|
|
{usb_microb_device_pins[8], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sidea_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_microb_device_pins[8], usb_c_device_sidea_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_microb_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[9], usb_c_device_sidea_pins[2]}, // RX+, A2 TX+1
|
|
{usb_microb_device_pins[10], usb_c_device_sidea_pins[3]}, // RX-, A3 TX-1
|
|
{usb_microb_device_pins[6], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_microb_device_pins[7], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
static const uint8_t usb__c_device_sideb__microb_device__cmicrob3_pins[][2] = {
|
|
// B internal connections
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND
|
|
{usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN
|
|
{usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN
|
|
// C internal connections - shield to ground
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
// C internal connections - ground
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
// C internal connections - power
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C internal connections - device indicator (Rd 5.1 kO pull down)
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[1]}, // A5 CC1, A1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12]}, // A5 CC1, A12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 1]}, // A5 CC1, B1 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[12 + 12]}, // A5 CC1, B12 GND
|
|
{usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[0]}, // A5 CC1, shield
|
|
// B-C connections, GND and VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS
|
|
{usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[0]}, // GND, shield
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[1]}, // GND, A1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[12]}, // GND, A12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield
|
|
{usb_microb_device_pins[8], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND
|
|
{usb_microb_device_pins[8], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND
|
|
{usb_microb_device_pins[5], usb_c_device_sideb_pins[5]}, // GND, A5 CC1 (Rd 5.1 kO pull down)
|
|
{usb_microb_device_pins[8], usb_c_device_sideb_pins[5]}, // GND_DRAIN, A5 CC1 (Rd 5.1 kO pull down)
|
|
// B-C connections, data
|
|
{usb_microb_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 D-1
|
|
{usb_microb_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 D+1
|
|
{usb_microb_device_pins[9], usb_c_device_sideb_pins[2]}, // RX+, A2 TX+1
|
|
{usb_microb_device_pins[10], usb_c_device_sideb_pins[3]}, // RX-, A3 TX-1
|
|
{usb_microb_device_pins[6], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RX+1
|
|
{usb_microb_device_pins[7], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RX-1
|
|
};
|
|
|
|
/** list of connectors for C-C cables */
|
|
static const struct usb_connector_t* usb_c_c_connectors[] = {
|
|
&usb_c_host_connector,
|
|
&usb_c_device_connector,
|
|
};
|
|
|
|
/** USB type C to type C USB 2.0 cable mandatory pin pairs
|
|
* @implements CC2-3 and CC2-5 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__c_device_sidea__cc2_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sidea_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
//{usb_c_host_sidea_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN)
|
|
{usb_c_host_sidea_pins[6], usb_c_device_sidea_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sidea_pins[7], usb_c_device_sidea_pins[7]}, // A7 D-1, A7 D-1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sidea__c_device_sideb__cc2_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sidea_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
//{usb_c_host_sidea_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN)
|
|
{usb_c_host_sidea_pins[6], usb_c_device_sideb_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sidea_pins[7], usb_c_device_sideb_pins[7]}, // A7 D-1, A7 D-1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__c_device_sidea__cc2_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sideb_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
//{usb_c_host_sideb_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN)
|
|
{usb_c_host_sideb_pins[6], usb_c_device_sidea_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sideb_pins[7], usb_c_device_sidea_pins[7]}, // A7 D-1, A7 D-1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__c_device_sideb__cc2_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sideb_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
//{usb_c_host_sideb_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN)
|
|
{usb_c_host_sideb_pins[6], usb_c_device_sideb_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sideb_pins[7], usb_c_device_sideb_pins[7]}, // A7 D-1, A7 D-1
|
|
};
|
|
|
|
/** USB type C to type C full featured cable mandatory pin pairs
|
|
* @implements Full-Featured assembly from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019)
|
|
*/
|
|
static const uint8_t usb__c_host_sidea__c_device_sidea__ff_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sidea_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
{usb_c_host_sidea_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) they are not directly connected, but through Ra connected to ground on both sides
|
|
{usb_c_host_sidea_pins[6], usb_c_device_sidea_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sidea_pins[7], usb_c_device_sidea_pins[7]}, // A7 D-1, A7 D-1
|
|
{usb_c_host_sidea_pins[2], usb_c_device_sidea_pins[12 + 11]}, // A2 TX+1, B11 RX+1
|
|
{usb_c_host_sidea_pins[3], usb_c_device_sidea_pins[12 + 10]}, // A3 TX-1, B10 RX-1
|
|
{usb_c_host_sidea_pins[12 + 11], usb_c_device_sidea_pins[2]}, // B11 RX+1, A2 TX+1
|
|
{usb_c_host_sidea_pins[12 + 10], usb_c_device_sidea_pins[3]}, // B10 RX-1, A3 TX-1
|
|
{usb_c_host_sidea_pins[12 + 2], usb_c_device_sidea_pins[11]}, // B2 TX+2, Q11 RX+2
|
|
{usb_c_host_sidea_pins[12 + 3], usb_c_device_sidea_pins[10]}, // B3 TX-2, A10 RX-2
|
|
{usb_c_host_sidea_pins[11], usb_c_device_sidea_pins[12 + 2]}, // A11 RX+2, B2 TX+2
|
|
{usb_c_host_sidea_pins[10], usb_c_device_sidea_pins[12 + 3]}, // A10 RX-2, B3 TX-2
|
|
{usb_c_host_sidea_pins[8], usb_c_device_sidea_pins[12 + 8]}, // A8 SBU1, B8 SBU2
|
|
{usb_c_host_sidea_pins[12 + 8], usb_c_device_sidea_pins[8]}, // B8 SBU2, A8 SBU1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sidea__c_device_sideb__ff_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sidea_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
{usb_c_host_sidea_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) they are not directly connected, but through Ra connected to ground on both sides
|
|
{usb_c_host_sidea_pins[6], usb_c_device_sideb_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sidea_pins[7], usb_c_device_sideb_pins[7]}, // A7 D-1, A7 D-1
|
|
{usb_c_host_sidea_pins[2], usb_c_device_sideb_pins[12 + 11]}, // A2 TX+1, B11 RX+1
|
|
{usb_c_host_sidea_pins[3], usb_c_device_sideb_pins[12 + 10]}, // A3 TX-1, B10 RX-1
|
|
{usb_c_host_sidea_pins[12 + 11], usb_c_device_sideb_pins[2]}, // B11 RX+1, A2 TX+1
|
|
{usb_c_host_sidea_pins[12 + 10], usb_c_device_sideb_pins[3]}, // B10 RX-1, A3 TX-1
|
|
{usb_c_host_sidea_pins[12 + 2], usb_c_device_sideb_pins[11]}, // B2 TX+2, Q11 RX+2
|
|
{usb_c_host_sidea_pins[12 + 3], usb_c_device_sideb_pins[10]}, // B3 TX-2, A10 RX-2
|
|
{usb_c_host_sidea_pins[11], usb_c_device_sideb_pins[12 + 2]}, // A11 RX+2, B2 TX+2
|
|
{usb_c_host_sidea_pins[10], usb_c_device_sideb_pins[12 + 3]}, // A10 RX-2, B3 TX-2
|
|
{usb_c_host_sidea_pins[8], usb_c_device_sideb_pins[12 + 8]}, // A8 SBU1, B8 SBU2
|
|
{usb_c_host_sidea_pins[12 + 8], usb_c_device_sideb_pins[8]}, // B8 SBU2, A8 SBU1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__c_device_sidea__ff_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sideb_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
{usb_c_host_sideb_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) they are not directly connected, but through Ra connected to ground on both sides
|
|
{usb_c_host_sideb_pins[6], usb_c_device_sidea_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sideb_pins[7], usb_c_device_sidea_pins[7]}, // A7 D-1, A7 D-1
|
|
{usb_c_host_sideb_pins[2], usb_c_device_sidea_pins[12 + 11]}, // A2 TX+1, B11 RX+1
|
|
{usb_c_host_sideb_pins[3], usb_c_device_sidea_pins[12 + 10]}, // A3 TX-1, B10 RX-1
|
|
{usb_c_host_sideb_pins[12 + 11], usb_c_device_sidea_pins[2]}, // B11 RX+1, A2 TX+1
|
|
{usb_c_host_sideb_pins[12 + 10], usb_c_device_sidea_pins[3]}, // B10 RX-1, A3 TX-1
|
|
{usb_c_host_sideb_pins[12 + 2], usb_c_device_sidea_pins[11]}, // B2 TX+2, Q11 RX+2
|
|
{usb_c_host_sideb_pins[12 + 3], usb_c_device_sidea_pins[10]}, // B3 TX-2, A10 RX-2
|
|
{usb_c_host_sideb_pins[11], usb_c_device_sidea_pins[12 + 2]}, // A11 RX+2, B2 TX+2
|
|
{usb_c_host_sideb_pins[10], usb_c_device_sidea_pins[12 + 3]}, // A10 RX-2, B3 TX-2
|
|
{usb_c_host_sideb_pins[8], usb_c_device_sidea_pins[12 + 8]}, // A8 SBU1, B8 SBU2
|
|
{usb_c_host_sideb_pins[12 + 8], usb_c_device_sidea_pins[8]}, // B8 SBU2, A8 SBU1
|
|
};
|
|
|
|
static const uint8_t usb__c_host_sideb__c_device_sideb__ff_pins[][2] = {
|
|
// C host side internal connections
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C device side internal connections
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
// C-C connections, GND and VBUS
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND
|
|
{usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND
|
|
{usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS
|
|
{usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS
|
|
// C-C data connections
|
|
{usb_c_host_sideb_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC)
|
|
{usb_c_host_sideb_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) they are not directly connected, but through Ra connected to ground on both sides
|
|
{usb_c_host_sideb_pins[6], usb_c_device_sideb_pins[6]}, // A6 D+1, A6 D+1
|
|
{usb_c_host_sideb_pins[7], usb_c_device_sideb_pins[7]}, // A7 D-1, A7 D-1
|
|
{usb_c_host_sideb_pins[2], usb_c_device_sideb_pins[12 + 11]}, // A2 TX+1, B11 RX+1
|
|
{usb_c_host_sideb_pins[3], usb_c_device_sideb_pins[12 + 10]}, // A3 TX-1, B10 RX-1
|
|
{usb_c_host_sideb_pins[12 + 11], usb_c_device_sideb_pins[2]}, // B11 RX+1, A2 TX+1
|
|
{usb_c_host_sideb_pins[12 + 10], usb_c_device_sideb_pins[3]}, // B10 RX-1, A3 TX-1
|
|
{usb_c_host_sideb_pins[12 + 2], usb_c_device_sideb_pins[11]}, // B2 TX+2, Q11 RX+2
|
|
{usb_c_host_sideb_pins[12 + 3], usb_c_device_sideb_pins[10]}, // B3 TX-2, A10 RX-2
|
|
{usb_c_host_sideb_pins[11], usb_c_device_sideb_pins[12 + 2]}, // A11 RX+2, B2 TX+2
|
|
{usb_c_host_sideb_pins[10], usb_c_device_sideb_pins[12 + 3]}, // A10 RX-2, B3 TX-2
|
|
{usb_c_host_sideb_pins[8], usb_c_device_sideb_pins[12 + 8]}, // A8 SBU1, B8 SBU2
|
|
{usb_c_host_sideb_pins[12 + 8], usb_c_device_sideb_pins[8]}, // B8 SBU2, A8 SBU1
|
|
};
|
|
|
|
const struct usb_cable_t usb_cables[] = {
|
|
// A-A
|
|
[USB_CABLE_AA0] = {
|
|
.name = "A-A power only",
|
|
.shortname = NULL,
|
|
.variant = NULL,
|
|
.connectors_nb = LENGTH(usb_a_a_connectors),
|
|
.connectors = usb_a_a_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_aa0_pins),
|
|
.mandatory_pairs = usb_aa0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AA2] = {
|
|
.name = "A-A USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = NULL,
|
|
.connectors_nb = LENGTH(usb_a_a_connectors),
|
|
.connectors = usb_a_a_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_aa2_pins),
|
|
.mandatory_pairs = usb_aa2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AA3] = {
|
|
.name = "A-A USB 3.x",
|
|
.shortname = NULL,
|
|
.variant = NULL,
|
|
.connectors_nb = LENGTH(usb_a_a_connectors),
|
|
.connectors = usb_a_a_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_aa3_pins),
|
|
.mandatory_pairs = usb_aa3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A (host) - B
|
|
[USB_CABLE_AB0_HOST] = {
|
|
.name = "A-B power only",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_host_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__b__ab0_pins),
|
|
.mandatory_pairs = usb__a_host__b__ab0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_ABBC_HOST] = {
|
|
.name = "A-B battery charger (1.5A)",
|
|
.shortname = "A-B BC 1.5A",
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_host_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__b__abbc_pins),
|
|
.mandatory_pairs = usb__a_host__b__abbc_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AB2_HOST] = {
|
|
.name = "A-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_host_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__b__ab2_pins),
|
|
.mandatory_pairs = usb__a_host__b__ab2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AB3_HOST] = {
|
|
.name = "A-B USB 3.x",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_host_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__b__ab3_pins),
|
|
.mandatory_pairs = usb__a_host__b__ab3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A (device) - B
|
|
[USB_CABLE_AB0_DEVICE] = {
|
|
.name = "A-B power only",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_device_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__b__ab0_pins),
|
|
.mandatory_pairs = usb__a_device__b__ab0_pins,
|
|
.optional_pairs_nb = LENGTH(usb__a_device__b__ab0_opts),
|
|
.optional_pairs = usb__a_device__b__ab0_opts,
|
|
},
|
|
[USB_CABLE_ABBC_DEVICE] = {
|
|
.name = "A-B battery charger (1.5A)",
|
|
.shortname = "A-B BC 1.5A",
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_b_connectors),
|
|
.connectors = usb_a_device_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__b__abbc_pins),
|
|
.mandatory_pairs = usb__a_device__b__abbc_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AB2_DEVICE] = {
|
|
.name = "A-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_device_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__b__ab2_pins),
|
|
.mandatory_pairs = usb__a_device__b__ab2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AB3_DEVICE] = {
|
|
.name = "A-B USB 3.x",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_b_connectors),
|
|
.connectors = usb_a_device_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__b__ab3_pins),
|
|
.mandatory_pairs = usb__a_device__b__ab3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A + A - B
|
|
[USB_CABLE_AAB2_HOST] = {
|
|
.name = "A+A-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_a_b_connectors),
|
|
.connectors = usb_a_a_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_a_host_a_device_b_aab2_pins),
|
|
.mandatory_pairs = usb_a_host_a_device_b_aab2_pins,
|
|
},
|
|
[USB_CABLE_AAB2_DEVICE] = {
|
|
.name = "A+A-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_a_b_connectors),
|
|
.connectors = usb_a_a_b_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_a_device_a_host_b_aab2_pins),
|
|
.mandatory_pairs = usb_a_device_a_host_b_aab2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A (host) - mini-B
|
|
[USB_CABLE_AMB0_HOST] = {
|
|
.name = "A-miniB power only",
|
|
.shortname = "A-miniB power",
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_minib_connectors),
|
|
.connectors = usb_a_host_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__minib__amb0_pins),
|
|
.mandatory_pairs = usb__a_host__minib__amb0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AMBBC_HOST] = {
|
|
.name = "A-miniB battery charger (1.5A)",
|
|
.shortname = "A-mB BC 1.5A",
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_minib_connectors),
|
|
.connectors = usb_a_host_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__minib__ambbc_pins),
|
|
.mandatory_pairs = usb__a_host__minib__ambbc_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AMB2_HOST] = {
|
|
.name = "A-miniB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_minib_connectors),
|
|
.connectors = usb_a_host_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__minib__amb2_pins),
|
|
.mandatory_pairs = usb__a_host__minib__amb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A (device) - mini-B
|
|
[USB_CABLE_AMB0_DEVICE] = {
|
|
.name = "A-miniB power only",
|
|
.shortname = "A-miniB power",
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_minib_connectors),
|
|
.connectors = usb_a_device_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__minib__amb0_pins),
|
|
.mandatory_pairs = usb__a_device__minib__amb0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AMBBC_DEVICE] = {
|
|
.name = "A-miniB battery charger (1.5A)",
|
|
.shortname = "A-mB BC 1.5A",
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_minib_connectors),
|
|
.connectors = usb_a_device_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__minib__ambbc_pins),
|
|
.mandatory_pairs = usb__a_device__minib__ambbc_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AMB2_DEVICE] = {
|
|
.name = "A-miniB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_minib_connectors),
|
|
.connectors = usb_a_device_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__minib__amb2_pins),
|
|
.mandatory_pairs = usb__a_device__minib__amb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A + A - mini-B
|
|
[USB_CABLE_AAMB2_HOST] = {
|
|
.name = "A+A-miniB USB 2.0",
|
|
.shortname = "A+A-miniB 2.0",
|
|
.variant = "data on A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_a_minib_connectors),
|
|
.connectors = usb_a_a_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_a_host_a_device_minib_aamb2_pins),
|
|
.mandatory_pairs = usb_a_host_a_device_minib_aamb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AAMB2_DEVICE] = {
|
|
.name = "A+A-miniB USB 2.0",
|
|
.shortname = "A+A-miniB 2.0",
|
|
.variant = "data on A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_a_minib_connectors),
|
|
.connectors = usb_a_a_minib_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb_a_device_a_host_minib_aamb2_pins),
|
|
.mandatory_pairs = usb_a_device_a_host_minib_aamb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A (host) - micro-B
|
|
[USB_CABLE_AUB0_HOST] = {
|
|
.name = "A-microB power only",
|
|
.shortname = "A-microB power",
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_microb_connectors),
|
|
.connectors = usb_a_host_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__microb__aub0_pins),
|
|
.mandatory_pairs = usb__a_host__microb__aub0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AUBBC_HOST] = {
|
|
.name = "A-microB battery charger (1.5A)",
|
|
.shortname = "A-uB BC 1.5A",
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_microb_connectors),
|
|
.connectors = usb_a_host_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__microb__aubbc_pins),
|
|
.mandatory_pairs = usb__a_host__microb__aubbc_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AUB2_HOST] = {
|
|
.name = "A-microB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_microb_connectors),
|
|
.connectors = usb_a_host_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__microb__aub2_pins),
|
|
.mandatory_pairs = usb__a_host__microb__aub2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AUB3_HOST] = {
|
|
.name = "A-microB USB 3.x",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle",
|
|
.connectors_nb = LENGTH(usb_a_host_microb_connectors),
|
|
.connectors = usb_a_host_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__microb__aub3_pins),
|
|
.mandatory_pairs = usb__a_host__microb__aub3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A (device) - micro-B
|
|
[USB_CABLE_AUB0_DEVICE] = {
|
|
.name = "A-microB power only",
|
|
.shortname = "A-microB power",
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_microb_connectors),
|
|
.connectors = usb_a_device_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__microb__aub0_pins),
|
|
.mandatory_pairs = usb__a_device__microb__aub0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AUBBC_DEVICE] = {
|
|
.name = "A-microB battery charger",
|
|
.shortname = "A-uB batt chrg",
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_microb_connectors),
|
|
.connectors = usb_a_device_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__microb__aubbc_pins),
|
|
.mandatory_pairs = usb__a_device__microb__aubbc_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AUB2_DEVICE] = {
|
|
.name = "A-microB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_microb_connectors),
|
|
.connectors = usb_a_device_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__microb__aub2_pins),
|
|
.mandatory_pairs = usb__a_device__microb__aub2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AUB3_DEVICE] = {
|
|
.name = "A-microB USB 3.x",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle",
|
|
.connectors_nb = LENGTH(usb_a_device_microb_connectors),
|
|
.connectors = usb_a_device_microb_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__microb__aub3_pins),
|
|
.mandatory_pairs = usb__a_device__microb__aub3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C
|
|
[USB_CABLE_CPINSHUNT_HOST] = {
|
|
.name = "C pins shunt",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle",
|
|
.connectors_nb = LENGTH(usb_c_host_connectors),
|
|
.connectors = usb_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host__c_host__cpinshunt_pins),
|
|
.mandatory_pairs = usb__c_host__c_host__cpinshunt_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CPINSHUNT_DEVICE] = {
|
|
.name = "C pins shunt",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle",
|
|
.connectors_nb = LENGTH(usb_c_device_connectors),
|
|
.connectors = usb_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device__c_device__cpinshunt_pins),
|
|
.mandatory_pairs = usb__c_device__c_device__cpinshunt_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CSIGNALSHUNT_HOST] = {
|
|
.name = "C signal shunt",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle",
|
|
.connectors_nb = LENGTH(usb_c_host_connectors),
|
|
.connectors = usb_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host__c_host__csignalshunt_pins),
|
|
.mandatory_pairs = usb__c_host__c_host__csignalshunt_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CSIGNALSHUNT_DEVICE] = {
|
|
.name = "C signal shunt",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle",
|
|
.connectors_nb = LENGTH(usb_c_device_connectors),
|
|
.connectors = usb_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device__c_device__csignalshunt_pins),
|
|
.mandatory_pairs = usb__c_device__c_device__csignalshunt_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A - C power only
|
|
[USB_CABLE_AC0_A_HOST_CA_HOST] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_host_connectors),
|
|
.connectors = usb_a_host_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_host_sidea__ac0_pins),
|
|
.mandatory_pairs = usb__a_host__c_host_sidea__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_HOST_CB_HOST] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_host_connectors),
|
|
.connectors = usb_a_host_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_host_sideb__ac0_pins),
|
|
.mandatory_pairs = usb__a_host__c_host_sideb__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_HOST_CA_DEVICE] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_device_connectors),
|
|
.connectors = usb_a_host_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_device_sidea__ac0_pins),
|
|
.mandatory_pairs = usb__a_host__c_device_sidea__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_HOST_CB_DEVICE] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_device_connectors),
|
|
.connectors = usb_a_host_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_device_sideb__ac0_pins),
|
|
.mandatory_pairs = usb__a_host__c_device_sideb__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_DEVICE_CA_HOST] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_host_connectors),
|
|
.connectors = usb_a_device_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_host_sidea__ac0_pins),
|
|
.mandatory_pairs = usb__a_device__c_host_sidea__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_DEVICE_CB_HOST] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_host_connectors),
|
|
.connectors = usb_a_device_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_host_sideb__ac0_pins),
|
|
.mandatory_pairs = usb__a_device__c_host_sideb__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_DEVICE_CA_DEVICE] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_device_connectors),
|
|
.connectors = usb_a_device_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac0_pins),
|
|
.mandatory_pairs = usb__a_device__c_device_sidea__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC0_A_DEVICE_CB_DEVICE] = {
|
|
.name = "A-C power only",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_device_connectors),
|
|
.connectors = usb_a_device_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_device_sideb__ac0_pins),
|
|
.mandatory_pairs = usb__a_device__c_device_sideb__ac0_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A - C USB 2.0
|
|
[USB_CABLE_AC2_A_HOST_CA_HOST] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_host_connectors),
|
|
.connectors = usb_a_host_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_host_sidea__ac2_pins),
|
|
.mandatory_pairs = usb__a_host__c_host_sidea__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_HOST_CB_HOST] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_host_connectors),
|
|
.connectors = usb_a_host_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_host_sideb__ac2_pins),
|
|
.mandatory_pairs = usb__a_host__c_host_sideb__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_HOST_CA_DEVICE] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_device_connectors),
|
|
.connectors = usb_a_host_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_device_sidea__ac2_pins),
|
|
.mandatory_pairs = usb__a_host__c_device_sidea__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_HOST_CB_DEVICE] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A host receptacle, C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_device_connectors),
|
|
.connectors = usb_a_host_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_device_sideb__ac2_pins),
|
|
.mandatory_pairs = usb__a_host__c_device_sideb__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_DEVICE_CA_HOST] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_host_connectors),
|
|
.connectors = usb_a_device_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_host_sidea__ac2_pins),
|
|
.mandatory_pairs = usb__a_device__c_host_sidea__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_DEVICE_CB_HOST] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_host_connectors),
|
|
.connectors = usb_a_device_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_host_sideb__ac2_pins),
|
|
.mandatory_pairs = usb__a_device__c_host_sideb__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_DEVICE_CA_DEVICE] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_device_connectors),
|
|
.connectors = usb_a_device_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac2_pins),
|
|
.mandatory_pairs = usb__a_device__c_device_sidea__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC2_A_DEVICE_CB_DEVICE] = {
|
|
.name = "A-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "A device receptacle, C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_device_connectors),
|
|
.connectors = usb_a_device_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_device_sideb__ac2_pins),
|
|
.mandatory_pairs = usb__a_device__c_device_sideb__ac2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// A-C USB 3.1 Gen 2
|
|
[USB_CABLE_AC3_A_HOST_CA_HOST] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A host receptacle, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_host_connectors),
|
|
.connectors = usb_a_host_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_host_sidea__ac3_pins),
|
|
.mandatory_pairs = usb__a_host__c_host_sidea__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_HOST_CB_HOST] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A host receptacle, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_host_connectors),
|
|
.connectors = usb_a_host_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_host_sideb__ac3_pins),
|
|
.mandatory_pairs = usb__a_host__c_host_sideb__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_HOST_CA_DEVICE] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A host receptacle, C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_device_connectors),
|
|
.connectors = usb_a_host_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_device_sidea__ac3_pins),
|
|
.mandatory_pairs = usb__a_host__c_device_sidea__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_HOST_CB_DEVICE] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A host receptacle, C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_host_c_device_connectors),
|
|
.connectors = usb_a_host_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_host__c_device_sideb__ac3_pins),
|
|
.mandatory_pairs = usb__a_host__c_device_sideb__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_DEVICE_CA_HOST] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A device receptacle, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_host_connectors),
|
|
.connectors = usb_a_device_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_host_sidea__ac3_pins),
|
|
.mandatory_pairs = usb__a_device__c_host_sidea__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_DEVICE_CB_HOST] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A device receptacle, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_host_connectors),
|
|
.connectors = usb_a_device_c_host_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_host_sideb__ac3_pins),
|
|
.mandatory_pairs = usb__a_device__c_host_sideb__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_DEVICE_CA_DEVICE] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A device receptacle, C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_device_connectors),
|
|
.connectors = usb_a_device_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac3_pins),
|
|
.mandatory_pairs = usb__a_device__c_device_sidea__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_AC3_A_DEVICE_CB_DEVICE] = {
|
|
.name = "A-C USB 3.1 Gen 2",
|
|
.shortname = "A-C 3.1 Gen 2",
|
|
.variant = "A device receptacle, C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_a_device_c_device_connectors),
|
|
.connectors = usb_a_device_c_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac3_pins),
|
|
.mandatory_pairs = usb__a_device__c_device_sideb__ac3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C - B USB 2.0
|
|
[USB_CABLE_CB2_CA_HOST] = {
|
|
.name = "C-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_b_device_connectors),
|
|
.connectors = usb_c_host_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__b_device__cb2_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__b_device__cb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CB2_CB_HOST] = {
|
|
.name = "C-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_b_device_connectors),
|
|
.connectors = usb_c_host_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__b_device__cb2_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__b_device__cb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CB2_CA_DEVICE] = {
|
|
.name = "C-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_b_device_connectors),
|
|
.connectors = usb_c_device_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sidea__b_device__cb2_pins),
|
|
.mandatory_pairs = usb__c_device_sidea__b_device__cb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CB2_CB_DEVICE ] = {
|
|
.name = "C-B USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_b_device_connectors),
|
|
.connectors = usb_c_device_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sideb__b_device__cb2_pins),
|
|
.mandatory_pairs = usb__c_device_sideb__b_device__cb2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C - B USB 3.1 Gen 2
|
|
[USB_CABLE_CB3_CA_HOST] = {
|
|
.name = "C-B USB 3.1 Gen 2",
|
|
.shortname = "C-B 3.1 Gen 2",
|
|
.variant = "C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_b_device_connectors),
|
|
.connectors = usb_c_host_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__b_device__cb3_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__b_device__cb3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CB3_CB_HOST] = {
|
|
.name = "C-B USB 3.1 Gen 2",
|
|
.shortname = "C-B 3.1 Gen 2",
|
|
.variant = "C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_b_device_connectors),
|
|
.connectors = usb_c_host_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__b_device__cb3_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__b_device__cb3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CB3_CA_DEVICE] = {
|
|
.name = "C-B USB 3.1 Gen 2",
|
|
.shortname = "C-B 3.1 Gen 2",
|
|
.variant = "C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_b_device_connectors),
|
|
.connectors = usb_c_device_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sidea__b_device__cb3_pins),
|
|
.mandatory_pairs = usb__c_device_sidea__b_device__cb3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CB3_CB_DEVICE] = {
|
|
.name = "C-B USB 3.1 Gen 2",
|
|
.shortname = "C-B 3.1 Gen 2",
|
|
.variant = "C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_b_device_connectors),
|
|
.connectors = usb_c_device_b_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sideb__b_device__cb3_pins),
|
|
.mandatory_pairs = usb__c_device_sideb__b_device__cb3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C - mini-B USB 2.0
|
|
[USB_CABLE_CMB2_CA_HOST] = {
|
|
.name = "C-miniB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_minib_device_connectors),
|
|
.connectors = usb_c_host_minib_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__minib_device__cminib2_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__minib_device__cminib2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CMB2_CB_HOST] = {
|
|
.name = "C-miniB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_minib_device_connectors),
|
|
.connectors = usb_c_host_minib_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__minib_device__cminib2_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__minib_device__cminib2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CMB2_CA_DEVICE] = {
|
|
.name = "C-miniB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_minib_device_connectors),
|
|
.connectors = usb_c_device_minib_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sidea__minib_device__cminib2_pins),
|
|
.mandatory_pairs = usb__c_device_sidea__minib_device__cminib2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CMB2_CB_DEVICE] = {
|
|
.name = "C-miniB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_minib_device_connectors),
|
|
.connectors = usb_c_device_minib_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sideb__minib_device__cminib2_pins),
|
|
.mandatory_pairs = usb__c_device_sideb__minib_device__cminib2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C - micro-B USB 2.0
|
|
[USB_CABLE_CUB2_CA_HOST] = {
|
|
.name = "C-microB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_microb_device_connectors),
|
|
.connectors = usb_c_host_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__microb_device__cmicrob2_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__microb_device__cmicrob2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CUB2_CB_HOST] = {
|
|
.name = "C-microB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_microb_device_connectors),
|
|
.connectors = usb_c_host_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__microb_device__cmicrob2_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__microb_device__cmicrob2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CUB2_CA_DEVICE] = {
|
|
.name = "C-microB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_microb_device_connectors),
|
|
.connectors = usb_c_device_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sidea__microb_device__cmicrob2_pins),
|
|
.mandatory_pairs = usb__c_device_sidea__microb_device__cmicrob2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CUB2_CB_DEVICE] = {
|
|
.name = "C-microB USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_microb_device_connectors),
|
|
.connectors = usb_c_device_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sideb__microb_device__cmicrob2_pins),
|
|
.mandatory_pairs = usb__c_device_sideb__microb_device__cmicrob2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C - micro-B USB 3.1 Gen 2
|
|
[USB_CABLE_CUB3_CA_HOST] = {
|
|
.name = "C-microB USB 3.1 Gen 2",
|
|
.shortname = "C-uB 3.1 Gen 2",
|
|
.variant = "C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_microb_device_connectors),
|
|
.connectors = usb_c_host_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__microb_device__cmicrob3_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__microb_device__cmicrob3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CUB3_CB_HOST] = {
|
|
.name = "C-microB USB 3.1 Gen 2",
|
|
.shortname = "C-uB 3.1 Gen 2",
|
|
.variant = "C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_host_microb_device_connectors),
|
|
.connectors = usb_c_host_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__microb_device__cmicrob3_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__microb_device__cmicrob3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CUB3_CA_DEVICE] = {
|
|
.name = "C-microB USB 3.1 Gen 2",
|
|
.shortname = "C-uB 3.1 Gen 2",
|
|
.variant = "C device receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_microb_device_connectors),
|
|
.connectors = usb_c_device_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sidea__microb_device__cmicrob3_pins),
|
|
.mandatory_pairs = usb__c_device_sidea__microb_device__cmicrob3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CUB3_CB_DEVICE] = {
|
|
.name = "C-microB USB 3.1 Gen 2",
|
|
.shortname = "C-uB 3.1 Gen 2",
|
|
.variant = "C device receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_device_microb_device_connectors),
|
|
.connectors = usb_c_device_microb_device_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_device_sideb__microb_device__cmicrob3_pins),
|
|
.mandatory_pairs = usb__c_device_sideb__microb_device__cmicrob3_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C-C
|
|
[USB_CABLE_CC2_CA_HOST_CA_DEVICE] = {
|
|
.name = "C-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - A orientation, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sidea__cc2_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__c_device_sidea__cc2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CC2_CA_HOST_CB_DEVICE] = {
|
|
.name = "C-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - A orientation, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sideb__cc2_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__c_device_sideb__cc2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CC2_CB_HOST_CA_DEVICE] = {
|
|
.name = "C-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - B orientation, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sidea__cc2_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__c_device_sidea__cc2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CC2_CB_HOST_CB_DEVICE] = {
|
|
.name = "C-C USB 2.0",
|
|
.shortname = NULL,
|
|
.variant = "C device receptacle - B orientation, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sideb__cc2_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__c_device_sideb__cc2_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
// C-C
|
|
[USB_CABLE_CCFF_CA_HOST_CA_DEVICE] = {
|
|
.name = "C-C Full-Featured",
|
|
.shortname = "C-C Full-Feat.",
|
|
.variant = "C device receptacle - A orientation, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sidea__ff_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__c_device_sidea__ff_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CCFF_CA_HOST_CB_DEVICE] = {
|
|
.name = "C-C Full-Featured",
|
|
.shortname = "C-C Full-Feat.",
|
|
.variant = "C device receptacle - A orientation, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sideb__ff_pins),
|
|
.mandatory_pairs = usb__c_host_sidea__c_device_sideb__ff_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CCFF_CB_HOST_CA_DEVICE] = {
|
|
.name = "C-C Full-Featured",
|
|
.shortname = "C-C Full-Feat.",
|
|
.variant = "C device receptacle - B orientation, C host receptacle - A orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sidea__ff_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__c_device_sidea__ff_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
[USB_CABLE_CCFF_CB_HOST_CB_DEVICE] = {
|
|
.name = "C-C Full-Featured",
|
|
.shortname = "C-C Full-Feat.",
|
|
.variant = "C device receptacle - B orientation, C host receptacle - B orientation",
|
|
.connectors_nb = LENGTH(usb_c_c_connectors),
|
|
.connectors = usb_c_c_connectors,
|
|
.mandatory_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sideb__ff_pins),
|
|
.mandatory_pairs = usb__c_host_sideb__c_device_sideb__ff_pins,
|
|
.optional_pairs_nb = 0,
|
|
.optional_pairs = NULL,
|
|
},
|
|
};
|
|
|
|
void usb_cables_pins_float(void)
|
|
{
|
|
for (uint8_t pin = 0; pin < LENGTH(usb_pins); pin++) { // go through every pin
|
|
const struct usb_pin_t* usb_pin = &usb_pins[pin]; // get pin
|
|
gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin); // put pin to floating
|
|
}
|
|
}
|
|
|
|
void usb_cables_connector_float(const struct usb_connector_t* connector)
|
|
{
|
|
// input argument check
|
|
if (NULL == connector) {
|
|
return;
|
|
}
|
|
|
|
for (uint8_t pin = 0; pin < connector->pins_nb; pin++) { // go through every pin
|
|
const struct usb_pin_t* usb_pin = &usb_pins[connector->pins[pin]]; // get pin
|
|
gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin); // put pin to floating
|
|
}
|
|
}
|
|
|
|
void usb_cables_connectors_float(const struct usb_connector_t** connectors, uint8_t connectors_nb)
|
|
{
|
|
if (NULL == connectors || 0 == connectors_nb) {
|
|
return;
|
|
}
|
|
|
|
for (uint8_t connector = 0; connector < connectors_nb; connector++) { // go through every connector
|
|
usb_cables_connector_float(connectors[connector]);
|
|
}
|
|
}
|
|
|
|
const struct usb_connector_t* usb_cables_get_connector(uint8_t pin)
|
|
{
|
|
if (pin >= LENGTH(usb_pins)) { // verify input parameter
|
|
return NULL;
|
|
}
|
|
for (uint8_t connector_i = 0; connector_i < LENGTH(usb_connectors); connector_i++) { // go though every connector
|
|
const struct usb_connector_t* connector = usb_connectors[connector_i]; // get connector
|
|
if (NULL == connector) { // verify connector
|
|
continue;
|
|
}
|
|
for (uint8_t pin_i = 0; pin_i < connector->pins_nb; pin_i++) { // check every pin of connector
|
|
if (connector->pins[pin_i] == pin) { // the connector pin against provided pin
|
|
return connector;
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
bool usb_cables_test_pins(const struct usb_pin_t* pin1, const struct usb_pin_t* pin2, struct usb_connection_t* connection)
|
|
{
|
|
cm3_assert(pin1);
|
|
cm3_assert(pin2);
|
|
|
|
if (pin1->port == pin2->port && pin1->pin == pin2->pin) { // it's the same pin
|
|
if (connection) {
|
|
connection->tx_pull_float = true;
|
|
connection->tx_drive_float = true;
|
|
connection->tx_drive_pull = true;
|
|
connection->rx_pull_float = true;
|
|
connection->rx_drive_float = true;
|
|
connection->rx_drive_pull = true;
|
|
}
|
|
return true; // all connections will work
|
|
}
|
|
|
|
/** how the connection is tested */
|
|
enum connection_test_e {
|
|
/** the output side is driven using pull/push, the input is pulled up/down
|
|
* @note this will detect direct connections, when nothing is could be powered
|
|
* @note there is no false positive, just false negatives when resistors are in line
|
|
*/
|
|
CONNECTION_TEST_DRIVE_PULL,
|
|
/** the output side is driven using pull/push, the input is floating
|
|
* @note this can also detect connections with inline resistors, since no pull-up/down will form a voltage divider
|
|
* @note prone to noise since one side is floating
|
|
*/
|
|
CONNECTION_TEST_DRIVE_FLOAT,
|
|
/** the output side is driven using pull up/down, the input is floating
|
|
* @note this is similar to CONNECTION_TEST_DRIVE_FLOAT method, but meant for ground pins, which should not be driven.
|
|
* @note since only a weak pull-up/down resistor is used, inline resistor will lead to voltage divider and possible false negatives
|
|
*/
|
|
CONNECTION_TEST_PULL_FLOAT,
|
|
/** number of connections test */
|
|
CONNECTION_TEST_COUNT,
|
|
};
|
|
|
|
// the connection details
|
|
struct usb_connection_t _connection = {
|
|
.tx_pull_float = false,
|
|
.tx_drive_float = false,
|
|
.tx_drive_pull = false,
|
|
.rx_pull_float = false,
|
|
.rx_drive_float = false,
|
|
.rx_drive_pull = false,
|
|
};
|
|
|
|
for (enum connection_test_e connection_test = 0; connection_test < CONNECTION_TEST_COUNT; connection_test++) { // test all connection types (from most to least accurate)
|
|
for (uint8_t direction = 0; direction < 2; direction++) { // test both directions
|
|
const struct usb_pin_t* pin_from = (0 == direction ? pin1 : pin2);
|
|
const struct usb_pin_t* pin_to = (0 == direction ? pin2 : pin1);
|
|
const uint32_t from_port = pin_from->port;
|
|
const uint16_t from_pin = pin_from->pin;
|
|
const uint32_t to_port = pin_to->port;
|
|
const uint16_t to_pin = pin_to->pin;
|
|
// don't drive a ground or shield pin high (shield might be connected to ground)
|
|
if ((USB_PIN_TYPE_GROUND == pin_from->type || USB_PIN_TYPE_SHIELD == pin_from->type) && \
|
|
(CONNECTION_TEST_DRIVE_PULL == connection_test || CONNECTION_TEST_DRIVE_FLOAT == connection_test)) {
|
|
continue;
|
|
}
|
|
|
|
// set pin mode for sending pin
|
|
switch (connection_test) {
|
|
case CONNECTION_TEST_DRIVE_PULL:
|
|
gpio_set_mode(from_port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, from_pin);
|
|
break;
|
|
case CONNECTION_TEST_DRIVE_FLOAT:
|
|
if (0 == direction && _connection.tx_drive_pull) { // skip test to save time since we already found a connection
|
|
continue;
|
|
} else if (direction && _connection.rx_drive_pull) { // skip test to save time since we already found a connection
|
|
continue;
|
|
}
|
|
gpio_set_mode(from_port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, from_pin);
|
|
break;
|
|
case CONNECTION_TEST_PULL_FLOAT:
|
|
if (0 == direction && (_connection.tx_drive_pull || _connection.tx_drive_float)) { // skip test to save time since we already found a connection
|
|
continue;
|
|
} else if (direction && (_connection.rx_drive_pull || _connection.rx_drive_float)) { // skip test to save time since we already found a connection
|
|
continue;
|
|
}
|
|
gpio_set_mode(from_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, from_pin);
|
|
break;
|
|
default:
|
|
continue; // unknown test
|
|
break;
|
|
}
|
|
// test pattern
|
|
// note: the pattern length, and pauses between toggles are purely found out through testing
|
|
// cross talk, noise, and capacitance are a pain to correctly get rid off
|
|
// the result is not perfect, but often checking both directions eliminates false positives
|
|
bool connected = true;
|
|
for (uint8_t pattern = 0; pattern < 4 && connected; pattern++) { // the pattern is just a sequence on high/low
|
|
// set alternatively high and low on one pin, and check level on the other pin
|
|
gpio_set_mode(to_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, to_pin); // first pull to remove capacitance
|
|
if (0 == pattern % 2) { // test if high level is detected
|
|
gpio_clear(to_port, to_pin); // pull down
|
|
gpio_set(from_port, from_pin); // set high
|
|
} else { // test if low level is detected
|
|
gpio_set(to_port, to_pin); // pull up
|
|
gpio_clear(from_port, from_pin); // set low
|
|
}
|
|
if (USB_PIN_TYPE_POWER == pin_from->type || USB_PIN_TYPE_POWER == pin_from->type) {
|
|
sleep_us(1200); // wait to cancel capacitance (10 nF, as used on VBUS in C plug)
|
|
} else {
|
|
sleep_us(10); // wait to settle
|
|
}
|
|
switch (connection_test) { // get to float (capacitance should be canceled)
|
|
case CONNECTION_TEST_DRIVE_FLOAT:
|
|
case CONNECTION_TEST_PULL_FLOAT:
|
|
gpio_set_mode(to_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, to_pin);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
sleep_us(10); // wait for signal to settle
|
|
if ((0 == pattern % 2) && (0 == gpio_get(to_port, to_pin))) { // high level not detected
|
|
connected = false;
|
|
} else if ((pattern % 2) && gpio_get(to_port, to_pin)) { // low level not detected
|
|
connected = false;
|
|
}
|
|
}
|
|
// test connection result
|
|
if (0 == direction) {
|
|
switch (connection_test) {
|
|
case CONNECTION_TEST_PULL_FLOAT:
|
|
_connection.tx_pull_float = connected;
|
|
break;
|
|
case CONNECTION_TEST_DRIVE_FLOAT:
|
|
_connection.tx_drive_float = connected;
|
|
break;
|
|
case CONNECTION_TEST_DRIVE_PULL:
|
|
_connection.tx_drive_pull = connected;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else {
|
|
switch (connection_test) {
|
|
case CONNECTION_TEST_PULL_FLOAT:
|
|
_connection.rx_pull_float = connected;
|
|
break;
|
|
case CONNECTION_TEST_DRIVE_FLOAT:
|
|
_connection.rx_drive_float = connected;
|
|
break;
|
|
case CONNECTION_TEST_DRIVE_PULL:
|
|
_connection.rx_drive_pull = connected;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
} // direction
|
|
} // connection_test
|
|
|
|
// put back to floating
|
|
gpio_set_mode(pin1->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, pin1->pin);
|
|
gpio_set_mode(pin2->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, pin2->pin);
|
|
|
|
// summarize connection
|
|
bool connected = true;
|
|
if (USB_PIN_TYPE_GROUND == pin1->type || USB_PIN_TYPE_SHIELD == pin1->type) {
|
|
connected &= _connection.tx_pull_float;
|
|
} else { // not a ground pin
|
|
connected &= _connection.tx_drive_float | _connection.tx_drive_pull;
|
|
}
|
|
if (USB_PIN_TYPE_GROUND == pin2->type || USB_PIN_TYPE_SHIELD == pin2->type) {
|
|
connected &= _connection.rx_pull_float;
|
|
} else { // not a ground pin
|
|
connected &= _connection.rx_drive_float | _connection.rx_drive_pull;
|
|
}
|
|
|
|
// return connection details
|
|
if (connection) {
|
|
memcpy(connection, &_connection, sizeof(struct usb_connection_t));
|
|
}
|
|
return connected;
|
|
}
|
|
|
|
bool usb_cables_test_ground(const struct usb_connector_t** connectors, uint8_t connectors_nb, bool* connected)
|
|
{
|
|
// verify input arguments
|
|
if (NULL == connectors || 0 == connectors_nb) {
|
|
return false;
|
|
}
|
|
|
|
// initialize output result
|
|
bool connection_found = false;
|
|
if (connected) {
|
|
for (uint8_t connector = 0; connector < connectors_nb; connector++) {
|
|
connected[connector] = false;
|
|
}
|
|
}
|
|
|
|
// pull up all ground pins
|
|
for (uint8_t connector = 0; connector < connectors_nb; connector++) {
|
|
for (uint8_t pin = 0; pin < connectors[connector]->pins_nb; pin++) {
|
|
const struct usb_pin_t* usb_pin = &usb_pins[connectors[connector]->pins[pin]]; // get pin
|
|
if (USB_PIN_TYPE_GROUND == usb_pin->type) {
|
|
gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, usb_pin->pin);
|
|
gpio_set(usb_pin->port, usb_pin->pin);
|
|
}
|
|
}
|
|
}
|
|
|
|
for (uint8_t connector_from = 0; connector_from < connectors_nb; connector_from++) { // test from every connector
|
|
if (connected && connected[connector_from]) { // we already found ground on this connector
|
|
continue;
|
|
}
|
|
for (uint8_t pin_from = 0; pin_from < connectors[connector_from]->pins_nb; pin_from++) { // test from every pin
|
|
if (connected && connected[connector_from]) { // we already found ground on this connector
|
|
break;
|
|
}
|
|
const struct usb_pin_t* usb_pin_from = &usb_pins[connectors[connector_from]->pins[pin_from]]; // get from pin
|
|
if (USB_PIN_TYPE_GROUND != usb_pin_from->type) { // only consider ground connections
|
|
continue;
|
|
}
|
|
// set pin low
|
|
gpio_set_mode(usb_pin_from->port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, usb_pin_from->pin);
|
|
gpio_clear(usb_pin_from->port, usb_pin_from->pin);
|
|
for (uint8_t connector_to = connector_from + 1; connector_to < connectors_nb; connector_to++) { // test every next connector
|
|
if (connected && connected[connector_to]) { // we already found a ground connection to this connector
|
|
continue;
|
|
}
|
|
for (uint8_t pin_to = 0; pin_to < connectors[connector_to]->pins_nb; pin_to++) { // test to every pin
|
|
if (connected && connected[connector_to]) { // we already found a ground connection to this connector
|
|
break;
|
|
}
|
|
const struct usb_pin_t* usb_pin_to = &usb_pins[connectors[connector_to]->pins[pin_to]]; // get to pin
|
|
if (USB_PIN_TYPE_GROUND != usb_pin_to->type) { // only consider ground connections
|
|
continue;
|
|
}
|
|
if (0 == gpio_get(usb_pin_to->port, usb_pin_to->pin)) { // we found a ground connection
|
|
if (connected) {
|
|
connected[connector_from] = true;
|
|
connected[connector_to] = true;
|
|
}
|
|
connection_found = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// put all ground pins back to float
|
|
for (uint8_t connector = 0; connector < connectors_nb; connector++) {
|
|
for (uint8_t pin = 0; pin < connectors[connector]->pins_nb; pin++) {
|
|
const struct usb_pin_t* usb_pin = &usb_pins[connectors[connector]->pins[pin]]; // get pin
|
|
if (USB_PIN_TYPE_GROUND == usb_pin->type) {
|
|
gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin);
|
|
}
|
|
}
|
|
}
|
|
|
|
return connection_found;
|
|
}
|
|
|
|
bool usb_cables_test_load(const struct usb_connector_t* connector)
|
|
{
|
|
// verify input arguments
|
|
if (NULL == connector) {
|
|
return false;
|
|
}
|
|
|
|
usb_cables_pins_float(); // ensure we start with all pins floating to not influence the check
|
|
|
|
bool loaded = false; // remember if we found a load
|
|
|
|
// pull power pin low (works better than pushing high and being strong enough to have a pull down pulled high)
|
|
for (uint8_t pin_power = 0; pin_power < connector->pins_nb && !loaded; pin_power++) {
|
|
const struct usb_pin_t* usb_power_pin = &usb_pins[connector->pins[pin_power]]; // get power pin
|
|
if (USB_PIN_TYPE_POWER != usb_power_pin->type) {
|
|
continue;
|
|
}
|
|
gpio_set_mode(usb_power_pin->port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, usb_power_pin->pin);
|
|
gpio_clear(usb_power_pin->port, usb_power_pin->pin);
|
|
for (uint8_t pin_ground = 0; pin_ground < connector->pins_nb && !loaded; pin_ground++) {
|
|
const struct usb_pin_t* usb_ground_pin = &usb_pins[connector->pins[pin_ground]]; // get ground pin
|
|
if (USB_PIN_TYPE_GROUND != usb_ground_pin->type) {
|
|
continue;
|
|
}
|
|
// pull up to avoid false positive
|
|
gpio_set_mode(usb_ground_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, usb_ground_pin->pin);
|
|
gpio_set(usb_ground_pin->port, usb_ground_pin->pin);
|
|
// check if it is pulled high by VBUS
|
|
sleep_us(100);
|
|
if (0 == gpio_get(usb_ground_pin->port, usb_ground_pin->pin)) {
|
|
loaded = true;
|
|
}
|
|
}
|
|
gpio_set_mode(usb_power_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_power_pin->pin); // put back to floating
|
|
}
|
|
|
|
return loaded;
|
|
}
|
|
|
|
bool usb_cables_test_cable(const struct usb_cable_t* cable, uint8_t* defined, uint8_t* optional, uint8_t* undefined, bool print)
|
|
{
|
|
if (NULL == cable) {
|
|
return false;
|
|
}
|
|
uint8_t _defined = 0, _optional = 0, _undefined = 0; // internal pair counting variables
|
|
|
|
usb_cables_connectors_float(cable->connectors, cable->connectors_nb); // ensure we start in a safe state
|
|
for (uint8_t connector_from = 0; connector_from < cable->connectors_nb; connector_from++) { // test from every connector
|
|
for (uint8_t pin_from = 0; pin_from < cable->connectors[connector_from]->pins_nb; pin_from++) { // test from every pin
|
|
for (uint8_t connector_to = connector_from; connector_to < cable->connectors_nb; connector_to++) { // test to every connector
|
|
for (uint8_t pin_to = 0; pin_to < cable->connectors[connector_to]->pins_nb; pin_to++) { // test to every pin (except itself)
|
|
if (connector_to == connector_from && pin_to <= pin_from) {
|
|
continue; // skip already tested internal connection
|
|
}
|
|
|
|
const struct usb_pin_t* usb_pin_from = &usb_pins[cable->connectors[connector_from]->pins[pin_from]]; // get from pin
|
|
const struct usb_pin_t* usb_pin_to = &usb_pins[cable->connectors[connector_to]->pins[pin_to]]; // get to pin
|
|
|
|
// don't check if power and ground pins are connected because loads lead to false positives
|
|
if ((USB_PIN_TYPE_GROUND == usb_pin_from->type || USB_PIN_TYPE_SHIELD == usb_pin_from->type) && USB_PIN_TYPE_POWER == usb_pin_to->type) {
|
|
continue;
|
|
}
|
|
if (USB_PIN_TYPE_POWER == usb_pin_from->type && (USB_PIN_TYPE_GROUND == usb_pin_to->type || USB_PIN_TYPE_SHIELD == usb_pin_to->type)) {
|
|
continue;
|
|
}
|
|
|
|
// figure out if this connection pair is defined as mandatory
|
|
bool pair_defined = false;
|
|
for (uint8_t pair = 0; pair < cable->mandatory_pairs_nb; pair++) {
|
|
if (cable->mandatory_pairs[pair][0] == cable->connectors[connector_from]->pins[pin_from] && cable->mandatory_pairs[pair][1] == cable->connectors[connector_to]->pins[pin_to]) {
|
|
pair_defined = true;
|
|
}
|
|
if (cable->mandatory_pairs[pair][1] == cable->connectors[connector_from]->pins[pin_from] && cable->mandatory_pairs[pair][0] == cable->connectors[connector_to]->pins[pin_to]) {
|
|
pair_defined = true;
|
|
}
|
|
}
|
|
|
|
// figure out if this connection pair is defined as optional
|
|
bool pair_optional = false;
|
|
if (!pair_defined) {
|
|
for (uint8_t pair = 0; pair < cable->optional_pairs_nb; pair++) {
|
|
if (cable->optional_pairs[pair][0] == cable->connectors[connector_from]->pins[pin_from] && cable->optional_pairs[pair][1] == cable->connectors[connector_to]->pins[pin_to]) {
|
|
pair_optional = true;
|
|
}
|
|
if (cable->optional_pairs[pair][1] == cable->connectors[connector_from]->pins[pin_from] && cable->optional_pairs[pair][0] == cable->connectors[connector_to]->pins[pin_to]) {
|
|
pair_optional = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
const bool connection = usb_cables_test_pins(usb_pin_from, usb_pin_to, NULL);
|
|
if (connection) {
|
|
if (pair_defined) {
|
|
_defined++;
|
|
} else if (pair_optional) {
|
|
_optional++;
|
|
} else {
|
|
_undefined++;
|
|
if (print) {
|
|
printf("unspecified connection: %s %s to %s %s\n", cable->connectors[connector_from]->name, usb_pin_from->name, cable->connectors[connector_to]->name, usb_pin_to->name);
|
|
}
|
|
}
|
|
} else { // there is no connection
|
|
if (pair_defined) {
|
|
// don't actually count the number of unconnected pair since it can be calculated from mandatory_pairs_nb - defined
|
|
if (print) {
|
|
printf("no connection: %s %s to %s %s\n", cable->connectors[connector_from]->name, usb_pin_from->name, cable->connectors[connector_to]->name, usb_pin_to->name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
usb_cables_connectors_float(cable->connectors, cable->connectors_nb); // ensure we return to a safe state
|
|
|
|
// copy variables
|
|
if (defined) {
|
|
*defined = _defined;
|
|
}
|
|
if (optional) {
|
|
*optional = _optional;
|
|
}
|
|
if (undefined) {
|
|
*undefined = _undefined;
|
|
}
|
|
return (0 == _undefined && cable->mandatory_pairs_nb == _defined);
|
|
}
|
|
|
|
uint8_t** usb_cables_test_connections(const struct usb_connector_t** connectors, uint8_t connectors_nb, bool include_intra, bool ground_only, uint16_t* connections_nb)
|
|
{
|
|
*connections_nb = 0; // number of connections between the connectors we found
|
|
uint8_t (*connections)[2] = NULL; // connections between the connectors we found (pairs of pin index)
|
|
if (NULL == connectors || 0 == connectors_nb) { // verify input arguments
|
|
return NULL;
|
|
}
|
|
|
|
usb_cables_pins_float(); // ensure we start in a safe state so no pin influences the connections check
|
|
|
|
for (uint8_t connector_from_i = 0; connector_from_i < connectors_nb; connector_from_i++) { // test from every connector
|
|
const struct usb_connector_t* connector_from = connectors[connector_from_i]; // get connector
|
|
if (NULL == connector_from) { // check connector
|
|
continue;
|
|
}
|
|
for (uint8_t pin_from_i = 0; pin_from_i < connector_from->pins_nb; pin_from_i++) { // test from every pin
|
|
const uint8_t pin_from = connector_from->pins[pin_from_i]; // get pin
|
|
if (pin_from >= LENGTH(usb_pins)) { // check pin
|
|
continue;
|
|
}
|
|
const struct usb_pin_t* usb_pin_from = &usb_pins[pin_from]; // get from pin
|
|
if (ground_only && USB_PIN_TYPE_GROUND != usb_pin_from->type) { // enforce ground only rule
|
|
continue;
|
|
}
|
|
for (uint8_t connector_to_i = connector_from_i; connector_to_i < connectors_nb; connector_to_i++) { // test to every connector (yet untested)
|
|
if (!include_intra && connector_to_i == connector_from_i) { // don't check internal connections
|
|
continue;
|
|
}
|
|
const struct usb_connector_t* connector_to = connectors[connector_to_i]; // get connector
|
|
if (NULL == connector_to) {
|
|
continue;
|
|
}
|
|
for (uint8_t pin_to_i = 0; pin_to_i < connector_to->pins_nb; pin_to_i++) { // test to every pin
|
|
const uint8_t pin_to = connector_to->pins[pin_to_i]; // get pin
|
|
const struct usb_pin_t* usb_pin_to = &usb_pins[pin_to]; // get to pin
|
|
if (pin_to >= LENGTH(usb_pins)) { // check pin
|
|
continue;
|
|
}
|
|
if (connector_to_i == connector_from_i && pin_to_i <= pin_from_i) { // skip already tested internal connection
|
|
continue;
|
|
}
|
|
if (pin_to == pin_from) { // skip same pin
|
|
continue;
|
|
}
|
|
if (usb_pin_to->port == usb_pin_from->port && usb_pin_to->pin == usb_pin_from->pin) { // skip same pin
|
|
continue;
|
|
}
|
|
// don't check if power and ground pins are connected because loads lead to false positives
|
|
if ((USB_PIN_TYPE_GROUND == usb_pin_from->type || USB_PIN_TYPE_SHIELD == usb_pin_from->type) && USB_PIN_TYPE_POWER == usb_pin_to->type) {
|
|
continue;
|
|
}
|
|
if (USB_PIN_TYPE_POWER == usb_pin_from->type && (USB_PIN_TYPE_GROUND == usb_pin_to->type || USB_PIN_TYPE_SHIELD == usb_pin_to->type)) {
|
|
continue;
|
|
}
|
|
if (ground_only && USB_PIN_TYPE_GROUND != usb_pin_to->type) { // enforce ground only rule
|
|
continue;
|
|
}
|
|
|
|
// test connection
|
|
const bool connected = usb_cables_test_pins(usb_pin_from, usb_pin_to, NULL);
|
|
if (connected) {
|
|
if (UINT16_MAX == (*connections_nb)) { // we already found the maximum of connections
|
|
return (uint8_t**)connections;
|
|
}
|
|
(*connections_nb)++; // increment number of connections found
|
|
uint8_t (*new_connections)[2] = realloc(connections, *connections_nb * sizeof(uint8_t[2])); // no integer overflow is possible because of the max number of connections
|
|
if (NULL == new_connections) { // allocation failed
|
|
if (connections) {
|
|
free(connections);
|
|
}
|
|
connections = NULL;
|
|
return NULL;
|
|
}
|
|
connections = new_connections;
|
|
connections[(*connections_nb) - 1][0] = pin_from;
|
|
connections[(*connections_nb) - 1][1] = pin_to;
|
|
}
|
|
} // pin_to
|
|
} // connector_to
|
|
} // pin_from
|
|
} // connector_from
|
|
|
|
return (uint8_t**)connections;
|
|
}
|