serial: 8250_lpss: move Quark code from PCI driver
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 17 Aug 2016 16:20:28 +0000 (19:20 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 31 Aug 2016 14:13:30 +0000 (16:13 +0200)
Intel Quark has DesignWare UART. Move the code from 8250_pci to 8250_lpss.

Reviewed-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_lpss.c
drivers/tty/serial/8250/8250_pci.c
drivers/tty/serial/8250/Kconfig

index 071f8781c65b0b014b1eb5f5ec8c7f930bdba0cc..f3cf4e8a5086e5902c0b7f9e25ae172044c72ffb 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "8250.h"
 
+#define PCI_DEVICE_ID_INTEL_QRK_UARTx  0x0936
+
 #define PCI_DEVICE_ID_INTEL_BYT_UART1  0x0f0a
 #define PCI_DEVICE_ID_INTEL_BYT_UART2  0x0f0c
 
@@ -166,6 +168,9 @@ static int lpss8250_dma_setup(struct lpss8250 *lpss, struct uart_8250_port *port
        struct dw_dma_slave *rx_param, *tx_param;
        struct device *dev = port->port.dev;
 
+       if (!lpss->dma_param.dma_dev)
+               return 0;
+
        rx_param = devm_kzalloc(dev, sizeof(*rx_param), GFP_KERNEL);
        if (!rx_param)
                return -ENOMEM;
@@ -253,9 +258,15 @@ static const struct lpss8250_board byt_board = {
        .setup = byt_serial_setup,
 };
 
+static const struct lpss8250_board qrk_board = {
+       .freq = 44236800,
+       .base_baud = 2764800,
+};
+
 #define LPSS_DEVICE(id, board) { PCI_VDEVICE(INTEL, id), (kernel_ulong_t)&board }
 
 static const struct pci_device_id pci_ids[] = {
+       LPSS_DEVICE(PCI_DEVICE_ID_INTEL_QRK_UARTx, qrk_board),
        LPSS_DEVICE(PCI_DEVICE_ID_INTEL_BYT_UART1, byt_board),
        LPSS_DEVICE(PCI_DEVICE_ID_INTEL_BYT_UART2, byt_board),
        LPSS_DEVICE(PCI_DEVICE_ID_INTEL_BSW_UART1, byt_board),
index e968c7019869d270b89d36ce4d8ab3abe0cf20bc..89832c370813be45c80adb2a7f87e0e208148810 100644 (file)
@@ -1776,7 +1776,6 @@ pci_wch_ch38x_setup(struct serial_private *priv,
 #define PCI_DEVICE_ID_COMMTECH_4222PCIE        0x0022
 #define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a
 #define PCI_DEVICE_ID_AMCC_ADDIDATA_APCI7800 0x818e
-#define PCI_DEVICE_ID_INTEL_QRK_UART   0x0936
 
 #define PCI_VENDOR_ID_SUNIX            0x1fd4
 #define PCI_DEVICE_ID_SUNIX_1999       0x1999
@@ -2755,7 +2754,6 @@ enum pci_board_num_t {
        pbn_ADDIDATA_PCIe_4_3906250,
        pbn_ADDIDATA_PCIe_8_3906250,
        pbn_ce4100_1_115200,
-       pbn_qrk,
        pbn_omegapci,
        pbn_NETMOS9900_2s_115200,
        pbn_brcm_trumanage,
@@ -3531,12 +3529,6 @@ static struct pciserial_board pci_boards[] = {
                .base_baud      = 921600,
                .reg_shift      = 2,
        },
-       [pbn_qrk] = {
-               .flags          = FL_BASE0,
-               .num_ports      = 1,
-               .base_baud      = 2764800,
-               .reg_shift      = 2,
-       },
        [pbn_omegapci] = {
                .flags          = FL_BASE0,
                .num_ports      = 8,
@@ -3650,6 +3642,7 @@ static const struct pci_device_id blacklist[] = {
        { PCI_VDEVICE(INTEL, 0x19d8), },
 
        /* Intel platforms with DesignWare UART */
+       { PCI_VDEVICE(INTEL, 0x0936), },
        { PCI_VDEVICE(INTEL, 0x0f0a), },
        { PCI_VDEVICE(INTEL, 0x0f0c), },
        { PCI_VDEVICE(INTEL, 0x228a), },
@@ -5322,12 +5315,6 @@ static struct pci_device_id serial_pci_tbl[] = {
                PCI_ANY_ID,  PCI_ANY_ID, 0, 0,
                pbn_ce4100_1_115200 },
 
-       /*
-        * Intel Quark x1000
-        */
-       {       PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_QRK_UART,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-               pbn_qrk },
        /*
         * Cronyx Omega PCI
         */
index 255a4326b7db7b9caee15e7d9247de876fa3daf9..357f3183253844c6f6f4a950e1067943e4d10341 100644 (file)
@@ -415,6 +415,7 @@ config SERIAL_8250_LPSS
          present on the UART found on various Intel platforms such as:
            - Intel Baytrail SoC
            - Intel Braswell SoC
+           - Intel Quark X1000 SoC
 
 config SERIAL_8250_MID
        tristate "Support for serial ports on Intel MID platforms" if EXPERT