serial: 8250_lpss: set PCI master only for private DMA
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 10 Oct 2016 08:27:18 +0000 (11:27 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Oct 2016 14:27:24 +0000 (16:27 +0200)
There is no need to set PCI bus mastering when device is not doing any DMA.
Though on Intel Quark DMA is a part of UART IP and thus shares same device in
Linux kernel.

Enable bus mastering only for Quark case.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_lpss.c

index 886fcf37f291ac7c78654aa2f3a511f976846732..353c90ea50b1313c280d0e2124c7b8d9ac90f611 100644 (file)
@@ -183,6 +183,8 @@ static void qrk_serial_setup_dma(struct lpss8250 *lpss, struct uart_port *port)
        if (ret)
                return;
 
+       pci_set_master(pdev);
+
        /* Special DMA address for UART */
        dma->rx_dma_addr = 0xfffff000;
        dma->tx_dma_addr = 0xfffff000;
@@ -280,8 +282,6 @@ static int lpss8250_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (ret)
                return ret;
 
-       pci_set_master(pdev);
-
        lpss = devm_kzalloc(&pdev->dev, sizeof(*lpss), GFP_KERNEL);
        if (!lpss)
                return -ENOMEM;