WCH CH-382 support
Subsystems (2)
PATCH 1/1 WCH CH-382 support
Hi,
finally I've made patch that supports CH-382 2S1P card except IRQ. So it uses FL_NOIRQ meanwhile.
It was made againstgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
but I think can be applied to another versions with minimal fuzz.
drivers/parport/parport_serial.c +10 -0
@@ -64,6 +64,7 @@ enum parport_pc_pci_cards { timedia_9079c, wch_ch353_1s1p, wch_ch353_2s1p, + wch_ch382_2s1p, sunix_2s1p, };
@@ -151,6 +152,7 @@ static struct parport_pc_pci cards[] = { /* timedia_9079c */ { 1, { { 2, 3 }, } }, /* wch_ch353_1s1p*/ { 1, { { 1, -1}, } }, /* wch_ch353_2s1p*/ { 1, { { 2, -1}, } }, + /* wch_ch382_2s1p*/ { 1, { { 2, -1}, } }, /* sunix_2s1p */ { 1, { { 3, -1 }, } }, };
@@ -257,6 +259,7 @@ static struct pci_device_id parport_serial_pci_tbl[] = {/* WCH CARDS */ { 0x4348, 0x5053, PCI_ANY_ID, PCI_ANY_ID, 0, 0, wch_ch353_1s1p}, { 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p}, + { 0x1c00, 0x3250, 0x1c00, 0x3250, 0, 0, wch_ch382_2s1p},/* * More SUNIX variations. At least one of these has part number
@@ -494,6 +497,13 @@ static struct pciserial_board pci_parport_serial_boards[] = { .base_baud = 115200, .uart_offset = 8, }, + [wch_ch382_2s1p] = { + .flags = FL_BASE0|FL_NOIRQ, /* IRQ not implemented yet */ + .num_ports = 2, + .base_baud = 115200, + .uart_offset = 8, + .first_offset = 0xC0, + }, [sunix_2s1p] = { .flags = FL_BASE0|FL_BASE_BARS, .num_ports = 2,
drivers/tty/serial/8250/8250_pci.c +21 -0
@@ -1726,6 +1726,16 @@ pci_wch_ch353_setup(struct serial_private *priv,return pci_default_setup (priv, board, port, idx); } +static int +pci_wch_ch382_setup (struct serial_private *priv, +const struct pciserial_board *board, +struct uart_8250_port *port,int idx) +{ + port->port.flags |=UPF_FIXED_TYPE ; + port->port.type =PORT_16850 ; +return pci_default_setup (priv, board, port, idx); +} +#define PCI_VENDOR_ID_SBSMODULARIO 0x124B#define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B#define PCI_DEVICE_ID_OCTPRO 0x0001
@@ -1780,6 +1790,8 @@ pci_wch_ch353_setup(struct serial_private *priv,#define PCI_VENDOR_ID_SUNIX 0x1fd4#define PCI_DEVICE_ID_SUNIX_1999 0x1999 +#define PCIE_VENDOR_ID_WCH 0x1c00 +#define PCIE_DEVICE_ID_WCH_CH382_2S1P 0x3250/* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584
@@ -2446,6 +2458,14 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { .subdevice = PCI_ANY_ID, .setup = pci_wch_ch353_setup, }, +/* WCH CH382 2S1P card (16750 clone) */ + { + .vendor = PCIE_VENDOR_ID_WCH, + .device = PCIE_DEVICE_ID_WCH_CH382_2S1P, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_wch_ch382_setup, + },/* * ASIX devices with FIFO bug */
@@ -3538,6 +3558,7 @@ static const struct pci_device_id blacklist[] = {/* multi-io cards handled by parport_serial */ { PCI_DEVICE(0x4348, 0x7053), }, /* WCH CH353 2S1P */ { PCI_DEVICE(0x4348, 0x5053), }, /* WCH CH353 1S1P */ + { PCI_DEVICE(0x1c00, 0x3250), }, /* WCH CH382 2S1P */ };/*
At Tue, 14 Oct 2014 19:20:50 +0400,
Quoted 4 lines · Sergej Pupykin
Hi,
finally I've made patch that supports CH-382 2S1P card except IRQ. So it uses
FL_NOIRQmeanwhile.
Non-working IRQ was caused by VirtualBox PCI passing. (I passed PCI card to vbox guest for debugging). So FL_NOIRQ can be safely removed.
drivers/parport/parport_serial.c +10 -0
@@ -64,6 +64,7 @@ enum parport_pc_pci_cards { timedia_9079c, wch_ch353_1s1p, wch_ch353_2s1p, + wch_ch382_2s1p, sunix_2s1p, };
@@ -151,6 +152,7 @@ static struct parport_pc_pci cards[] = { /* timedia_9079c */ { 1, { { 2, 3 }, } }, /* wch_ch353_1s1p*/ { 1, { { 1, -1}, } }, /* wch_ch353_2s1p*/ { 1, { { 2, -1}, } }, + /* wch_ch382_2s1p*/ { 1, { { 2, -1}, } }, /* sunix_2s1p */ { 1, { { 3, -1 }, } }, };
@@ -257,6 +259,7 @@ static struct pci_device_id parport_serial_pci_tbl[] = {/* WCH CARDS */ { 0x4348, 0x5053, PCI_ANY_ID, PCI_ANY_ID, 0, 0, wch_ch353_1s1p}, { 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p}, + { 0x1c00, 0x3250, 0x1c00, 0x3250, 0, 0, wch_ch382_2s1p},/* * More SUNIX variations. At least one of these has part number
@@ -494,6 +497,13 @@ static struct pciserial_board pci_parport_serial_boards[] = { .base_baud = 115200, .uart_offset = 8, }, + [wch_ch382_2s1p] = { + .flags = FL_BASE0, + .num_ports = 2, + .base_baud = 115200, + .uart_offset = 8, + .first_offset = 0xC0, + }, [sunix_2s1p] = { .flags = FL_BASE0|FL_BASE_BARS, .num_ports = 2,
drivers/tty/serial/8250/8250_pci.c +21 -0
@@ -1726,6 +1726,16 @@ pci_wch_ch353_setup(struct serial_private *priv,return pci_default_setup (priv, board, port, idx); } +static int +pci_wch_ch382_setup (struct serial_private *priv, +const struct pciserial_board *board, +struct uart_8250_port *port,int idx) +{ + port->port.flags |=UPF_FIXED_TYPE ; + port->port.type =PORT_16850 ; +return pci_default_setup (priv, board, port, idx); +} +#define PCI_VENDOR_ID_SBSMODULARIO 0x124B#define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B#define PCI_DEVICE_ID_OCTPRO 0x0001
@@ -1780,6 +1790,8 @@ pci_wch_ch353_setup(struct serial_private *priv,#define PCI_VENDOR_ID_SUNIX 0x1fd4#define PCI_DEVICE_ID_SUNIX_1999 0x1999 +#define PCIE_VENDOR_ID_WCH 0x1c00 +#define PCIE_DEVICE_ID_WCH_CH382_2S1P 0x3250/* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584
@@ -2446,6 +2458,14 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { .subdevice = PCI_ANY_ID, .setup = pci_wch_ch353_setup, }, +/* WCH CH382 2S1P card (16750 clone) */ + { + .vendor = PCIE_VENDOR_ID_WCH, + .device = PCIE_DEVICE_ID_WCH_CH382_2S1P, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_wch_ch382_setup, + },/* * ASIX devices with FIFO bug */
@@ -3538,6 +3558,7 @@ static const struct pci_device_id blacklist[] = {/* multi-io cards handled by parport_serial */ { PCI_DEVICE(0x4348, 0x7053), }, /* WCH CH353 2S1P */ { PCI_DEVICE(0x4348, 0x5053), }, /* WCH CH353 1S1P */ + { PCI_DEVICE(0x1c00, 0x3250), }, /* WCH CH382 2S1P */ };/*
14.10.2014 19:59, Sergej Pupykin пишет:
Quoted 11 lines
At Tue, 14 Oct 2014 19:20:50 +0400,
Quoted 4 lines · Sergej Pupykin
Hi,
finally I've made patch that supports CH-382 2S1P card except IRQ. So it uses
FL_NOIRQmeanwhile.Non-working IRQ was caused by VirtualBox PCI passing. (I passed PCI card to vbox guest for debugging). So
FL_NOIRQcan be safely removed.
The following is really worth reading:
https://www.kernel.org/doc/Documentation/SubmittingPatches
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html