Commit d2cfe962 authored by Peter Korsgaard's avatar Peter Korsgaard Committed by Live-CD User

uartlite: support shared interrupt lines

Adapt isr to work with shared interrupt lines.
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 054f2346
...@@ -154,17 +154,22 @@ static int ulite_transmit(struct uart_port *port, int stat) ...@@ -154,17 +154,22 @@ static int ulite_transmit(struct uart_port *port, int stat)
static irqreturn_t ulite_isr(int irq, void *dev_id) static irqreturn_t ulite_isr(int irq, void *dev_id)
{ {
struct uart_port *port = dev_id; struct uart_port *port = dev_id;
int busy; int busy, n = 0;
do { do {
int stat = readb(port->membase + ULITE_STATUS); int stat = readb(port->membase + ULITE_STATUS);
busy = ulite_receive(port, stat); busy = ulite_receive(port, stat);
busy |= ulite_transmit(port, stat); busy |= ulite_transmit(port, stat);
n++;
} while (busy); } while (busy);
/* work done? */
if (n > 1) {
tty_flip_buffer_push(port->state->port.tty); tty_flip_buffer_push(port->state->port.tty);
return IRQ_HANDLED; return IRQ_HANDLED;
} else {
return IRQ_NONE;
}
} }
static unsigned int ulite_tx_empty(struct uart_port *port) static unsigned int ulite_tx_empty(struct uart_port *port)
...@@ -221,7 +226,7 @@ static int ulite_startup(struct uart_port *port) ...@@ -221,7 +226,7 @@ static int ulite_startup(struct uart_port *port)
int ret; int ret;
ret = request_irq(port->irq, ulite_isr, ret = request_irq(port->irq, ulite_isr,
IRQF_DISABLED | IRQF_SAMPLE_RANDOM, "uartlite", port); IRQF_SHARED | IRQF_SAMPLE_RANDOM, "uartlite", port);
if (ret) if (ret)
return ret; return ret;
......
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