tree 232cb0eefd8f62916e0a5732e876742517bfce25
parent 1c7c1fe51629d82e1dff22b2c4d409b252fb2b05
author Russell King <[EMAIL PROTECTED]> Wed, 27 Jul 2005 11:32:04 +0100
committer Russell King <[EMAIL PROTECTED]> Wed, 27 Jul 2005 11:32:04 +0100

[SERIAL] Factor out the common setup from the per-serial port loop.

Signed-off-by: Russell King <[EMAIL PROTECTED]>

 drivers/serial/8250_pci.c |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -110,8 +110,9 @@ setup_port(struct pci_dev *dev, struct u
        if (bar >= PCI_NUM_BAR_RESOURCES)
                return -EINVAL;
 
+       base = pci_resource_start(dev, bar);
+
        if (pci_resource_flags(dev, bar) & IORESOURCE_MEM) {
-               base = pci_resource_start(dev, bar);
                len =  pci_resource_len(dev, bar);
 
                if (!priv->remapped_bar[bar])
@@ -120,13 +121,16 @@ setup_port(struct pci_dev *dev, struct u
                        return -ENOMEM;
 
                port->iotype = UPIO_MEM;
+               port->iobase = 0;
                port->mapbase = base + offset;
                port->membase = priv->remapped_bar[bar] + offset;
                port->regshift = regshift;
        } else {
-               base = pci_resource_start(dev, bar) + offset;
                port->iotype = UPIO_PORT;
-               port->iobase = base;
+               port->iobase = base + offset;
+               port->mapbase = 0;
+               port->membase = NULL;
+               port->regshift = 0;
        }
        return 0;
 }
@@ -991,7 +995,7 @@ static struct pci_serial_quirk *find_qui
 }
 
 static _INLINE_ int
-get_pci_irq(struct pci_dev *dev, struct pciserial_board *board, int idx)
+get_pci_irq(struct pci_dev *dev, struct pciserial_board *board)
 {
        if (board->flags & FL_NOIRQ)
                return 0;
@@ -1649,6 +1653,7 @@ serial_pci_matches(struct pciserial_boar
 static int __devinit
 pciserial_init_one(struct pci_dev *dev, const struct pci_device_id *ent)
 {
+       struct uart_port serial_port;
        struct serial_private *priv;
        struct pciserial_board *board, tmp;
        struct pci_serial_quirk *quirk;
@@ -1731,17 +1736,16 @@ pciserial_init_one(struct pci_dev *dev, 
        priv->quirk = quirk;
        pci_set_drvdata(dev, priv);
 
-       for (i = 0; i < nr_ports; i++) {
-               struct uart_port serial_port;
-               memset(&serial_port, 0, sizeof(struct uart_port));
+       memset(&serial_port, 0, sizeof(struct uart_port));
+       serial_port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
+       serial_port.uartclk = board->base_baud * 16;
+       serial_port.irq = get_pci_irq(dev, board);
+       serial_port.dev = &dev->dev;
 
-               serial_port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF |
-                                   UPF_SHARE_IRQ;
-               serial_port.uartclk = board->base_baud * 16;
-               serial_port.irq = get_pci_irq(dev, board, i);
-               serial_port.dev = &dev->dev;
+       for (i = 0; i < nr_ports; i++) {
                if (quirk->setup(dev, board, &serial_port, i))
                        break;
+
 #ifdef SERIAL_DEBUG_PCI
                printk("Setup PCI port: port %x, irq %d, type %d\n",
                       serial_port.iobase, serial_port.irq, serial_port.iotype);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to