]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks
authorCameron Williams <cang1@live.co.uk>
Fri, 20 Oct 2023 16:03:17 +0000 (17:03 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Nov 2023 13:09:07 +0000 (14:09 +0100)
commit e4876dacaca46a1b09f9b417480924ab12019a5b upstream.

Some of the later revisions of the Brainboxes PX cards are based
on the Oxford Semiconductor chipset. Due to the chip's unique setup
these cards need to be initialised.
Previously these were tested against a reference card with the same broken
baudrate on another PC, cancelling out the effect. With this patch they
work and can transfer/receive find against an FTDI-based device.

Add all of the cards which require this setup to the quirks table.
Thanks to Maciej W. Rozycki for clarification on this chip.

Fixes: ef5a03a26c87 ("tty: 8250: Add support for Brainboxes PX cards.")
Cc: stable@vger.kernel.org
Signed-off-by: Cameron Williams <cang1@live.co.uk>
Link: https://lore.kernel.org/r/DU0PR02MB7899D222A4AB2A4E8C57108FC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_pci.c

index 9a77559d7a6b2c28a1ef22aafd5b56ab2ec1dc4d..d4029f008bb28b3c4e9132d3e38d103be9e95b6c 100644 (file)
@@ -2427,6 +2427,153 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
                .init                   = pci_oxsemi_tornado_init,
                .setup          = pci_oxsemi_tornado_setup,
        },
+       /*
+        * Brainboxes devices - all Oxsemi based
+        */
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4027,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4028,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4029,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4019,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4016,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4015,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x400A,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x400E,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x400C,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x400B,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x400F,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4010,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4011,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x401D,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x401E,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4013,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4017,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_INTASHIELD,
+               .device         = 0x4018,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .init           = pci_oxsemi_tornado_init,
+               .setup          = pci_oxsemi_tornado_setup,
+       },
        {
                .vendor         = PCI_VENDOR_ID_INTEL,
                .device         = 0x8811,