#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
                         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
 };
 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>");
 
 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