Merge remote-tracking branches 'asoc/fix/blackfin', 'asoc/fix/da9055', 'asoc/fix...
[firefly-linux-kernel-4.4.55.git] / drivers / tty / serial / 8250 / 8250_pci.c
index 4697a514b80a6d2cafcd6a2800d8cdc820c6594f..0ff3e3624d4c0599623af31535d02502c6da81c5 100644 (file)
@@ -11,7 +11,6 @@
  */
 #undef DEBUG
 #include <linux/module.h>
-#include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/string.h>
 #include <linux/kernel.h>
@@ -784,7 +783,8 @@ static int pci_netmos_9900_setup(struct serial_private *priv,
 {
        unsigned int bar;
 
-       if ((priv->dev->subsystem_device & 0xff00) == 0x3000) {
+       if ((priv->dev->device != PCI_DEVICE_ID_NETMOS_9865) &&
+           (priv->dev->subsystem_device & 0xff00) == 0x3000) {
                /* netmos apparently orders BARs by datasheet layout, so serial
                 * ports get BARs 0 and 3 (or 1 and 4 for memmapped)
                 */
@@ -1259,10 +1259,10 @@ static int pci_quatech_init(struct pci_dev *dev)
                unsigned long base = pci_resource_start(dev, 0);
                if (base) {
                        u32 tmp;
-                       outl(inl(base + 0x38), base + 0x38);
+                       outl(inl(base + 0x38) | 0x00002000, base + 0x38);
                        tmp = inl(base + 0x3c);
                        outl(tmp | 0x01000000, base + 0x3c);
-                       outl(tmp, base + 0x3c);
+                       outl(tmp &= ~0x01000000, base + 0x3c);
                }
        }
        return 0;
@@ -1744,6 +1744,7 @@ pci_wch_ch353_setup(struct serial_private *priv,
 #define PCI_DEVICE_ID_TITAN_800E       0xA014
 #define PCI_DEVICE_ID_TITAN_200EI      0xA016
 #define PCI_DEVICE_ID_TITAN_200EISI    0xA017
+#define PCI_DEVICE_ID_TITAN_200V3      0xA306
 #define PCI_DEVICE_ID_TITAN_400V3      0xA310
 #define PCI_DEVICE_ID_TITAN_410V3      0xA312
 #define PCI_DEVICE_ID_TITAN_800V3      0xA314
@@ -4427,6 +4428,9 @@ static struct pci_device_id serial_pci_tbl[] = {
        {       PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200EISI,
                PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                pbn_oxsemi_2_4000000 },
+       {       PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200V3,
+               PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+               pbn_b0_bt_2_921600 },
        {       PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400V3,
                PCI_ANY_ID, PCI_ANY_ID, 0, 0,
                pbn_b0_4_921600 },