Hello, Recently I bought a cheap PCIe UART adapter. It uses ASMedia ASM1083 PCIe-PCI bridge and TXIC TX382B UART controller. There is no details/datasheets about TX382B, but a Chinese seller saids that it is similar to WCH351Q (aka WinChipHead's CH351Q). [1]
So I add new entry to pucdata.c like CH351. TX382B may be compatible with 16550A but works with no FIFO when my diff is applied. Here is a dmesg. ppb1 at pci1 dev 0 function 0 "ASMedia ASM1083/1085 PCIE-PCI" rev 0x04 pci2 at ppb1 bus 2 puc0 at pci2 dev 0 function 0 "TXIC TX382B" rev 0x10: ports: 2 com com4 at puc0 port 0 apic 5 int 18: ns16550a, 16 byte fifo com4: probed fifo depth: 0 bytes com5 at puc0 port 1 apic 5 int 18: ns16550a, 16 byte fifo com5: probed fifo depth: 0 bytes Is this problem occurs with WCH's CH351? [1] http://www.mistertao.com/v2/pages/item/39360600316.html This site is written in Chinese, use Google Translate. Regards, -- SASANO Takayoshi <[email protected]> Index: pcidevs =================================================================== RCS file: /cvs/src/sys/dev/pci/pcidevs,v retrieving revision 1.1790 diff -u -p -r1.1790 pcidevs --- pcidevs 15 Mar 2016 07:37:15 -0000 1.1790 +++ pcidevs 16 Mar 2016 03:04:27 -0000 @@ -340,6 +340,7 @@ vendor AVANCE2 0x4005 Avance Logic vendor ADDTRON 0x4033 Addtron vendor NETXEN 0x4040 NetXen vendor WCH 0x4348 Nanjing QinHeng Electronics +vendor TXIC 0x4651 TXIC vendor INDCOMPSRC 0x494f Industrial Computer Source vendor NETVIN 0x4a14 NetVin vendor GEMTEK 0x5046 Gemtek @@ -5139,6 +5140,9 @@ product WCH CH352 0x3253 CH352 product WCH2 CH351 0x2273 CH351 product WCH2 CH382_1 0x3253 CH382 product WCH2 CH382_2 0x3250 CH382 + +/* TXIC */ +product TXIC TX382B 0x3273 TX382B /* National Datacomm Corp products */ product NDC NCP130 0x0130 NCP130 Index: pcidevs.h =================================================================== RCS file: /cvs/src/sys/dev/pci/pcidevs.h,v retrieving revision 1.1784 diff -u -p -r1.1784 pcidevs.h --- pcidevs.h 15 Mar 2016 07:37:36 -0000 1.1784 +++ pcidevs.h 16 Mar 2016 03:04:28 -0000 @@ -345,6 +345,7 @@ #define PCI_VENDOR_ADDTRON 0x4033 /* Addtron */ #define PCI_VENDOR_NETXEN 0x4040 /* NetXen */ #define PCI_VENDOR_WCH 0x4348 /* Nanjing QinHeng Electronics */ +#define PCI_VENDOR_TXIC 0x4651 /* TXIC */ #define PCI_VENDOR_INDCOMPSRC 0x494f /* Industrial Computer Source */ #define PCI_VENDOR_NETVIN 0x4a14 /* NetVin */ #define PCI_VENDOR_GEMTEK 0x5046 /* Gemtek */ @@ -5144,6 +5145,9 @@ #define PCI_PRODUCT_WCH2_CH351 0x2273 /* CH351 */ #define PCI_PRODUCT_WCH2_CH382_1 0x3253 /* CH382 */ #define PCI_PRODUCT_WCH2_CH382_2 0x3250 /* CH382 */ + +/* TXIC */ +#define PCI_PRODUCT_TXIC_TX382B 0x3273 /* TX382B */ /* National Datacomm Corp products */ #define PCI_PRODUCT_NDC_NCP130 0x0130 /* NCP130 */ Index: pcidevs_data.h =================================================================== RCS file: /cvs/src/sys/dev/pci/pcidevs_data.h,v retrieving revision 1.1779 diff -u -p -r1.1779 pcidevs_data.h --- pcidevs_data.h 15 Mar 2016 07:37:36 -0000 1.1779 +++ pcidevs_data.h 16 Mar 2016 03:04:29 -0000 @@ -17760,6 +17760,10 @@ static const struct pci_known_product pc "CH382", }, { + PCI_VENDOR_TXIC, PCI_PRODUCT_TXIC_TX382B, + "TX382B", + }, + { PCI_VENDOR_NDC, PCI_PRODUCT_NDC_NCP130, "NCP130", }, @@ -26754,6 +26758,10 @@ static const struct pci_known_vendor pci { PCI_VENDOR_WCH, "Nanjing QinHeng Electronics", + }, + { + PCI_VENDOR_TXIC, + "TXIC", }, { PCI_VENDOR_INDCOMPSRC, Index: pucdata.c =================================================================== RCS file: /cvs/src/sys/dev/pci/pucdata.c,v retrieving revision 1.102 diff -u -p -r1.102 pucdata.c --- pucdata.c 15 Mar 2016 07:39:27 -0000 1.102 +++ pucdata.c 16 Mar 2016 03:04:29 -0000 @@ -2166,6 +2166,14 @@ const struct puc_device_description puc_ { PUC_COM_POW2(0), 0x10, 0x00c8 }, }, }, + { /* "TXIC TX382B (2S)", */ + { PCI_VENDOR_TXIC, PCI_PRODUCT_TXIC_TX382B, 0, 0 }, + { 0xffff, 0xffff, 0, 0 }, + { + { PUC_COM_POW2(0), 0x10, 0x0000 }, + { PUC_COM_POW2(0), 0x14, 0x0000 }, + } + }, { /* "NetMos NM9820 UART" */ { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9820, 0, 0 }, { 0xffff, 0xffff, 0, 0 },
