Skip to content

Commit c7b56da

Browse files
committed
Added CH341 and updated header file
1 parent 3b86c97 commit c7b56da

File tree

2 files changed

+52
-9
lines changed

2 files changed

+52
-9
lines changed

src/srldrvce/srldrvce.asm

+7-1
Original file line numberDiff line numberDiff line change
@@ -1547,7 +1547,7 @@ start_write:
15471547
; Vendor match table
15481548
; Each table consists of a set of paramters to check to confirm a device
15491549
vendor_device_match_table:
1550-
db 18 ; total number of devices in table (8-bits for now)
1550+
db 19 ; total number of devices in table (8-bits for now)
15511551
dl .device_id_ftdi_sio
15521552
dl .device_id_ftdi_ft232a
15531553
dl .device_id_ftdi_ft232b
@@ -1565,6 +1565,7 @@ vendor_device_match_table:
15651565
dl .device_id_ftdi_ft232hp
15661566
dl .device_id_ftdi_ft4232ha
15671567
dl .device_id_ch340
1568+
dl .device_id_ch341
15681569
dl .device_id_cp2102
15691570

15701571
.device_id_ftdi_sio:
@@ -1653,6 +1654,11 @@ vendor_device_match_table:
16531654
devchk srl_device.idvendor, mtEquals, $1A86 ; paramter to check, match mode (equal, greater than, less than), value to check against
16541655
devchk srl_device.idproduct, mtEquals, $7523
16551656
db SRL_TYPE_CH34X, SRL_SUBTYPE_CH340, BAUD_TYPE_CH34X ; device data if matched: type, sub type and baud type
1657+
.device_id_ch341:
1658+
db 2 ; number of conditional checks to perform
1659+
devchk srl_device.idvendor, mtEquals, $1A86 ; paramter to check, match mode (equal, greater than, less than), value to check against
1660+
devchk srl_device.idproduct, mtEquals, $5523
1661+
db SRL_TYPE_CH34X, SRL_SUBTYPE_CH341, BAUD_TYPE_CH34X ; device data if matched: type, sub type and baud type
16561662
.device_id_cp2102:
16571663
db 2
16581664
devchk srl_device.idvendor, mtEquals, $10C4

src/srldrvce/srldrvce.h

+45-8
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,60 @@ enum {
2424
SRL_TYPE_HOST, /**< Calc is acting as a device */
2525
SRL_TYPE_CDC, /**< CDC device */
2626
SRL_TYPE_FTDI, /**< FTDI device */
27-
SRL_TYPE_PL2303 /**< PL2303 device */
27+
SRL_TYPE_PL2303, /**< PL2303 device */
28+
SRL_TYPE_CH34X, /**< CH34X device */
29+
SRL_TYPE_CP210X /**< CP210X device */
2830
};
2931

3032
typedef uint8_t srl_device_type_t;
3133

3234
enum {
3335
SRL_SUBTYPE_FTDI_UNKNOWN = 0,
3436
SRL_SUBTYPE_SIO,
35-
SRL_SUBTYPE_FT8U232AM,
36-
SRL_SUBTYPE_FT232BM,
37+
SRL_SUBTYPE_FT232A,
38+
SRL_SUBTYPE_FT232B,
3739
SRL_SUBTYPE_FT2232C,
38-
SRL_SUBTYPE_FT232RL,
39-
SRL_SUBTYPE_FTX,
40+
SRL_SUBTYPE_FT232R,
41+
SRL_SUBTYPE_FT232H,
4042
SRL_SUBTYPE_FT2232H,
4143
SRL_SUBTYPE_FT4232H,
42-
SRL_SUBTYPE_FT232H,
44+
SRL_SUBTYPE_FT4232HA,
45+
SRL_SUBTYPE_FT232HP,
46+
SRL_SUBTYPE_FT233HP,
47+
SRL_SUBTYPE_FT2232HP,
48+
SRL_SUBTYPE_FT2233HP,
49+
SRL_SUBTYPE_FT4232HP,
50+
SRL_SUBTYPE_FT4233HP,
51+
SRL_SUBTYPE_FTX
4352
};
4453

4554
enum {
4655
SRL_SUBTYPE_PL2303_01 = 0,
47-
SRL_SUBTYPE_PL2303_HX,
56+
SRL_SUBTYPE_PL2303_HX
57+
};
58+
59+
enum {
60+
SRL_SUBTYPE_CH340 = 0,
61+
SRL_SUBTYPE_CH341
62+
};
63+
64+
enum {
65+
SRL_SUBTYPE_CP2101 = 0,
66+
SRL_SUBTYPE_CP2102,
67+
SRL_SUBTYPE_CP2103
68+
};
69+
70+
enum {
71+
BAUD_TYPE_UNKNOWN = 0,
72+
BAUD_TYPE_HOST,
73+
BAUD_TYPE_CDC,
74+
BAUD_TYPE_FTDI_SIO,
75+
BAUD_TYPE_FTDI_AM,
76+
BAUD_TYPE_FTDI_BM,
77+
BAUD_TYPE_FTDI_H,
78+
BAUD_TYPE_PL2303,
79+
BAUD_TYPE_CH34X,
80+
BAUD_TYPE_CP210X
4881
};
4982

5083
typedef uint8_t srl_device_subtype_t;
@@ -77,10 +110,14 @@ typedef struct {
77110
uint8_t tx_addr;
78111
srl_device_type_t type;
79112
srl_device_subtype_t subtype;
113+
uint16_t idvendor;
114+
uint16_t idproduct;
115+
uint16_t bcddevice;
116+
uint8_t baudtype;
80117
ring_buf_ctrl_t rx_buf;
81118
ring_buf_ctrl_t tx_buf;
82119
srl_error_t err;
83-
uint8_t reserved[16];
120+
uint8_t reserved[23];
84121
} srl_device_t;
85122

86123
#define SRL_INTERFACE_ANY 0xFF

0 commit comments

Comments
 (0)