code style and clean up CDC serial header files

This commit is contained in:
IngHK
2024-03-21 08:29:28 +01:00
parent 2786a61e8b
commit cb69ed0d04
4 changed files with 224 additions and 224 deletions

View File

@@ -24,8 +24,8 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
#ifndef _CH34X_H_ #ifndef TUSB_CH34X_H
#define _CH34X_H_ #define TUSB_CH34X_H
// There is no official documentation for the CH34x (CH340, CH341) chips. Reference can be found // There is no official documentation for the CH34x (CH340, CH341) chips. Reference can be found
// - https://github.com/WCHSoftGroup/ch341ser_linux // - https://github.com/WCHSoftGroup/ch341ser_linux
@@ -40,45 +40,45 @@
#endif #endif
// USB requests // USB requests
#define CH34X_REQ_READ_VERSION 0x5F // dec 95 #define CH34X_REQ_READ_VERSION 0x5F // dec 95
#define CH34X_REQ_WRITE_REG 0x9A // dec 154 #define CH34X_REQ_WRITE_REG 0x9A // dec 154
#define CH34X_REQ_READ_REG 0x95 // dec 149 #define CH34X_REQ_READ_REG 0x95 // dec 149
#define CH34X_REQ_SERIAL_INIT 0xA1 // dec 161 #define CH34X_REQ_SERIAL_INIT 0xA1 // dec 161
#define CH34X_REQ_MODEM_CTRL 0xA4 // dev 164 #define CH34X_REQ_MODEM_CTRL 0xA4 // dev 164
// registers // registers
#define CH34X_REG_BREAK 0x05 #define CH34X_REG_BREAK 0x05
#define CH34X_REG_PRESCALER 0x12 #define CH34X_REG_PRESCALER 0x12
#define CH34X_REG_DIVISOR 0x13 #define CH34X_REG_DIVISOR 0x13
#define CH34X_REG_LCR 0x18 #define CH34X_REG_LCR 0x18
#define CH34X_REG_LCR2 0x25 #define CH34X_REG_LCR2 0x25
#define CH34X_REG_MCR_MSR 0x06 #define CH34X_REG_MCR_MSR 0x06
#define CH34X_REG_MCR_MSR2 0x07 #define CH34X_REG_MCR_MSR2 0x07
#define CH34X_NBREAK_BITS 0x01 #define CH34X_NBREAK_BITS 0x01
#define CH341_REG_0x0F 0x0F // undocumented register #define CH341_REG_0x0F 0x0F // undocumented register
#define CH341_REG_0x2C 0x2C // undocumented register #define CH341_REG_0x2C 0x2C // undocumented register
#define CH341_REG_0x27 0x27 // hardware flow control (cts/rts) #define CH341_REG_0x27 0x27 // hardware flow control (cts/rts)
#define CH34X_REG16_DIVISOR_PRESCALER TU_U16(CH34X_REG_DIVISOR, CH34X_REG_PRESCALER) #define CH34X_REG16_DIVISOR_PRESCALER TU_U16(CH34X_REG_DIVISOR, CH34X_REG_PRESCALER)
#define CH32X_REG16_LCR2_LCR TU_U16(CH34X_REG_LCR2, CH34X_REG_LCR) #define CH32X_REG16_LCR2_LCR TU_U16(CH34X_REG_LCR2, CH34X_REG_LCR)
// modem control bits // modem control bits
#define CH34X_BIT_RTS ( 1 << 6 ) #define CH34X_BIT_RTS (1 << 6)
#define CH34X_BIT_DTR ( 1 << 5 ) #define CH34X_BIT_DTR (1 << 5)
// line control bits // line control bits
#define CH34X_LCR_ENABLE_RX 0x80 #define CH34X_LCR_ENABLE_RX 0x80
#define CH34X_LCR_ENABLE_TX 0x40 #define CH34X_LCR_ENABLE_TX 0x40
#define CH34X_LCR_MARK_SPACE 0x20 #define CH34X_LCR_MARK_SPACE 0x20
#define CH34X_LCR_PAR_EVEN 0x10 #define CH34X_LCR_PAR_EVEN 0x10
#define CH34X_LCR_ENABLE_PAR 0x08 #define CH34X_LCR_ENABLE_PAR 0x08
#define CH34X_LCR_PAR_MASK 0x38 // all parity bits #define CH34X_LCR_PAR_MASK 0x38 // all parity bits
#define CH34X_LCR_STOP_BITS_2 0x04 #define CH34X_LCR_STOP_BITS_2 0x04
#define CH34X_LCR_CS8 0x03 #define CH34X_LCR_CS8 0x03
#define CH34X_LCR_CS7 0x02 #define CH34X_LCR_CS7 0x02
#define CH34X_LCR_CS6 0x01 #define CH34X_LCR_CS6 0x01
#define CH34X_LCR_CS5 0x00 #define CH34X_LCR_CS5 0x00
#define CH34X_LCR_CS_MASK 0x03 // all CSx bits #define CH34X_LCR_CS_MASK 0x03 // all CSx bits
#endif /* _CH34X_H_ */ #endif // TUSB_CH34X_H

View File

@@ -31,7 +31,7 @@
// parts are overtaken from vendors driver // parts are overtaken from vendors driver
// https://www.silabs.com/documents/public/software/cp210x-3.1.0.tar.gz // https://www.silabs.com/documents/public/software/cp210x-3.1.0.tar.gz
/* Config request codes */ // Config request codes
#define CP210X_IFC_ENABLE 0x00 #define CP210X_IFC_ENABLE 0x00
#define CP210X_SET_BAUDDIV 0x01 #define CP210X_SET_BAUDDIV 0x01
#define CP210X_GET_BAUDDIV 0x02 #define CP210X_GET_BAUDDIV 0x02
@@ -60,56 +60,56 @@
#define CP210X_SET_BAUDRATE 0x1E #define CP210X_SET_BAUDRATE 0x1E
#define CP210X_VENDOR_SPECIFIC 0xFF // GPIO, Recipient must be Device #define CP210X_VENDOR_SPECIFIC 0xFF // GPIO, Recipient must be Device
/* SILABSER_IFC_ENABLE_REQUEST_CODE */ // SILABSER_IFC_ENABLE_REQUEST_CODE
#define CP210X_UART_ENABLE 0x0001 #define CP210X_UART_ENABLE 0x0001
#define CP210X_UART_DISABLE 0x0000 #define CP210X_UART_DISABLE 0x0000
/* SILABSER_SET_BAUDDIV_REQUEST_CODE */ // SILABSER_SET_BAUDDIV_REQUEST_CODE
#define CP210X_BAUD_RATE_GEN_FREQ 0x384000 #define CP210X_BAUD_RATE_GEN_FREQ 0x384000
/*SILABSER_SET_LINE_CTL_REQUEST_CODE */ // SILABSER_SET_LINE_CTL_REQUEST_CODE
#define CP210X_BITS_DATA_MASK 0x0f00 #define CP210X_BITS_DATA_MASK 0x0f00
#define CP210X_BITS_DATA_5 0x0500 #define CP210X_BITS_DATA_5 0x0500
#define CP210X_BITS_DATA_6 0x0600 #define CP210X_BITS_DATA_6 0x0600
#define CP210X_BITS_DATA_7 0x0700 #define CP210X_BITS_DATA_7 0x0700
#define CP210X_BITS_DATA_8 0x0800 #define CP210X_BITS_DATA_8 0x0800
#define CP210X_BITS_DATA_9 0x0900 #define CP210X_BITS_DATA_9 0x0900
#define CP210X_BITS_PARITY_MASK 0x00f0 #define CP210X_BITS_PARITY_MASK 0x00f0
#define CP210X_BITS_PARITY_NONE 0x0000 #define CP210X_BITS_PARITY_NONE 0x0000
#define CP210X_BITS_PARITY_ODD 0x0010 #define CP210X_BITS_PARITY_ODD 0x0010
#define CP210X_BITS_PARITY_EVEN 0x0020 #define CP210X_BITS_PARITY_EVEN 0x0020
#define CP210X_BITS_PARITY_MARK 0x0030 #define CP210X_BITS_PARITY_MARK 0x0030
#define CP210X_BITS_PARITY_SPACE 0x0040 #define CP210X_BITS_PARITY_SPACE 0x0040
#define CP210X_BITS_STOP_MASK 0x000f #define CP210X_BITS_STOP_MASK 0x000f
#define CP210X_BITS_STOP_1 0x0000 #define CP210X_BITS_STOP_1 0x0000
#define CP210X_BITS_STOP_1_5 0x0001 #define CP210X_BITS_STOP_1_5 0x0001
#define CP210X_BITS_STOP_2 0x0002 #define CP210X_BITS_STOP_2 0x0002
/* SILABSER_SET_BREAK_REQUEST_CODE */ // SILABSER_SET_BREAK_REQUEST_CODE
#define CP210X_BREAK_ON 0x0001 #define CP210X_BREAK_ON 0x0001
#define CP210X_BREAK_OFF 0x0000 #define CP210X_BREAK_OFF 0x0000
/* SILABSER_SET_MHS_REQUEST_CODE */ // SILABSER_SET_MHS_REQUEST_CODE
#define CP210X_MCR_DTR 0x0001 #define CP210X_MCR_DTR 0x0001
#define CP210X_MCR_RTS 0x0002 #define CP210X_MCR_RTS 0x0002
#define CP210X_MCR_ALL 0x0003 #define CP210X_MCR_ALL 0x0003
#define CP210X_MSR_CTS 0x0010 #define CP210X_MSR_CTS 0x0010
#define CP210X_MSR_DSR 0x0020 #define CP210X_MSR_DSR 0x0020
#define CP210X_MSR_RING 0x0040 #define CP210X_MSR_RING 0x0040
#define CP210X_MSR_DCD 0x0080 #define CP210X_MSR_DCD 0x0080
#define CP210X_MSR_ALL 0x00F0 #define CP210X_MSR_ALL 0x00F0
#define CP210X_CONTROL_WRITE_DTR 0x0100 #define CP210X_CONTROL_WRITE_DTR 0x0100
#define CP210X_CONTROL_WRITE_RTS 0x0200 #define CP210X_CONTROL_WRITE_RTS 0x0200
#define CP210X_LSR_BREAK 0x0001 #define CP210X_LSR_BREAK 0x0001
#define CP210X_LSR_FRAMING_ERROR 0x0002 #define CP210X_LSR_FRAMING_ERROR 0x0002
#define CP210X_LSR_HW_OVERRUN 0x0004 #define CP210X_LSR_HW_OVERRUN 0x0004
#define CP210X_LSR_QUEUE_OVERRUN 0x0008 #define CP210X_LSR_QUEUE_OVERRUN 0x0008
#define CP210X_LSR_PARITY_ERROR 0x0010 #define CP210X_LSR_PARITY_ERROR 0x0010
#define CP210X_LSR_ALL 0x001F #define CP210X_LSR_ALL 0x001F
// supported baudrates // supported baudrates
// reference: datasheets and AN205 "CP210x Baud Rate Support" // reference: datasheets and AN205 "CP210x Baud Rate Support"

View File

@@ -28,43 +28,43 @@
#include <stdint.h> #include <stdint.h>
// Commands // Commands
#define FTDI_SIO_RESET 0 // Reset the port #define FTDI_SIO_RESET 0 // Reset the port
#define FTDI_SIO_MODEM_CTRL 1 // Set the modem control register #define FTDI_SIO_MODEM_CTRL 1 // Set the modem control register
#define FTDI_SIO_SET_FLOW_CTRL 2 // Set flow control register #define FTDI_SIO_SET_FLOW_CTRL 2 // Set flow control register
#define FTDI_SIO_SET_BAUD_RATE 3 // Set baud rate #define FTDI_SIO_SET_BAUD_RATE 3 // Set baud rate
#define FTDI_SIO_SET_DATA 4 // Set the data characteristics of the port #define FTDI_SIO_SET_DATA 4 // Set the data characteristics of the port
#define FTDI_SIO_GET_MODEM_STATUS 5 // Retrieve current value of modem status register #define FTDI_SIO_GET_MODEM_STATUS 5 // Retrieve current value of modem status register
#define FTDI_SIO_SET_EVENT_CHAR 6 // Set the event character #define FTDI_SIO_SET_EVENT_CHAR 6 // Set the event character
#define FTDI_SIO_SET_ERROR_CHAR 7 // Set the error character #define FTDI_SIO_SET_ERROR_CHAR 7 // Set the error character
#define FTDI_SIO_SET_LATENCY_TIMER 9 // Set the latency timer #define FTDI_SIO_SET_LATENCY_TIMER 9 // Set the latency timer
#define FTDI_SIO_GET_LATENCY_TIMER 10 // Get the latency timer #define FTDI_SIO_GET_LATENCY_TIMER 10 // Get the latency timer
#define FTDI_SIO_SET_BITMODE 11 // Set bitbang mode #define FTDI_SIO_SET_BITMODE 11 // Set bitbang mode
#define FTDI_SIO_READ_PINS 12 // Read immediate value of pins #define FTDI_SIO_READ_PINS 12 // Read immediate value of pins
#define FTDI_SIO_READ_EEPROM 0x90 // Read EEPROM #define FTDI_SIO_READ_EEPROM 0x90 // Read EEPROM
// Channel indices for FT2232, FT2232H and FT4232H devices // Channel indices for FT2232, FT2232H and FT4232H devices
#define CHANNEL_A 1 #define CHANNEL_A 1
#define CHANNEL_B 2 #define CHANNEL_B 2
#define CHANNEL_C 3 #define CHANNEL_C 3
#define CHANNEL_D 4 #define CHANNEL_D 4
// Port Identifier Table // Port Identifier Table
#define PIT_DEFAULT 0 // SIOA #define PIT_DEFAULT 0 // SIOA
#define PIT_SIOA 1 // SIOA #define PIT_SIOA 1 // SIOA
// The device this driver is tested with one has only one port // The device this driver is tested with one has only one port
#define PIT_SIOB 2 // SIOB #define PIT_SIOB 2 // SIOB
#define PIT_PARALLEL 3 // Parallel #define PIT_PARALLEL 3 // Parallel
// FTDI_SIO_RESET // FTDI_SIO_RESET
#define FTDI_SIO_RESET_REQUEST FTDI_SIO_RESET #define FTDI_SIO_RESET_REQUEST FTDI_SIO_RESET
#define FTDI_SIO_RESET_REQUEST_TYPE 0x40 #define FTDI_SIO_RESET_REQUEST_TYPE 0x40
#define FTDI_SIO_RESET_SIO 0 #define FTDI_SIO_RESET_SIO 0
#define FTDI_SIO_RESET_PURGE_RX 1 #define FTDI_SIO_RESET_PURGE_RX 1
#define FTDI_SIO_RESET_PURGE_TX 2 #define FTDI_SIO_RESET_PURGE_TX 2
// FTDI_SIO_SET_BAUDRATE // FTDI_SIO_SET_BAUDRATE
#define FTDI_SIO_SET_BAUDRATE_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_BAUDRATE_REQUEST_TYPE 0x40
#define FTDI_SIO_SET_BAUDRATE_REQUEST 3 #define FTDI_SIO_SET_BAUDRATE_REQUEST 3
enum ftdi_sio_baudrate { enum ftdi_sio_baudrate {
ftdi_sio_b300 = 0, ftdi_sio_b300 = 0,
@@ -80,89 +80,89 @@ enum ftdi_sio_baudrate {
}; };
// FTDI_SIO_SET_DATA // FTDI_SIO_SET_DATA
#define FTDI_SIO_SET_DATA_REQUEST FTDI_SIO_SET_DATA #define FTDI_SIO_SET_DATA_REQUEST FTDI_SIO_SET_DATA
#define FTDI_SIO_SET_DATA_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_DATA_REQUEST_TYPE 0x40
#define FTDI_SIO_SET_DATA_PARITY_NONE (0x0 << 8) #define FTDI_SIO_SET_DATA_PARITY_NONE (0x0 << 8)
#define FTDI_SIO_SET_DATA_PARITY_ODD (0x1 << 8) #define FTDI_SIO_SET_DATA_PARITY_ODD (0x1 << 8)
#define FTDI_SIO_SET_DATA_PARITY_EVEN (0x2 << 8) #define FTDI_SIO_SET_DATA_PARITY_EVEN (0x2 << 8)
#define FTDI_SIO_SET_DATA_PARITY_MARK (0x3 << 8) #define FTDI_SIO_SET_DATA_PARITY_MARK (0x3 << 8)
#define FTDI_SIO_SET_DATA_PARITY_SPACE (0x4 << 8) #define FTDI_SIO_SET_DATA_PARITY_SPACE (0x4 << 8)
#define FTDI_SIO_SET_DATA_STOP_BITS_1 (0x0 << 11) #define FTDI_SIO_SET_DATA_STOP_BITS_1 (0x0 << 11) // same coding as ACM
#define FTDI_SIO_SET_DATA_STOP_BITS_15 (0x1 << 11) #define FTDI_SIO_SET_DATA_STOP_BITS_15 (0x1 << 11) // 1.5 not supported, for future use?
#define FTDI_SIO_SET_DATA_STOP_BITS_2 (0x2 << 11) #define FTDI_SIO_SET_DATA_STOP_BITS_2 (0x2 << 11)
#define FTDI_SIO_SET_BREAK (0x1 << 14) #define FTDI_SIO_SET_BREAK (0x1 << 14)
// FTDI_SIO_MODEM_CTRL // FTDI_SIO_MODEM_CTRL
#define FTDI_SIO_SET_MODEM_CTRL_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_MODEM_CTRL_REQUEST_TYPE 0x40
#define FTDI_SIO_SET_MODEM_CTRL_REQUEST FTDI_SIO_MODEM_CTRL #define FTDI_SIO_SET_MODEM_CTRL_REQUEST FTDI_SIO_MODEM_CTRL
#define FTDI_SIO_SET_DTR_MASK 0x1 #define FTDI_SIO_SET_DTR_MASK 0x1
#define FTDI_SIO_SET_DTR_HIGH ((FTDI_SIO_SET_DTR_MASK << 8) | 1) #define FTDI_SIO_SET_DTR_HIGH ((FTDI_SIO_SET_DTR_MASK << 8) | 1)
#define FTDI_SIO_SET_DTR_LOW ((FTDI_SIO_SET_DTR_MASK << 8) | 0) #define FTDI_SIO_SET_DTR_LOW ((FTDI_SIO_SET_DTR_MASK << 8) | 0)
#define FTDI_SIO_SET_RTS_MASK 0x2 #define FTDI_SIO_SET_RTS_MASK 0x2
#define FTDI_SIO_SET_RTS_HIGH ((FTDI_SIO_SET_RTS_MASK << 8) | 2) #define FTDI_SIO_SET_RTS_HIGH ((FTDI_SIO_SET_RTS_MASK << 8) | 2)
#define FTDI_SIO_SET_RTS_LOW ((FTDI_SIO_SET_RTS_MASK << 8) | 0) #define FTDI_SIO_SET_RTS_LOW ((FTDI_SIO_SET_RTS_MASK << 8) | 0)
// FTDI_SIO_SET_FLOW_CTRL // FTDI_SIO_SET_FLOW_CTRL
#define FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE 0x40
#define FTDI_SIO_SET_FLOW_CTRL_REQUEST FTDI_SIO_SET_FLOW_CTRL #define FTDI_SIO_SET_FLOW_CTRL_REQUEST FTDI_SIO_SET_FLOW_CTRL
#define FTDI_SIO_DISABLE_FLOW_CTRL 0x0 #define FTDI_SIO_DISABLE_FLOW_CTRL 0x0
#define FTDI_SIO_RTS_CTS_HS (0x1 << 8) #define FTDI_SIO_RTS_CTS_HS (0x1 << 8)
#define FTDI_SIO_DTR_DSR_HS (0x2 << 8) #define FTDI_SIO_DTR_DSR_HS (0x2 << 8)
#define FTDI_SIO_XON_XOFF_HS (0x4 << 8) #define FTDI_SIO_XON_XOFF_HS (0x4 << 8)
// FTDI_SIO_GET_LATENCY_TIMER // FTDI_SIO_GET_LATENCY_TIMER
#define FTDI_SIO_GET_LATENCY_TIMER_REQUEST FTDI_SIO_GET_LATENCY_TIMER #define FTDI_SIO_GET_LATENCY_TIMER_REQUEST FTDI_SIO_GET_LATENCY_TIMER
#define FTDI_SIO_GET_LATENCY_TIMER_REQUEST_TYPE 0xC0 #define FTDI_SIO_GET_LATENCY_TIMER_REQUEST_TYPE 0xC0
// FTDI_SIO_SET_LATENCY_TIMER // FTDI_SIO_SET_LATENCY_TIMER
#define FTDI_SIO_SET_LATENCY_TIMER_REQUEST FTDI_SIO_SET_LATENCY_TIMER #define FTDI_SIO_SET_LATENCY_TIMER_REQUEST FTDI_SIO_SET_LATENCY_TIMER
#define FTDI_SIO_SET_LATENCY_TIMER_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_LATENCY_TIMER_REQUEST_TYPE 0x40
// FTDI_SIO_SET_EVENT_CHAR // FTDI_SIO_SET_EVENT_CHAR
#define FTDI_SIO_SET_EVENT_CHAR_REQUEST FTDI_SIO_SET_EVENT_CHAR #define FTDI_SIO_SET_EVENT_CHAR_REQUEST FTDI_SIO_SET_EVENT_CHAR
#define FTDI_SIO_SET_EVENT_CHAR_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_EVENT_CHAR_REQUEST_TYPE 0x40
// FTDI_SIO_GET_MODEM_STATUS // FTDI_SIO_GET_MODEM_STATUS
#define FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE 0xc0 #define FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE 0xc0
#define FTDI_SIO_GET_MODEM_STATUS_REQUEST FTDI_SIO_GET_MODEM_STATUS #define FTDI_SIO_GET_MODEM_STATUS_REQUEST FTDI_SIO_GET_MODEM_STATUS
#define FTDI_SIO_CTS_MASK 0x10 #define FTDI_SIO_CTS_MASK 0x10
#define FTDI_SIO_DSR_MASK 0x20 #define FTDI_SIO_DSR_MASK 0x20
#define FTDI_SIO_RI_MASK 0x40 #define FTDI_SIO_RI_MASK 0x40
#define FTDI_SIO_RLSD_MASK 0x80 #define FTDI_SIO_RLSD_MASK 0x80
// FTDI_SIO_SET_BITMODE // FTDI_SIO_SET_BITMODE
#define FTDI_SIO_SET_BITMODE_REQUEST_TYPE 0x40 #define FTDI_SIO_SET_BITMODE_REQUEST_TYPE 0x40
#define FTDI_SIO_SET_BITMODE_REQUEST FTDI_SIO_SET_BITMODE #define FTDI_SIO_SET_BITMODE_REQUEST FTDI_SIO_SET_BITMODE
// Possible bitmodes for FTDI_SIO_SET_BITMODE_REQUEST // Possible bitmodes for FTDI_SIO_SET_BITMODE_REQUEST
#define FTDI_SIO_BITMODE_RESET 0x00 #define FTDI_SIO_BITMODE_RESET 0x00
#define FTDI_SIO_BITMODE_CBUS 0x20 #define FTDI_SIO_BITMODE_CBUS 0x20
// FTDI_SIO_READ_PINS // FTDI_SIO_READ_PINS
#define FTDI_SIO_READ_PINS_REQUEST_TYPE 0xc0 #define FTDI_SIO_READ_PINS_REQUEST_TYPE 0xc0
#define FTDI_SIO_READ_PINS_REQUEST FTDI_SIO_READ_PINS #define FTDI_SIO_READ_PINS_REQUEST FTDI_SIO_READ_PINS
// FTDI_SIO_READ_EEPROM // FTDI_SIO_READ_EEPROM
#define FTDI_SIO_READ_EEPROM_REQUEST_TYPE 0xc0 #define FTDI_SIO_READ_EEPROM_REQUEST_TYPE 0xc0
#define FTDI_SIO_READ_EEPROM_REQUEST FTDI_SIO_READ_EEPROM #define FTDI_SIO_READ_EEPROM_REQUEST FTDI_SIO_READ_EEPROM
#define FTDI_FTX_CBUS_MUX_GPIO 0x8 #define FTDI_FTX_CBUS_MUX_GPIO 0x8
#define FTDI_FT232R_CBUS_MUX_GPIO 0xa #define FTDI_FT232R_CBUS_MUX_GPIO 0xa
#define FTDI_RS0_CTS (1 << 4) #define FTDI_RS0_CTS (1 << 4)
#define FTDI_RS0_DSR (1 << 5) #define FTDI_RS0_DSR (1 << 5)
#define FTDI_RS0_RI (1 << 6) #define FTDI_RS0_RI (1 << 6)
#define FTDI_RS0_RLSD (1 << 7) #define FTDI_RS0_RLSD (1 << 7)
#define FTDI_RS_DR 1 #define FTDI_RS_DR 1
#define FTDI_RS_OE (1<<1) #define FTDI_RS_OE (1 << 1)
#define FTDI_RS_PE (1<<2) #define FTDI_RS_PE (1 << 2)
#define FTDI_RS_FE (1<<3) #define FTDI_RS_FE (1 << 3)
#define FTDI_RS_BI (1<<4) #define FTDI_RS_BI (1 << 4)
#define FTDI_RS_THRE (1<<5) #define FTDI_RS_THRE (1 << 5)
#define FTDI_RS_TEMT (1<<6) #define FTDI_RS_TEMT (1 << 6)
#define FTDI_RS_FIFO (1<<7) #define FTDI_RS_FIFO (1 << 7)
// chip types and names // chip types and names
enum ftdi_chip_type { enum ftdi_chip_type {
@@ -206,14 +206,14 @@ enum ftdi_chip_type {
// private interface data // private interface data
typedef struct ftdi_private { typedef struct ftdi_private {
enum ftdi_chip_type chip_type; enum ftdi_chip_type chip_type;
uint8_t channel; // channel index, or 0 for legacy types uint8_t channel; // channel index, or 0 for legacy types
} ftdi_private_t; } ftdi_private_t;
#define FTDI_OK true #define FTDI_OK true
#define FTDI_FAIL false #define FTDI_FAIL false
#define FTDI_NOT_POSSIBLE -1 #define FTDI_NOT_POSSIBLE -1
#define FTDI_REQUESTED -2 #define FTDI_REQUESTED -2
// division and round function overtaken from math.h // division and round function overtaken from math.h
#define DIV_ROUND_CLOSEST(x, divisor)( \ #define DIV_ROUND_CLOSEST(x, divisor)( \

View File

@@ -24,8 +24,8 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
#ifndef _PL2303_H_ #ifndef TUSB_PL2303_H
#define _PL2303_H_ #define TUSB_PL2303_H
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
@@ -36,66 +36,66 @@
// https://github.com/torvalds/linux/blob/master/drivers/usb/serial/pl2303.c // https://github.com/torvalds/linux/blob/master/drivers/usb/serial/pl2303.c
// - https://github.com/freebsd/freebsd-src/blob/main/sys/dev/usb/serial/uplcom.c // - https://github.com/freebsd/freebsd-src/blob/main/sys/dev/usb/serial/uplcom.c
/* quirks */ // quirks
#define PL2303_QUIRK_UART_STATE_IDX0 1 #define PL2303_QUIRK_UART_STATE_IDX0 1
#define PL2303_QUIRK_LEGACY 2 #define PL2303_QUIRK_LEGACY 2
#define PL2303_QUIRK_ENDPOINT_HACK 4 #define PL2303_QUIRK_ENDPOINT_HACK 4
/* requests and bits */ // requests and bits
#define PL2303_SET_LINE_REQUEST_TYPE 0x21 // class request host to device interface #define PL2303_SET_LINE_REQUEST_TYPE 0x21 // class request host to device interface
#define PL2303_SET_LINE_REQUEST 0x20 // dec 32 #define PL2303_SET_LINE_REQUEST 0x20 // dec 32
#define PL2303_SET_CONTROL_REQUEST_TYPE 0x21 // class request host to device interface #define PL2303_SET_CONTROL_REQUEST_TYPE 0x21 // class request host to device interface
#define PL2303_SET_CONTROL_REQUEST 0x22 // dec 34 #define PL2303_SET_CONTROL_REQUEST 0x22 // dec 34
#define PL2303_CONTROL_DTR 0x01 // dec 1 #define PL2303_CONTROL_DTR 0x01 // dec 1
#define PL2303_CONTROL_RTS 0x02 // dec 2 #define PL2303_CONTROL_RTS 0x02 // dec 2
#define PL2303_BREAK_REQUEST_TYPE 0x21 // class request host to device interface #define PL2303_BREAK_REQUEST_TYPE 0x21 // class request host to device interface
#define PL2303_BREAK_REQUEST 0x23 // dec 35 #define PL2303_BREAK_REQUEST 0x23 // dec 35
#define PL2303_BREAK_ON 0xffff #define PL2303_BREAK_ON 0xffff
#define PL2303_BREAK_OFF 0x0000 #define PL2303_BREAK_OFF 0x0000
#define PL2303_GET_LINE_REQUEST_TYPE 0xa1 // class request device to host interface #define PL2303_GET_LINE_REQUEST_TYPE 0xa1 // class request device to host interface
#define PL2303_GET_LINE_REQUEST 0x21 // dec 33 #define PL2303_GET_LINE_REQUEST 0x21 // dec 33
#define PL2303_VENDOR_WRITE_REQUEST_TYPE 0x40 // vendor request host to device interface #define PL2303_VENDOR_WRITE_REQUEST_TYPE 0x40 // vendor request host to device interface
#define PL2303_VENDOR_WRITE_REQUEST 0x01 // dec 1 #define PL2303_VENDOR_WRITE_REQUEST 0x01 // dec 1
#define PL2303_VENDOR_WRITE_NREQUEST 0x80 // dec 128 #define PL2303_VENDOR_WRITE_NREQUEST 0x80 // dec 128
#define PL2303_VENDOR_READ_REQUEST_TYPE 0xc0 // vendor request device to host interface #define PL2303_VENDOR_READ_REQUEST_TYPE 0xc0 // vendor request device to host interface
#define PL2303_VENDOR_READ_REQUEST 0x01 // dec 1 #define PL2303_VENDOR_READ_REQUEST 0x01 // dec 1
#define PL2303_VENDOR_READ_NREQUEST 0x81 // dec 129 #define PL2303_VENDOR_READ_NREQUEST 0x81 // dec 129
#define PL2303_UART_STATE_INDEX 8 #define PL2303_UART_STATE_INDEX 8
#define PL2303_UART_STATE_MSR_MASK 0x8b #define PL2303_UART_STATE_MSR_MASK 0x8b
#define PL2303_UART_STATE_TRANSIENT_MASK 0x74 #define PL2303_UART_STATE_TRANSIENT_MASK 0x74
#define PL2303_UART_DCD 0x01 #define PL2303_UART_DCD 0x01
#define PL2303_UART_DSR 0x02 #define PL2303_UART_DSR 0x02
#define PL2303_UART_BREAK_ERROR 0x04 #define PL2303_UART_BREAK_ERROR 0x04
#define PL2303_UART_RING 0x08 #define PL2303_UART_RING 0x08
#define PL2303_UART_FRAME_ERROR 0x10 #define PL2303_UART_FRAME_ERROR 0x10
#define PL2303_UART_PARITY_ERROR 0x20 #define PL2303_UART_PARITY_ERROR 0x20
#define PL2303_UART_OVERRUN_ERROR 0x40 #define PL2303_UART_OVERRUN_ERROR 0x40
#define PL2303_UART_CTS 0x80 #define PL2303_UART_CTS 0x80
#define PL2303_FLOWCTRL_MASK 0xf0 #define PL2303_FLOWCTRL_MASK 0xf0
#define PL2303_CLEAR_HALT_REQUEST_TYPE 0x02 // standard request host to device endpoint #define PL2303_CLEAR_HALT_REQUEST_TYPE 0x02 // standard request host to device endpoint
/* registers via vendor read/write requests */ // registers via vendor read/write requests
#define PL2303_READ_TYPE_HX_STATUS 0x8080 #define PL2303_READ_TYPE_HX_STATUS 0x8080
#define PL2303_HXN_RESET_REG 0x07 #define PL2303_HXN_RESET_REG 0x07
#define PL2303_HXN_RESET_UPSTREAM_PIPE 0x02 #define PL2303_HXN_RESET_UPSTREAM_PIPE 0x02
#define PL2303_HXN_RESET_DOWNSTREAM_PIPE 0x01 #define PL2303_HXN_RESET_DOWNSTREAM_PIPE 0x01
#define PL2303_HXN_FLOWCTRL_REG 0x0a #define PL2303_HXN_FLOWCTRL_REG 0x0a
#define PL2303_HXN_FLOWCTRL_MASK 0x1c #define PL2303_HXN_FLOWCTRL_MASK 0x1c
#define PL2303_HXN_FLOWCTRL_NONE 0x1c #define PL2303_HXN_FLOWCTRL_NONE 0x1c
#define PL2303_HXN_FLOWCTRL_RTS_CTS 0x18 #define PL2303_HXN_FLOWCTRL_RTS_CTS 0x18
#define PL2303_HXN_FLOWCTRL_XON_XOFF 0x0c #define PL2303_HXN_FLOWCTRL_XON_XOFF 0x0c
/* type data */ // type data
enum pl2303_type { enum pl2303_type {
TYPE_H, TYPE_H,
TYPE_HX, TYPE_HX,
@@ -107,9 +107,9 @@ enum pl2303_type {
}; };
struct pl2303_type_data { struct pl2303_type_data {
uint8_t const *name; uint8_t const *name;
uint32_t const max_baud_rate; uint32_t const max_baud_rate;
uint8_t const quirks; uint8_t const quirks;
uint16_t const no_autoxonxoff:1; uint16_t const no_autoxonxoff:1;
uint16_t const no_divisors:1; uint16_t const no_divisors:1;
uint16_t const alt_divisors:1; uint16_t const alt_divisors:1;
@@ -146,7 +146,7 @@ struct pl2303_type_data {
.no_divisors = true, \ .no_divisors = true, \
} }
/* private data types */ // private data types
struct pl2303_serial_private { struct pl2303_serial_private {
const struct pl2303_type_data* type; const struct pl2303_type_data* type;
uint8_t quirks; uint8_t quirks;
@@ -157,16 +157,16 @@ typedef struct TU_ATTR_PACKED {
bool supports_hx_status; bool supports_hx_status;
} pl2303_private_t; } pl2303_private_t;
/* buffer sizes for line coding data */ // buffer sizes for line coding data
#define PL2303_LINE_CODING_BUFSIZE 7 #define PL2303_LINE_CODING_BUFSIZE 7
#define PL2303_LINE_CODING_BAUDRATE_BUFSIZE 4 #define PL2303_LINE_CODING_BAUDRATE_BUFSIZE 4
/* bulk endpoints */ // bulk endpoints
#define PL2303_OUT_EP 0x02 #define PL2303_OUT_EP 0x02
#define PL2303_IN_EP 0x83 #define PL2303_IN_EP 0x83
/* return values of pl2303_detect_type() */ // return values of pl2303_detect_type()
#define PL2303_SUPPORTS_HX_STATUS_TRIGGERED -1 #define PL2303_SUPPORTS_HX_STATUS_TRIGGERED -1
#define PL2303_DETECT_TYPE_FAILED -2 #define PL2303_DETECT_TYPE_FAILED -2
#endif /* _PL2303_H_ */ #endif // TUSB_PL2303_H