Commit 4c0ebb80 authored by André Goddard Rosa's avatar André Goddard Rosa Committed by Greg Kroah-Hartman

serial, 8250: calculate irqflags bitmask before loop

Signed-off-by: default avatarAndré Goddard Rosa <andre.goddard@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 82cb7ba1
...@@ -2646,7 +2646,7 @@ static void __init serial8250_isa_init_ports(void) ...@@ -2646,7 +2646,7 @@ static void __init serial8250_isa_init_ports(void)
{ {
struct uart_8250_port *up; struct uart_8250_port *up;
static int first = 1; static int first = 1;
int i; int i, irqflag = 0;
if (!first) if (!first)
return; return;
...@@ -2670,6 +2670,9 @@ static void __init serial8250_isa_init_ports(void) ...@@ -2670,6 +2670,9 @@ static void __init serial8250_isa_init_ports(void)
up->port.ops = &serial8250_pops; up->port.ops = &serial8250_pops;
} }
if (share_irqs)
irqflag = IRQF_SHARED;
for (i = 0, up = serial8250_ports; for (i = 0, up = serial8250_ports;
i < ARRAY_SIZE(old_serial_port) && i < nr_uarts; i < ARRAY_SIZE(old_serial_port) && i < nr_uarts;
i++, up++) { i++, up++) {
...@@ -2683,8 +2686,7 @@ static void __init serial8250_isa_init_ports(void) ...@@ -2683,8 +2686,7 @@ static void __init serial8250_isa_init_ports(void)
up->port.iotype = old_serial_port[i].io_type; up->port.iotype = old_serial_port[i].io_type;
up->port.regshift = old_serial_port[i].iomem_reg_shift; up->port.regshift = old_serial_port[i].iomem_reg_shift;
set_io_from_upio(&up->port); set_io_from_upio(&up->port);
if (share_irqs) up->port.irqflags |= irqflag;
up->port.irqflags |= IRQF_SHARED;
} }
} }
...@@ -2940,10 +2942,13 @@ static int __devinit serial8250_probe(struct platform_device *dev) ...@@ -2940,10 +2942,13 @@ static int __devinit serial8250_probe(struct platform_device *dev)
{ {
struct plat_serial8250_port *p = dev->dev.platform_data; struct plat_serial8250_port *p = dev->dev.platform_data;
struct uart_port port; struct uart_port port;
int ret, i; int ret, i, irqflag = 0;
memset(&port, 0, sizeof(struct uart_port)); memset(&port, 0, sizeof(struct uart_port));
if (share_irqs)
irqflag = IRQF_SHARED;
for (i = 0; p && p->flags != 0; p++, i++) { for (i = 0; p && p->flags != 0; p++, i++) {
port.iobase = p->iobase; port.iobase = p->iobase;
port.membase = p->membase; port.membase = p->membase;
...@@ -2960,8 +2965,7 @@ static int __devinit serial8250_probe(struct platform_device *dev) ...@@ -2960,8 +2965,7 @@ static int __devinit serial8250_probe(struct platform_device *dev)
port.serial_in = p->serial_in; port.serial_in = p->serial_in;
port.serial_out = p->serial_out; port.serial_out = p->serial_out;
port.dev = &dev->dev; port.dev = &dev->dev;
if (share_irqs) port.irqflags |= irqflag;
port.irqflags |= IRQF_SHARED;
ret = serial8250_register_port(&port); ret = serial8250_register_port(&port);
if (ret < 0) { if (ret < 0) {
dev_err(&dev->dev, "unable to register port at index %d " dev_err(&dev->dev, "unable to register port at index %d "
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment