serial: 8250_exar: Use 8250 PCI library to map and assign resources
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 19 Feb 2024 15:05:02 +0000 (17:05 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 Mar 2024 20:52:06 +0000 (21:52 +0100)
8250 PCI library provides a common code to map and assign resources.
Use it in order to deduplicate existing code and support IO port
variants.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20240219150627.2101198-7-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_exar.c
drivers/tty/serial/8250/Kconfig

index cf00335d953f94607d8a50e17b63f9ae5e4d9c00..afe577860ac5f6ec0196f8452bdc508444f40ad2 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/byteorder.h>
 
 #include "8250.h"
+#include "8250_pcilib.h"
 
 #define PCI_DEVICE_ID_ACCESSIO_COM_2S          0x1052
 #define PCI_DEVICE_ID_ACCESSIO_COM_4S          0x105d
@@ -230,13 +231,12 @@ static int default_setup(struct exar8250 *priv, struct pci_dev *pcidev,
                         struct uart_8250_port *port)
 {
        const struct exar8250_board *board = priv->board;
-       unsigned int bar = 0;
        unsigned char status;
+       int err;
 
-       port->port.iotype = UPIO_MEM;
-       port->port.mapbase = pci_resource_start(pcidev, bar) + offset;
-       port->port.membase = priv->virt + offset;
-       port->port.regshift = board->reg_shift;
+       err = serial8250_pci_setup_port(pcidev, port, 0, offset, board->reg_shift);
+       if (err)
+               return err;
 
        /*
         * XR17V35x UARTs have an extra divisor register, DLD that gets enabled
@@ -941,6 +941,7 @@ static struct pci_driver exar_pci_driver = {
 };
 module_pci_driver(exar_pci_driver);
 
+MODULE_IMPORT_NS(SERIAL_8250_PCI);
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Exar Serial Driver");
 MODULE_AUTHOR("Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>");
index 8b9a2c4902e2c31c0897d7daf42a0ffd97c285d7..47ff50763c048c89b19b7c9f13f462bc5368ab43 100644 (file)
@@ -149,6 +149,7 @@ config SERIAL_8250_PCI
 config SERIAL_8250_EXAR
        tristate "8250/16550 Exar/Commtech PCI/PCIe device support"
        depends on SERIAL_8250 && PCI
+       select SERIAL_8250_PCILIB
        default SERIAL_8250
        help
          This builds support for XR17C1xx, XR17V3xx and some Commtech