Skip to content

Commit

Permalink
serial: Kill off NO_IRQ
Browse files Browse the repository at this point in the history
We transform the offenders into a test of irq <= 0 which will be ok while
the ARM people get their platform sorted. Once that is done (or in a while
if they don't do it anyway) then we will change them all to !irq checks.

For arch specific drivers that are already using NO_IRQ = 0 we just test
against zero so we don't need to re-review them later.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Cox authored and Greg Kroah-Hartman committed Jan 27, 2012
1 parent 3afbd89 commit d4e33fa
Show file tree
Hide file tree
Showing 15 changed files with 30 additions and 44 deletions.
2 changes: 1 addition & 1 deletion drivers/tty/hvc/hvc_beat.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ static int __init hvc_beat_init(void)
if (!firmware_has_feature(FW_FEATURE_BEAT))
return -ENODEV;

hp = hvc_alloc(0, NO_IRQ, &hvc_beat_get_put_ops, 16);
hp = hvc_alloc(0, 0, &hvc_beat_get_put_ops, 16);
if (IS_ERR(hp))
return PTR_ERR(hp);
hvc_beat_dev = hp;
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/hvc/hvc_rtas.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static int __init hvc_rtas_init(void)

/* Allocate an hvc_struct for the console device we instantiated
* earlier. Save off hp so that we can return it on exit */
hp = hvc_alloc(hvc_rtas_cookie, NO_IRQ, &hvc_rtas_get_put_ops, 16);
hp = hvc_alloc(hvc_rtas_cookie, 0, &hvc_rtas_get_put_ops, 16);
if (IS_ERR(hp))
return PTR_ERR(hp);

Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/hvc/hvc_udbg.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ static int __init hvc_udbg_init(void)

BUG_ON(hvc_udbg_dev);

hp = hvc_alloc(0, NO_IRQ, &hvc_udbg_ops, 16);
hp = hvc_alloc(0, 0, &hvc_udbg_ops, 16);
if (IS_ERR(hp))
return PTR_ERR(hp);

Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/hvc/hvc_xen.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ static int __init xen_hvc_init(void)
xencons_irq = bind_evtchn_to_irq(xen_start_info->console.domU.evtchn);
}
if (xencons_irq < 0)
xencons_irq = 0; /* NO_IRQ */
xencons_irq = 0;
else
irq_set_noprobe(xencons_irq);

Expand Down
4 changes: 2 additions & 2 deletions drivers/tty/hvc/hvcs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1203,7 +1203,7 @@ static void hvcs_close(struct tty_struct *tty, struct file *filp)
{
struct hvcs_struct *hvcsd;
unsigned long flags;
int irq = NO_IRQ;
int irq;

/*
* Is someone trying to close the file associated with this device after
Expand Down Expand Up @@ -1264,7 +1264,7 @@ static void hvcs_hangup(struct tty_struct * tty)
struct hvcs_struct *hvcsd = tty->driver_data;
unsigned long flags;
int temp_open_count;
int irq = NO_IRQ;
int irq;

spin_lock_irqsave(&hvcsd->lock, flags);
/* Preserve this so that we know how many kref refs to put */
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/hvc/hvsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1237,7 +1237,7 @@ static int __init hvsi_console_init(void)
hp->state = HVSI_CLOSED;
hp->vtermno = *vtermno;
hp->virq = irq_create_mapping(NULL, irq[0]);
if (hp->virq == NO_IRQ) {
if (hp->virq == 0) {
printk(KERN_ERR "%s: couldn't create irq mapping for 0x%x\n",
__func__, irq[0]);
continue;
Expand Down
4 changes: 2 additions & 2 deletions drivers/tty/serial/21285.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ static int serial21285_verify_port(struct uart_port *port, struct serial_struct
int ret = 0;
if (ser->type != PORT_UNKNOWN && ser->type != PORT_21285)
ret = -EINVAL;
if (ser->irq != NO_IRQ)
if (ser->irq <= 0)
ret = -EINVAL;
if (ser->baud_base != port->uartclk / 16)
ret = -EINVAL;
Expand Down Expand Up @@ -360,7 +360,7 @@ static struct uart_ops serial21285_ops = {
static struct uart_port serial21285_port = {
.mapbase = 0x42000160,
.iotype = UPIO_MEM,
.irq = NO_IRQ,
.irq = 0,
.fifosize = 16,
.ops = &serial21285_ops,
.flags = UPF_BOOT_AUTOCONF,
Expand Down
21 changes: 7 additions & 14 deletions drivers/tty/serial/8250.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,6 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)


/*
* We default to IRQ0 for the "no irq" hack. Some
* machine types want others as well - they're free
* to redefine this in their header file.
*/
#define is_real_interrupt(irq) ((irq) != 0)

#ifdef CONFIG_SERIAL_8250_DETECT_IRQ
#define CONFIG_SERIAL_DETECT_IRQ 1
#endif
Expand Down Expand Up @@ -1750,7 +1743,7 @@ static void serial8250_backup_timeout(unsigned long data)
* Must disable interrupts or else we risk racing with the interrupt
* based handler.
*/
if (is_real_interrupt(up->port.irq)) {
if (up->port.irq) {
ier = serial_in(up, UART_IER);
serial_out(up, UART_IER, 0);
}
Expand All @@ -1775,7 +1768,7 @@ static void serial8250_backup_timeout(unsigned long data)
if (!(iir & UART_IIR_NO_INT))
serial8250_tx_chars(up);

if (is_real_interrupt(up->port.irq))
if (up->port.irq)
serial_out(up, UART_IER, ier);

spin_unlock_irqrestore(&up->port.lock, flags);
Expand Down Expand Up @@ -2028,7 +2021,7 @@ static int serial8250_startup(struct uart_port *port)
serial_outp(up, UART_LCR, 0);
}

if (is_real_interrupt(up->port.irq)) {
if (up->port.irq) {
unsigned char iir1;
/*
* Test for UARTs that do not reassert THRE when the
Expand Down Expand Up @@ -2083,7 +2076,7 @@ static int serial8250_startup(struct uart_port *port)
* hardware interrupt, we use a timer-based system. The original
* driver used to do this with IRQ0.
*/
if (!is_real_interrupt(up->port.irq)) {
if (!up->port.irq) {
up->timer.data = (unsigned long)up;
mod_timer(&up->timer, jiffies + uart_poll_timeout(port));
} else {
Expand All @@ -2099,13 +2092,13 @@ static int serial8250_startup(struct uart_port *port)

spin_lock_irqsave(&up->port.lock, flags);
if (up->port.flags & UPF_FOURPORT) {
if (!is_real_interrupt(up->port.irq))
if (!up->port.irq)
up->port.mctrl |= TIOCM_OUT1;
} else
/*
* Most PC uarts need OUT2 raised to enable interrupts.
*/
if (is_real_interrupt(up->port.irq))
if (up->port.irq)
up->port.mctrl |= TIOCM_OUT2;

serial8250_set_mctrl(&up->port, up->port.mctrl);
Expand Down Expand Up @@ -2223,7 +2216,7 @@ static void serial8250_shutdown(struct uart_port *port)

del_timer_sync(&up->timer);
up->timer.function = serial8250_timeout;
if (is_real_interrupt(up->port.irq))
if (up->port.irq)
serial_unlink_irq_chain(up);
}

Expand Down
11 changes: 2 additions & 9 deletions drivers/tty/serial/m32r_sio.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,6 @@

#define PASS_LIMIT 256

/*
* We default to IRQ0 for the "no irq" hack. Some
* machine types want others as well - they're free
* to redefine this in their header file.
*/
#define is_real_interrupt(irq) ((irq) != 0)

#define BASE_BAUD 115200

/* Standard COM flags */
Expand Down Expand Up @@ -640,7 +633,7 @@ static int m32r_sio_startup(struct uart_port *port)
* hardware interrupt, we use a timer-based system. The original
* driver used to do this with IRQ0.
*/
if (!is_real_interrupt(up->port.irq)) {
if (!up->port.irq) {
unsigned int timeout = up->port.timeout;

timeout = timeout > 6 ? (timeout / 2 - 2) : 1;
Expand Down Expand Up @@ -687,7 +680,7 @@ static void m32r_sio_shutdown(struct uart_port *port)

sio_init();

if (!is_real_interrupt(up->port.irq))
if (!up->port.irq)
del_timer_sync(&up->timer);
else
serial_unlink_irq_chain(up);
Expand Down
4 changes: 2 additions & 2 deletions drivers/tty/serial/mpc52xx_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ static int __init mpc512x_psc_fifoc_init(void)

psc_fifoc_irq = irq_of_parse_and_map(np, 0);
of_node_put(np);
if (psc_fifoc_irq == NO_IRQ) {
if (psc_fifoc_irq == 0) {
pr_err("%s: Can't get FIFOC irq\n", __func__);
iounmap(psc_fifoc);
return -ENODEV;
Expand Down Expand Up @@ -1354,7 +1354,7 @@ static int __devinit mpc52xx_uart_of_probe(struct platform_device *op)
}

psc_ops->get_irq(port, op->dev.of_node);
if (port->irq == NO_IRQ) {
if (port->irq == 0) {
dev_dbg(&op->dev, "Could not get irq\n");
return -EINVAL;
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/serial/mux.c
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,7 @@ static int __init mux_probe(struct parisc_device *dev)
port->membase = ioremap_nocache(port->mapbase, MUX_LINE_OFFSET);
port->iotype = UPIO_MEM;
port->type = PORT_MUX;
port->irq = NO_IRQ;
port->irq = 0;
port->uartclk = 0;
port->fifosize = MUX_FIFO_SIZE;
port->ops = &mux_pops;
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/serial/pmac_zilog.c
Original file line number Diff line number Diff line change
Expand Up @@ -1506,7 +1506,7 @@ static int __init pmz_init_port(struct uart_pmac_port *uap)
* fixed up interrupt info, but we use the device-tree directly
* here due to early probing so we need the fixup too.
*/
if (uap->port.irq == NO_IRQ &&
if (uap->port.irq == 0 &&
np->parent && np->parent->parent &&
of_device_is_compatible(np->parent->parent, "gatwick")) {
/* IRQs on gatwick are offset by 64 */
Expand Down
10 changes: 5 additions & 5 deletions drivers/tty/serial/sunzilog.c
Original file line number Diff line number Diff line change
Expand Up @@ -1397,7 +1397,7 @@ static void __devinit sunzilog_init_hw(struct uart_sunzilog_port *up)
#endif
}

static int zilog_irq = -1;
static int zilog_irq;

static int __devinit zs_probe(struct platform_device *op)
{
Expand Down Expand Up @@ -1425,7 +1425,7 @@ static int __devinit zs_probe(struct platform_device *op)

rp = sunzilog_chip_regs[inst];

if (zilog_irq == -1)
if (!zilog_irq)
zilog_irq = op->archdata.irqs[0];

up = &sunzilog_port_table[inst * 2];
Expand Down Expand Up @@ -1580,7 +1580,7 @@ static int __init sunzilog_init(void)
if (err)
goto out_unregister_uart;

if (zilog_irq != -1) {
if (!zilog_irq) {
struct uart_sunzilog_port *up = sunzilog_irq_chain;
err = request_irq(zilog_irq, sunzilog_interrupt, IRQF_SHARED,
"zs", sunzilog_irq_chain);
Expand Down Expand Up @@ -1621,7 +1621,7 @@ static void __exit sunzilog_exit(void)
{
platform_driver_unregister(&zs_driver);

if (zilog_irq != -1) {
if (!zilog_irq) {
struct uart_sunzilog_port *up = sunzilog_irq_chain;

/* Disable Interrupts */
Expand All @@ -1637,7 +1637,7 @@ static void __exit sunzilog_exit(void)
}

free_irq(zilog_irq, sunzilog_irq_chain);
zilog_irq = -1;
zilog_irq = 0;
}

if (sunzilog_reg.nr) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/serial/ucc_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -1360,7 +1360,7 @@ static int ucc_uart_probe(struct platform_device *ofdev)
}

qe_port->port.irq = irq_of_parse_and_map(np, 0);
if (qe_port->port.irq == NO_IRQ) {
if (qe_port->port.irq == 0) {
dev_err(&ofdev->dev, "could not map IRQ for UCC%u\n",
qe_port->ucc_num + 1);
ret = -EINVAL;
Expand Down
4 changes: 2 additions & 2 deletions drivers/tty/serial/vr41xx_siu.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
static struct uart_port siu_uart_ports[SIU_PORTS_MAX] = {
[0 ... SIU_PORTS_MAX-1] = {
.lock = __SPIN_LOCK_UNLOCKED(siu_uart_ports->lock),
.irq = -1,
.irq = 0,
},
};

Expand Down Expand Up @@ -171,7 +171,7 @@ static inline unsigned int siu_check_type(struct uart_port *port)
{
if (port->line == 0)
return PORT_VR41XX_SIU;
if (port->line == 1 && port->irq != -1)
if (port->line == 1 && port->irq)
return PORT_VR41XX_DSIU;

return PORT_UNKNOWN;
Expand Down

0 comments on commit d4e33fa

Please sign in to comment.