diff options
Diffstat (limited to 'drivers/serial')
37 files changed, 165 insertions, 215 deletions
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c index 76d83ade9857..6a1a568ca649 100644 --- a/drivers/serial/21285.c +++ b/drivers/serial/21285.c | |||
@@ -85,7 +85,7 @@ static void serial21285_enable_ms(struct uart_port *port) | |||
85 | { | 85 | { |
86 | } | 86 | } |
87 | 87 | ||
88 | static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs) | 88 | static irqreturn_t serial21285_rx_chars(int irq, void *dev_id) |
89 | { | 89 | { |
90 | struct uart_port *port = dev_id; | 90 | struct uart_port *port = dev_id; |
91 | struct tty_struct *tty = port->info->tty; | 91 | struct tty_struct *tty = port->info->tty; |
@@ -123,7 +123,7 @@ static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *r | |||
123 | return IRQ_HANDLED; | 123 | return IRQ_HANDLED; |
124 | } | 124 | } |
125 | 125 | ||
126 | static irqreturn_t serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs) | 126 | static irqreturn_t serial21285_tx_chars(int irq, void *dev_id) |
127 | { | 127 | { |
128 | struct uart_port *port = dev_id; | 128 | struct uart_port *port = dev_id; |
129 | struct circ_buf *xmit = &port->info->xmit; | 129 | struct circ_buf *xmit = &port->info->xmit; |
diff --git a/drivers/serial/68328serial.c b/drivers/serial/68328serial.c index bac853c5abb5..9b8b585513ec 100644 --- a/drivers/serial/68328serial.c +++ b/drivers/serial/68328serial.c | |||
@@ -275,8 +275,7 @@ static void status_handle(struct m68k_serial *info, unsigned short status) | |||
275 | return; | 275 | return; |
276 | } | 276 | } |
277 | 277 | ||
278 | static void receive_chars(struct m68k_serial *info, struct pt_regs *regs, | 278 | static void receive_chars(struct m68k_serial *info, unsigned short rx) |
279 | unsigned short rx) | ||
280 | { | 279 | { |
281 | struct tty_struct *tty = info->tty; | 280 | struct tty_struct *tty = info->tty; |
282 | m68328_uart *uart = &uart_addr[info->line]; | 281 | m68328_uart *uart = &uart_addr[info->line]; |
@@ -377,7 +376,7 @@ clear_and_return: | |||
377 | /* | 376 | /* |
378 | * This is the serial driver's generic interrupt routine | 377 | * This is the serial driver's generic interrupt routine |
379 | */ | 378 | */ |
380 | irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs) | 379 | irqreturn_t rs_interrupt(int irq, void *dev_id) |
381 | { | 380 | { |
382 | struct m68k_serial * info; | 381 | struct m68k_serial * info; |
383 | m68328_uart *uart; | 382 | m68328_uart *uart; |
@@ -394,10 +393,10 @@ irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
394 | #ifdef USE_INTS | 393 | #ifdef USE_INTS |
395 | tx = uart->utx.w; | 394 | tx = uart->utx.w; |
396 | 395 | ||
397 | if (rx & URX_DATA_READY) receive_chars(info, regs, rx); | 396 | if (rx & URX_DATA_READY) receive_chars(info, rx); |
398 | if (tx & UTX_TX_AVAIL) transmit_chars(info); | 397 | if (tx & UTX_TX_AVAIL) transmit_chars(info); |
399 | #else | 398 | #else |
400 | receive_chars(info, regs, rx); | 399 | receive_chars(info, rx); |
401 | #endif | 400 | #endif |
402 | return IRQ_HANDLED; | 401 | return IRQ_HANDLED; |
403 | } | 402 | } |
diff --git a/drivers/serial/68360serial.c b/drivers/serial/68360serial.c index 1b299e8c57cd..4e56ec803861 100644 --- a/drivers/serial/68360serial.c +++ b/drivers/serial/68360serial.c | |||
@@ -612,7 +612,7 @@ static _INLINE_ void check_modem_status(struct async_struct *info) | |||
612 | * This is the serial driver's interrupt routine for a single port | 612 | * This is the serial driver's interrupt routine for a single port |
613 | */ | 613 | */ |
614 | /* static void rs_360_interrupt(void *dev_id) */ /* until and if we start servicing irqs here */ | 614 | /* static void rs_360_interrupt(void *dev_id) */ /* until and if we start servicing irqs here */ |
615 | static void rs_360_interrupt(int vec, void *dev_id, struct pt_regs *fp) | 615 | static void rs_360_interrupt(int vec, void *dev_id) |
616 | { | 616 | { |
617 | u_char events; | 617 | u_char events; |
618 | int idx; | 618 | int idx; |
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index cc2a205d4230..e34bd03cfce7 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
@@ -1175,7 +1175,7 @@ static void serial8250_enable_ms(struct uart_port *port) | |||
1175 | } | 1175 | } |
1176 | 1176 | ||
1177 | static void | 1177 | static void |
1178 | receive_chars(struct uart_8250_port *up, int *status, struct pt_regs *regs) | 1178 | receive_chars(struct uart_8250_port *up, int *status) |
1179 | { | 1179 | { |
1180 | struct tty_struct *tty = up->port.info->tty; | 1180 | struct tty_struct *tty = up->port.info->tty; |
1181 | unsigned char ch, lsr = *status; | 1181 | unsigned char ch, lsr = *status; |
@@ -1233,7 +1233,7 @@ receive_chars(struct uart_8250_port *up, int *status, struct pt_regs *regs) | |||
1233 | else if (lsr & UART_LSR_FE) | 1233 | else if (lsr & UART_LSR_FE) |
1234 | flag = TTY_FRAME; | 1234 | flag = TTY_FRAME; |
1235 | } | 1235 | } |
1236 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 1236 | if (uart_handle_sysrq_char(&up->port, ch)) |
1237 | goto ignore_char; | 1237 | goto ignore_char; |
1238 | 1238 | ||
1239 | uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag); | 1239 | uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag); |
@@ -1309,7 +1309,7 @@ static unsigned int check_modem_status(struct uart_8250_port *up) | |||
1309 | * This handles the interrupt from one port. | 1309 | * This handles the interrupt from one port. |
1310 | */ | 1310 | */ |
1311 | static inline void | 1311 | static inline void |
1312 | serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs) | 1312 | serial8250_handle_port(struct uart_8250_port *up) |
1313 | { | 1313 | { |
1314 | unsigned int status; | 1314 | unsigned int status; |
1315 | 1315 | ||
@@ -1320,7 +1320,7 @@ serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs) | |||
1320 | DEBUG_INTR("status = %x...", status); | 1320 | DEBUG_INTR("status = %x...", status); |
1321 | 1321 | ||
1322 | if (status & UART_LSR_DR) | 1322 | if (status & UART_LSR_DR) |
1323 | receive_chars(up, &status, regs); | 1323 | receive_chars(up, &status); |
1324 | check_modem_status(up); | 1324 | check_modem_status(up); |
1325 | if (status & UART_LSR_THRE) | 1325 | if (status & UART_LSR_THRE) |
1326 | transmit_chars(up); | 1326 | transmit_chars(up); |
@@ -1342,7 +1342,7 @@ serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs) | |||
1342 | * This means we need to loop through all ports. checking that they | 1342 | * This means we need to loop through all ports. checking that they |
1343 | * don't have an interrupt pending. | 1343 | * don't have an interrupt pending. |
1344 | */ | 1344 | */ |
1345 | static irqreturn_t serial8250_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 1345 | static irqreturn_t serial8250_interrupt(int irq, void *dev_id) |
1346 | { | 1346 | { |
1347 | struct irq_info *i = dev_id; | 1347 | struct irq_info *i = dev_id; |
1348 | struct list_head *l, *end = NULL; | 1348 | struct list_head *l, *end = NULL; |
@@ -1361,7 +1361,7 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id, struct pt_regs *r | |||
1361 | 1361 | ||
1362 | iir = serial_in(up, UART_IIR); | 1362 | iir = serial_in(up, UART_IIR); |
1363 | if (!(iir & UART_IIR_NO_INT)) { | 1363 | if (!(iir & UART_IIR_NO_INT)) { |
1364 | serial8250_handle_port(up, regs); | 1364 | serial8250_handle_port(up); |
1365 | 1365 | ||
1366 | handled = 1; | 1366 | handled = 1; |
1367 | 1367 | ||
@@ -1461,7 +1461,7 @@ static void serial8250_timeout(unsigned long data) | |||
1461 | 1461 | ||
1462 | iir = serial_in(up, UART_IIR); | 1462 | iir = serial_in(up, UART_IIR); |
1463 | if (!(iir & UART_IIR_NO_INT)) | 1463 | if (!(iir & UART_IIR_NO_INT)) |
1464 | serial8250_handle_port(up, NULL); | 1464 | serial8250_handle_port(up); |
1465 | 1465 | ||
1466 | timeout = up->port.timeout; | 1466 | timeout = up->port.timeout; |
1467 | timeout = timeout > 6 ? (timeout / 2 - 2) : 1; | 1467 | timeout = timeout > 6 ? (timeout / 2 - 2) : 1; |
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c index 7311d8487c96..4213fabc62bf 100644 --- a/drivers/serial/amba-pl010.c +++ b/drivers/serial/amba-pl010.c | |||
@@ -111,12 +111,7 @@ static void pl010_enable_ms(struct uart_port *port) | |||
111 | writel(cr, port->membase + UART010_CR); | 111 | writel(cr, port->membase + UART010_CR); |
112 | } | 112 | } |
113 | 113 | ||
114 | static void | 114 | static void pl010_rx_chars(struct uart_port *port) |
115 | #ifdef SUPPORT_SYSRQ | ||
116 | pl010_rx_chars(struct uart_port *port, struct pt_regs *regs) | ||
117 | #else | ||
118 | pl010_rx_chars(struct uart_port *port) | ||
119 | #endif | ||
120 | { | 115 | { |
121 | struct tty_struct *tty = port->info->tty; | 116 | struct tty_struct *tty = port->info->tty; |
122 | unsigned int status, ch, flag, rsr, max_count = 256; | 117 | unsigned int status, ch, flag, rsr, max_count = 256; |
@@ -156,7 +151,7 @@ pl010_rx_chars(struct uart_port *port) | |||
156 | flag = TTY_FRAME; | 151 | flag = TTY_FRAME; |
157 | } | 152 | } |
158 | 153 | ||
159 | if (uart_handle_sysrq_char(port, ch, regs)) | 154 | if (uart_handle_sysrq_char(port, ch)) |
160 | goto ignore_char; | 155 | goto ignore_char; |
161 | 156 | ||
162 | uart_insert_char(port, rsr, UART01x_RSR_OE, ch, flag); | 157 | uart_insert_char(port, rsr, UART01x_RSR_OE, ch, flag); |
@@ -227,7 +222,7 @@ static void pl010_modem_status(struct uart_port *port) | |||
227 | wake_up_interruptible(&uap->port.info->delta_msr_wait); | 222 | wake_up_interruptible(&uap->port.info->delta_msr_wait); |
228 | } | 223 | } |
229 | 224 | ||
230 | static irqreturn_t pl010_int(int irq, void *dev_id, struct pt_regs *regs) | 225 | static irqreturn_t pl010_int(int irq, void *dev_id) |
231 | { | 226 | { |
232 | struct uart_port *port = dev_id; | 227 | struct uart_port *port = dev_id; |
233 | unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; | 228 | unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; |
@@ -239,11 +234,7 @@ static irqreturn_t pl010_int(int irq, void *dev_id, struct pt_regs *regs) | |||
239 | if (status) { | 234 | if (status) { |
240 | do { | 235 | do { |
241 | if (status & (UART010_IIR_RTIS | UART010_IIR_RIS)) | 236 | if (status & (UART010_IIR_RTIS | UART010_IIR_RIS)) |
242 | #ifdef SUPPORT_SYSRQ | ||
243 | pl010_rx_chars(port, regs); | ||
244 | #else | ||
245 | pl010_rx_chars(port); | 237 | pl010_rx_chars(port); |
246 | #endif | ||
247 | if (status & UART010_IIR_MIS) | 238 | if (status & UART010_IIR_MIS) |
248 | pl010_modem_status(port); | 239 | pl010_modem_status(port); |
249 | if (status & UART010_IIR_TIS) | 240 | if (status & UART010_IIR_TIS) |
diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c index a8d7124e84a1..d503625730df 100644 --- a/drivers/serial/amba-pl011.c +++ b/drivers/serial/amba-pl011.c | |||
@@ -107,12 +107,7 @@ static void pl011_enable_ms(struct uart_port *port) | |||
107 | writew(uap->im, uap->port.membase + UART011_IMSC); | 107 | writew(uap->im, uap->port.membase + UART011_IMSC); |
108 | } | 108 | } |
109 | 109 | ||
110 | static void | 110 | static void pl011_rx_chars(struct uart_amba_port *uap) |
111 | #ifdef SUPPORT_SYSRQ | ||
112 | pl011_rx_chars(struct uart_amba_port *uap, struct pt_regs *regs) | ||
113 | #else | ||
114 | pl011_rx_chars(struct uart_amba_port *uap) | ||
115 | #endif | ||
116 | { | 111 | { |
117 | struct tty_struct *tty = uap->port.info->tty; | 112 | struct tty_struct *tty = uap->port.info->tty; |
118 | unsigned int status, ch, flag, max_count = 256; | 113 | unsigned int status, ch, flag, max_count = 256; |
@@ -150,7 +145,7 @@ pl011_rx_chars(struct uart_amba_port *uap) | |||
150 | flag = TTY_FRAME; | 145 | flag = TTY_FRAME; |
151 | } | 146 | } |
152 | 147 | ||
153 | if (uart_handle_sysrq_char(&uap->port, ch & 255, regs)) | 148 | if (uart_handle_sysrq_char(&uap->port, ch & 255)) |
154 | goto ignore_char; | 149 | goto ignore_char; |
155 | 150 | ||
156 | uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); | 151 | uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); |
@@ -218,7 +213,7 @@ static void pl011_modem_status(struct uart_amba_port *uap) | |||
218 | wake_up_interruptible(&uap->port.info->delta_msr_wait); | 213 | wake_up_interruptible(&uap->port.info->delta_msr_wait); |
219 | } | 214 | } |
220 | 215 | ||
221 | static irqreturn_t pl011_int(int irq, void *dev_id, struct pt_regs *regs) | 216 | static irqreturn_t pl011_int(int irq, void *dev_id) |
222 | { | 217 | { |
223 | struct uart_amba_port *uap = dev_id; | 218 | struct uart_amba_port *uap = dev_id; |
224 | unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; | 219 | unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; |
@@ -234,11 +229,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id, struct pt_regs *regs) | |||
234 | uap->port.membase + UART011_ICR); | 229 | uap->port.membase + UART011_ICR); |
235 | 230 | ||
236 | if (status & (UART011_RTIS|UART011_RXIS)) | 231 | if (status & (UART011_RTIS|UART011_RXIS)) |
237 | #ifdef SUPPORT_SYSRQ | ||
238 | pl011_rx_chars(uap, regs); | ||
239 | #else | ||
240 | pl011_rx_chars(uap); | 232 | pl011_rx_chars(uap); |
241 | #endif | ||
242 | if (status & (UART011_DSRMIS|UART011_DCDMIS| | 233 | if (status & (UART011_DSRMIS|UART011_DCDMIS| |
243 | UART011_CTSMIS|UART011_RIMIS)) | 234 | UART011_CTSMIS|UART011_RIMIS)) |
244 | pl011_modem_status(uap); | 235 | pl011_modem_status(uap); |
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index 955c46da5800..391a1f4167a4 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
@@ -249,7 +249,7 @@ static void atmel_break_ctl(struct uart_port *port, int break_state) | |||
249 | /* | 249 | /* |
250 | * Characters received (called from interrupt handler) | 250 | * Characters received (called from interrupt handler) |
251 | */ | 251 | */ |
252 | static void atmel_rx_chars(struct uart_port *port, struct pt_regs *regs) | 252 | static void atmel_rx_chars(struct uart_port *port) |
253 | { | 253 | { |
254 | struct tty_struct *tty = port->info->tty; | 254 | struct tty_struct *tty = port->info->tty; |
255 | unsigned int status, ch, flg; | 255 | unsigned int status, ch, flg; |
@@ -291,7 +291,7 @@ static void atmel_rx_chars(struct uart_port *port, struct pt_regs *regs) | |||
291 | flg = TTY_FRAME; | 291 | flg = TTY_FRAME; |
292 | } | 292 | } |
293 | 293 | ||
294 | if (uart_handle_sysrq_char(port, ch, regs)) | 294 | if (uart_handle_sysrq_char(port, ch)) |
295 | goto ignore_char; | 295 | goto ignore_char; |
296 | 296 | ||
297 | uart_insert_char(port, status, ATMEL_US_OVRE, ch, flg); | 297 | uart_insert_char(port, status, ATMEL_US_OVRE, ch, flg); |
@@ -339,7 +339,7 @@ static void atmel_tx_chars(struct uart_port *port) | |||
339 | /* | 339 | /* |
340 | * Interrupt handler | 340 | * Interrupt handler |
341 | */ | 341 | */ |
342 | static irqreturn_t atmel_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 342 | static irqreturn_t atmel_interrupt(int irq, void *dev_id) |
343 | { | 343 | { |
344 | struct uart_port *port = dev_id; | 344 | struct uart_port *port = dev_id; |
345 | struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port; | 345 | struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port; |
@@ -350,7 +350,7 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
350 | while (pending) { | 350 | while (pending) { |
351 | /* Interrupt receive */ | 351 | /* Interrupt receive */ |
352 | if (pending & ATMEL_US_RXRDY) | 352 | if (pending & ATMEL_US_RXRDY) |
353 | atmel_rx_chars(port, regs); | 353 | atmel_rx_chars(port); |
354 | 354 | ||
355 | // TODO: All reads to CSR will clear these interrupts! | 355 | // TODO: All reads to CSR will clear these interrupts! |
356 | if (pending & ATMEL_US_RIIC) port->icount.rng++; | 356 | if (pending & ATMEL_US_RIIC) port->icount.rng++; |
diff --git a/drivers/serial/clps711x.c b/drivers/serial/clps711x.c index f27d852ce50d..598012714882 100644 --- a/drivers/serial/clps711x.c +++ b/drivers/serial/clps711x.c | |||
@@ -93,7 +93,7 @@ static void clps711xuart_enable_ms(struct uart_port *port) | |||
93 | { | 93 | { |
94 | } | 94 | } |
95 | 95 | ||
96 | static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) | 96 | static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id) |
97 | { | 97 | { |
98 | struct uart_port *port = dev_id; | 98 | struct uart_port *port = dev_id; |
99 | struct tty_struct *tty = port->info->tty; | 99 | struct tty_struct *tty = port->info->tty; |
@@ -131,7 +131,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re | |||
131 | #endif | 131 | #endif |
132 | } | 132 | } |
133 | 133 | ||
134 | if (uart_handle_sysrq_char(port, ch, regs)) | 134 | if (uart_handle_sysrq_char(port, ch)) |
135 | goto ignore_char; | 135 | goto ignore_char; |
136 | 136 | ||
137 | /* | 137 | /* |
@@ -147,7 +147,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re | |||
147 | return IRQ_HANDLED; | 147 | return IRQ_HANDLED; |
148 | } | 148 | } |
149 | 149 | ||
150 | static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) | 150 | static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id) |
151 | { | 151 | { |
152 | struct uart_port *port = dev_id; | 152 | struct uart_port *port = dev_id; |
153 | struct circ_buf *xmit = &port->info->xmit; | 153 | struct circ_buf *xmit = &port->info->xmit; |
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c index a0d6136deb9b..0abb544ae63d 100644 --- a/drivers/serial/cpm_uart/cpm_uart_core.c +++ b/drivers/serial/cpm_uart/cpm_uart_core.c | |||
@@ -248,7 +248,7 @@ static void cpm_uart_break_ctl(struct uart_port *port, int break_state) | |||
248 | /* | 248 | /* |
249 | * Transmit characters, refill buffer descriptor, if possible | 249 | * Transmit characters, refill buffer descriptor, if possible |
250 | */ | 250 | */ |
251 | static void cpm_uart_int_tx(struct uart_port *port, struct pt_regs *regs) | 251 | static void cpm_uart_int_tx(struct uart_port *port) |
252 | { | 252 | { |
253 | pr_debug("CPM uart[%d]:TX INT\n", port->line); | 253 | pr_debug("CPM uart[%d]:TX INT\n", port->line); |
254 | 254 | ||
@@ -258,7 +258,7 @@ static void cpm_uart_int_tx(struct uart_port *port, struct pt_regs *regs) | |||
258 | /* | 258 | /* |
259 | * Receive characters | 259 | * Receive characters |
260 | */ | 260 | */ |
261 | static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs) | 261 | static void cpm_uart_int_rx(struct uart_port *port) |
262 | { | 262 | { |
263 | int i; | 263 | int i; |
264 | unsigned char ch, *cp; | 264 | unsigned char ch, *cp; |
@@ -304,7 +304,7 @@ static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs) | |||
304 | if (status & | 304 | if (status & |
305 | (BD_SC_BR | BD_SC_FR | BD_SC_PR | BD_SC_OV)) | 305 | (BD_SC_BR | BD_SC_FR | BD_SC_PR | BD_SC_OV)) |
306 | goto handle_error; | 306 | goto handle_error; |
307 | if (uart_handle_sysrq_char(port, ch, regs)) | 307 | if (uart_handle_sysrq_char(port, ch)) |
308 | continue; | 308 | continue; |
309 | 309 | ||
310 | error_return: | 310 | error_return: |
@@ -373,7 +373,7 @@ static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs) | |||
373 | /* | 373 | /* |
374 | * Asynchron mode interrupt handler | 374 | * Asynchron mode interrupt handler |
375 | */ | 375 | */ |
376 | static irqreturn_t cpm_uart_int(int irq, void *data, struct pt_regs *regs) | 376 | static irqreturn_t cpm_uart_int(int irq, void *data) |
377 | { | 377 | { |
378 | u8 events; | 378 | u8 events; |
379 | struct uart_port *port = (struct uart_port *)data; | 379 | struct uart_port *port = (struct uart_port *)data; |
@@ -389,18 +389,18 @@ static irqreturn_t cpm_uart_int(int irq, void *data, struct pt_regs *regs) | |||
389 | if (events & SMCM_BRKE) | 389 | if (events & SMCM_BRKE) |
390 | uart_handle_break(port); | 390 | uart_handle_break(port); |
391 | if (events & SMCM_RX) | 391 | if (events & SMCM_RX) |
392 | cpm_uart_int_rx(port, regs); | 392 | cpm_uart_int_rx(port); |
393 | if (events & SMCM_TX) | 393 | if (events & SMCM_TX) |
394 | cpm_uart_int_tx(port, regs); | 394 | cpm_uart_int_tx(port); |
395 | } else { | 395 | } else { |
396 | events = sccp->scc_scce; | 396 | events = sccp->scc_scce; |
397 | sccp->scc_scce = events; | 397 | sccp->scc_scce = events; |
398 | if (events & UART_SCCM_BRKE) | 398 | if (events & UART_SCCM_BRKE) |
399 | uart_handle_break(port); | 399 | uart_handle_break(port); |
400 | if (events & UART_SCCM_RX) | 400 | if (events & UART_SCCM_RX) |
401 | cpm_uart_int_rx(port, regs); | 401 | cpm_uart_int_rx(port); |
402 | if (events & UART_SCCM_TX) | 402 | if (events & UART_SCCM_TX) |
403 | cpm_uart_int_tx(port, regs); | 403 | cpm_uart_int_tx(port); |
404 | } | 404 | } |
405 | return (events) ? IRQ_HANDLED : IRQ_NONE; | 405 | return (events) ? IRQ_HANDLED : IRQ_NONE; |
406 | } | 406 | } |
diff --git a/drivers/serial/crisv10.c b/drivers/serial/crisv10.c index 9851d9eff022..7a24e53546c7 100644 --- a/drivers/serial/crisv10.c +++ b/drivers/serial/crisv10.c | |||
@@ -2346,7 +2346,7 @@ start_receive(struct e100_serial *info) | |||
2346 | */ | 2346 | */ |
2347 | 2347 | ||
2348 | static irqreturn_t | 2348 | static irqreturn_t |
2349 | tr_interrupt(int irq, void *dev_id, struct pt_regs * regs) | 2349 | tr_interrupt(int irq, void *dev_id) |
2350 | { | 2350 | { |
2351 | struct e100_serial *info; | 2351 | struct e100_serial *info; |
2352 | unsigned long ireg; | 2352 | unsigned long ireg; |
@@ -2395,7 +2395,7 @@ tr_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
2395 | /* dma input channel interrupt handler */ | 2395 | /* dma input channel interrupt handler */ |
2396 | 2396 | ||
2397 | static irqreturn_t | 2397 | static irqreturn_t |
2398 | rec_interrupt(int irq, void *dev_id, struct pt_regs * regs) | 2398 | rec_interrupt(int irq, void *dev_id) |
2399 | { | 2399 | { |
2400 | struct e100_serial *info; | 2400 | struct e100_serial *info; |
2401 | unsigned long ireg; | 2401 | unsigned long ireg; |
@@ -3054,7 +3054,7 @@ static void handle_ser_tx_interrupt(struct e100_serial *info) | |||
3054 | * ser_int duration: just sending: 8-15 us normally, up to 73 us | 3054 | * ser_int duration: just sending: 8-15 us normally, up to 73 us |
3055 | */ | 3055 | */ |
3056 | static irqreturn_t | 3056 | static irqreturn_t |
3057 | ser_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 3057 | ser_interrupt(int irq, void *dev_id) |
3058 | { | 3058 | { |
3059 | static volatile int tx_started = 0; | 3059 | static volatile int tx_started = 0; |
3060 | struct e100_serial *info; | 3060 | struct e100_serial *info; |
diff --git a/drivers/serial/dz.c b/drivers/serial/dz.c index 8a98aae80e22..53662b33b841 100644 --- a/drivers/serial/dz.c +++ b/drivers/serial/dz.c | |||
@@ -339,7 +339,7 @@ static inline void check_modem_status(struct dz_port *dport) | |||
339 | * It deals with the multiple ports. | 339 | * It deals with the multiple ports. |
340 | * ------------------------------------------------------------ | 340 | * ------------------------------------------------------------ |
341 | */ | 341 | */ |
342 | static irqreturn_t dz_interrupt(int irq, void *dev, struct pt_regs *regs) | 342 | static irqreturn_t dz_interrupt(int irq, void *dev) |
343 | { | 343 | { |
344 | struct dz_port *dport; | 344 | struct dz_port *dport; |
345 | unsigned short status; | 345 | unsigned short status; |
diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c index a3c00a252149..8aa0f641866b 100644 --- a/drivers/serial/icom.c +++ b/drivers/serial/icom.c | |||
@@ -844,8 +844,7 @@ static void process_interrupt(u16 port_int_reg, | |||
844 | spin_unlock(&icom_port->uart_port.lock); | 844 | spin_unlock(&icom_port->uart_port.lock); |
845 | } | 845 | } |
846 | 846 | ||
847 | static irqreturn_t icom_interrupt(int irq, void *dev_id, | 847 | static irqreturn_t icom_interrupt(int irq, void *dev_id) |
848 | struct pt_regs *regs) | ||
849 | { | 848 | { |
850 | void __iomem * int_reg; | 849 | void __iomem * int_reg; |
851 | u32 adapter_interrupts; | 850 | u32 adapter_interrupts; |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 4a142d6b8f38..ee5c782597dd 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -182,7 +182,7 @@ static void imx_start_tx(struct uart_port *port) | |||
182 | imx_transmit_buffer(sport); | 182 | imx_transmit_buffer(sport); |
183 | } | 183 | } |
184 | 184 | ||
185 | static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs) | 185 | static irqreturn_t imx_rtsint(int irq, void *dev_id) |
186 | { | 186 | { |
187 | struct imx_port *sport = (struct imx_port *)dev_id; | 187 | struct imx_port *sport = (struct imx_port *)dev_id; |
188 | unsigned int val = USR1((u32)sport->port.membase)&USR1_RTSS; | 188 | unsigned int val = USR1((u32)sport->port.membase)&USR1_RTSS; |
@@ -198,7 +198,7 @@ static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs) | |||
198 | return IRQ_HANDLED; | 198 | return IRQ_HANDLED; |
199 | } | 199 | } |
200 | 200 | ||
201 | static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs) | 201 | static irqreturn_t imx_txint(int irq, void *dev_id) |
202 | { | 202 | { |
203 | struct imx_port *sport = (struct imx_port *)dev_id; | 203 | struct imx_port *sport = (struct imx_port *)dev_id; |
204 | struct circ_buf *xmit = &sport->port.info->xmit; | 204 | struct circ_buf *xmit = &sport->port.info->xmit; |
@@ -227,7 +227,7 @@ out: | |||
227 | return IRQ_HANDLED; | 227 | return IRQ_HANDLED; |
228 | } | 228 | } |
229 | 229 | ||
230 | static irqreturn_t imx_rxint(int irq, void *dev_id, struct pt_regs *regs) | 230 | static irqreturn_t imx_rxint(int irq, void *dev_id) |
231 | { | 231 | { |
232 | struct imx_port *sport = dev_id; | 232 | struct imx_port *sport = dev_id; |
233 | unsigned int rx,flg,ignored = 0; | 233 | unsigned int rx,flg,ignored = 0; |
@@ -248,7 +248,7 @@ static irqreturn_t imx_rxint(int irq, void *dev_id, struct pt_regs *regs) | |||
248 | } | 248 | } |
249 | 249 | ||
250 | if (uart_handle_sysrq_char | 250 | if (uart_handle_sysrq_char |
251 | (&sport->port, (unsigned char)rx, regs)) | 251 | (&sport->port, (unsigned char)rx)) |
252 | goto ignore_char; | 252 | goto ignore_char; |
253 | 253 | ||
254 | if( rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) ) | 254 | if( rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) ) |
diff --git a/drivers/serial/ioc3_serial.c b/drivers/serial/ioc3_serial.c index 8097cd91f16b..2308d26c8629 100644 --- a/drivers/serial/ioc3_serial.c +++ b/drivers/serial/ioc3_serial.c | |||
@@ -1428,13 +1428,12 @@ static int receive_chars(struct uart_port *the_port) | |||
1428 | * @is : submodule | 1428 | * @is : submodule |
1429 | * @idd: driver data | 1429 | * @idd: driver data |
1430 | * @pending: interrupts to handle | 1430 | * @pending: interrupts to handle |
1431 | * @regs: pt_regs | ||
1432 | */ | 1431 | */ |
1433 | 1432 | ||
1434 | static int inline | 1433 | static int inline |
1435 | ioc3uart_intr_one(struct ioc3_submodule *is, | 1434 | ioc3uart_intr_one(struct ioc3_submodule *is, |
1436 | struct ioc3_driver_data *idd, | 1435 | struct ioc3_driver_data *idd, |
1437 | unsigned int pending, struct pt_regs *regs) | 1436 | unsigned int pending) |
1438 | { | 1437 | { |
1439 | int port_num = GET_PORT_FROM_SIO_IR(pending); | 1438 | int port_num = GET_PORT_FROM_SIO_IR(pending); |
1440 | struct port_hooks *hooks; | 1439 | struct port_hooks *hooks; |
@@ -1628,13 +1627,12 @@ ioc3uart_intr_one(struct ioc3_submodule *is, | |||
1628 | * @is : submodule | 1627 | * @is : submodule |
1629 | * @idd: driver data | 1628 | * @idd: driver data |
1630 | * @pending: interrupts to handle | 1629 | * @pending: interrupts to handle |
1631 | * @regs: pt_regs | ||
1632 | * | 1630 | * |
1633 | */ | 1631 | */ |
1634 | 1632 | ||
1635 | static int ioc3uart_intr(struct ioc3_submodule *is, | 1633 | static int ioc3uart_intr(struct ioc3_submodule *is, |
1636 | struct ioc3_driver_data *idd, | 1634 | struct ioc3_driver_data *idd, |
1637 | unsigned int pending, struct pt_regs *regs) | 1635 | unsigned int pending) |
1638 | { | 1636 | { |
1639 | int ret = 0; | 1637 | int ret = 0; |
1640 | 1638 | ||
@@ -1644,9 +1642,9 @@ static int ioc3uart_intr(struct ioc3_submodule *is, | |||
1644 | */ | 1642 | */ |
1645 | 1643 | ||
1646 | if (pending & SIO_IR_SA) | 1644 | if (pending & SIO_IR_SA) |
1647 | ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SA, regs); | 1645 | ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SA); |
1648 | if (pending & SIO_IR_SB) | 1646 | if (pending & SIO_IR_SB) |
1649 | ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SB, regs); | 1647 | ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SB); |
1650 | 1648 | ||
1651 | return ret; | 1649 | return ret; |
1652 | } | 1650 | } |
diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c index 5ec4716c99bf..98ce88d80207 100644 --- a/drivers/serial/ioc4_serial.c +++ b/drivers/serial/ioc4_serial.c | |||
@@ -987,10 +987,9 @@ intr_connect(struct ioc4_soft *soft, int type, | |||
987 | * ioc4_intr - Top level IOC4 interrupt handler. | 987 | * ioc4_intr - Top level IOC4 interrupt handler. |
988 | * @irq: irq value | 988 | * @irq: irq value |
989 | * @arg: handler arg | 989 | * @arg: handler arg |
990 | * @regs: registers | ||
991 | */ | 990 | */ |
992 | 991 | ||
993 | static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs) | 992 | static irqreturn_t ioc4_intr(int irq, void *arg) |
994 | { | 993 | { |
995 | struct ioc4_soft *soft; | 994 | struct ioc4_soft *soft; |
996 | uint32_t this_ir, this_mir; | 995 | uint32_t this_ir, this_mir; |
diff --git a/drivers/serial/ip22zilog.c b/drivers/serial/ip22zilog.c index dbf13c03a1bb..dca6c1bde8f9 100644 --- a/drivers/serial/ip22zilog.c +++ b/drivers/serial/ip22zilog.c | |||
@@ -252,8 +252,7 @@ static void ip22zilog_maybe_update_regs(struct uart_ip22zilog_port *up, | |||
252 | } | 252 | } |
253 | 253 | ||
254 | static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up, | 254 | static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up, |
255 | struct zilog_channel *channel, | 255 | struct zilog_channel *channel) |
256 | struct pt_regs *regs) | ||
257 | { | 256 | { |
258 | struct tty_struct *tty = up->port.info->tty; /* XXX info==NULL? */ | 257 | struct tty_struct *tty = up->port.info->tty; /* XXX info==NULL? */ |
259 | 258 | ||
@@ -319,7 +318,7 @@ static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up, | |||
319 | else if (r1 & CRC_ERR) | 318 | else if (r1 & CRC_ERR) |
320 | flag = TTY_FRAME; | 319 | flag = TTY_FRAME; |
321 | } | 320 | } |
322 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 321 | if (uart_handle_sysrq_char(&up->port, ch)) |
323 | goto next_char; | 322 | goto next_char; |
324 | 323 | ||
325 | if (up->port.ignore_status_mask == 0xff || | 324 | if (up->port.ignore_status_mask == 0xff || |
@@ -339,8 +338,7 @@ static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up, | |||
339 | } | 338 | } |
340 | 339 | ||
341 | static void ip22zilog_status_handle(struct uart_ip22zilog_port *up, | 340 | static void ip22zilog_status_handle(struct uart_ip22zilog_port *up, |
342 | struct zilog_channel *channel, | 341 | struct zilog_channel *channel) |
343 | struct pt_regs *regs) | ||
344 | { | 342 | { |
345 | unsigned char status; | 343 | unsigned char status; |
346 | 344 | ||
@@ -443,7 +441,7 @@ ack_tx_int: | |||
443 | ZS_WSYNC(channel); | 441 | ZS_WSYNC(channel); |
444 | } | 442 | } |
445 | 443 | ||
446 | static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 444 | static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id) |
447 | { | 445 | { |
448 | struct uart_ip22zilog_port *up = dev_id; | 446 | struct uart_ip22zilog_port *up = dev_id; |
449 | 447 | ||
@@ -462,9 +460,9 @@ static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *re | |||
462 | ZS_WSYNC(channel); | 460 | ZS_WSYNC(channel); |
463 | 461 | ||
464 | if (r3 & CHARxIP) | 462 | if (r3 & CHARxIP) |
465 | ip22zilog_receive_chars(up, channel, regs); | 463 | ip22zilog_receive_chars(up, channel); |
466 | if (r3 & CHAEXT) | 464 | if (r3 & CHAEXT) |
467 | ip22zilog_status_handle(up, channel, regs); | 465 | ip22zilog_status_handle(up, channel); |
468 | if (r3 & CHATxIP) | 466 | if (r3 & CHATxIP) |
469 | ip22zilog_transmit_chars(up, channel); | 467 | ip22zilog_transmit_chars(up, channel); |
470 | } | 468 | } |
@@ -481,9 +479,9 @@ static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *re | |||
481 | ZS_WSYNC(channel); | 479 | ZS_WSYNC(channel); |
482 | 480 | ||
483 | if (r3 & CHBRxIP) | 481 | if (r3 & CHBRxIP) |
484 | ip22zilog_receive_chars(up, channel, regs); | 482 | ip22zilog_receive_chars(up, channel); |
485 | if (r3 & CHBEXT) | 483 | if (r3 & CHBEXT) |
486 | ip22zilog_status_handle(up, channel, regs); | 484 | ip22zilog_status_handle(up, channel); |
487 | if (r3 & CHBTxIP) | 485 | if (r3 & CHBTxIP) |
488 | ip22zilog_transmit_chars(up, channel); | 486 | ip22zilog_transmit_chars(up, channel); |
489 | } | 487 | } |
diff --git a/drivers/serial/jsm/jsm.h b/drivers/serial/jsm/jsm.h index 043f50b1d10c..12c934a1f274 100644 --- a/drivers/serial/jsm/jsm.h +++ b/drivers/serial/jsm/jsm.h | |||
@@ -99,7 +99,7 @@ struct jsm_channel; | |||
99 | * Per board operations structure * | 99 | * Per board operations structure * |
100 | ************************************************************************/ | 100 | ************************************************************************/ |
101 | struct board_ops { | 101 | struct board_ops { |
102 | irqreturn_t (*intr) (int irq, void *voidbrd, struct pt_regs *regs); | 102 | irq_handler_t intr; |
103 | void (*uart_init) (struct jsm_channel *ch); | 103 | void (*uart_init) (struct jsm_channel *ch); |
104 | void (*uart_off) (struct jsm_channel *ch); | 104 | void (*uart_off) (struct jsm_channel *ch); |
105 | void (*param) (struct jsm_channel *ch); | 105 | void (*param) (struct jsm_channel *ch); |
diff --git a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c index a5fc589d6ef5..8fa31e68989a 100644 --- a/drivers/serial/jsm/jsm_neo.c +++ b/drivers/serial/jsm/jsm_neo.c | |||
@@ -1114,7 +1114,7 @@ static void neo_param(struct jsm_channel *ch) | |||
1114 | * | 1114 | * |
1115 | * Neo specific interrupt handler. | 1115 | * Neo specific interrupt handler. |
1116 | */ | 1116 | */ |
1117 | static irqreturn_t neo_intr(int irq, void *voidbrd, struct pt_regs *regs) | 1117 | static irqreturn_t neo_intr(int irq, void *voidbrd) |
1118 | { | 1118 | { |
1119 | struct jsm_board *brd = (struct jsm_board *) voidbrd; | 1119 | struct jsm_board *brd = (struct jsm_board *) voidbrd; |
1120 | struct jsm_channel *ch; | 1120 | struct jsm_channel *ch; |
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c index 28c9ce6f0bdc..c85ac1a77608 100644 --- a/drivers/serial/m32r_sio.c +++ b/drivers/serial/m32r_sio.c | |||
@@ -323,8 +323,7 @@ static void m32r_sio_enable_ms(struct uart_port *port) | |||
323 | serial_out(up, UART_IER, up->ier); | 323 | serial_out(up, UART_IER, up->ier); |
324 | } | 324 | } |
325 | 325 | ||
326 | static void receive_chars(struct uart_sio_port *up, int *status, | 326 | static void receive_chars(struct uart_sio_port *up, int *status) |
327 | struct pt_regs *regs) | ||
328 | { | 327 | { |
329 | struct tty_struct *tty = up->port.info->tty; | 328 | struct tty_struct *tty = up->port.info->tty; |
330 | unsigned char ch; | 329 | unsigned char ch; |
@@ -378,7 +377,7 @@ static void receive_chars(struct uart_sio_port *up, int *status, | |||
378 | else if (*status & UART_LSR_FE) | 377 | else if (*status & UART_LSR_FE) |
379 | flag = TTY_FRAME; | 378 | flag = TTY_FRAME; |
380 | } | 379 | } |
381 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 380 | if (uart_handle_sysrq_char(&up->port, ch)) |
382 | goto ignore_char; | 381 | goto ignore_char; |
383 | if ((*status & up->port.ignore_status_mask) == 0) | 382 | if ((*status & up->port.ignore_status_mask) == 0) |
384 | tty_insert_flip_char(tty, ch, flag); | 383 | tty_insert_flip_char(tty, ch, flag); |
@@ -439,12 +438,12 @@ static void transmit_chars(struct uart_sio_port *up) | |||
439 | * This handles the interrupt from one port. | 438 | * This handles the interrupt from one port. |
440 | */ | 439 | */ |
441 | static inline void m32r_sio_handle_port(struct uart_sio_port *up, | 440 | static inline void m32r_sio_handle_port(struct uart_sio_port *up, |
442 | unsigned int status, struct pt_regs *regs) | 441 | unsigned int status) |
443 | { | 442 | { |
444 | DEBUG_INTR("status = %x...", status); | 443 | DEBUG_INTR("status = %x...", status); |
445 | 444 | ||
446 | if (status & 0x04) | 445 | if (status & 0x04) |
447 | receive_chars(up, &status, regs); | 446 | receive_chars(up, &status); |
448 | if (status & 0x01) | 447 | if (status & 0x01) |
449 | transmit_chars(up); | 448 | transmit_chars(up); |
450 | } | 449 | } |
@@ -463,8 +462,7 @@ static inline void m32r_sio_handle_port(struct uart_sio_port *up, | |||
463 | * This means we need to loop through all ports. checking that they | 462 | * This means we need to loop through all ports. checking that they |
464 | * don't have an interrupt pending. | 463 | * don't have an interrupt pending. |
465 | */ | 464 | */ |
466 | static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id, | 465 | static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id) |
467 | struct pt_regs *regs) | ||
468 | { | 466 | { |
469 | struct irq_info *i = dev_id; | 467 | struct irq_info *i = dev_id; |
470 | struct list_head *l, *end = NULL; | 468 | struct list_head *l, *end = NULL; |
@@ -492,7 +490,7 @@ static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id, | |||
492 | sts = sio_in(up, SIOSTS); | 490 | sts = sio_in(up, SIOSTS); |
493 | if (sts & 0x5) { | 491 | if (sts & 0x5) { |
494 | spin_lock(&up->port.lock); | 492 | spin_lock(&up->port.lock); |
495 | m32r_sio_handle_port(up, sts, regs); | 493 | m32r_sio_handle_port(up, sts); |
496 | spin_unlock(&up->port.lock); | 494 | spin_unlock(&up->port.lock); |
497 | 495 | ||
498 | end = NULL; | 496 | end = NULL; |
diff --git a/drivers/serial/mcfserial.c b/drivers/serial/mcfserial.c index 00d7859c167e..aee1b31f1a1c 100644 --- a/drivers/serial/mcfserial.c +++ b/drivers/serial/mcfserial.c | |||
@@ -385,7 +385,7 @@ static inline void transmit_chars(struct mcf_serial *info) | |||
385 | /* | 385 | /* |
386 | * This is the serial driver's generic interrupt routine | 386 | * This is the serial driver's generic interrupt routine |
387 | */ | 387 | */ |
388 | irqreturn_t mcfrs_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 388 | irqreturn_t mcfrs_interrupt(int irq, void *dev_id) |
389 | { | 389 | { |
390 | struct mcf_serial *info; | 390 | struct mcf_serial *info; |
391 | unsigned char isr; | 391 | unsigned char isr; |
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c index dbad0e31e005..039c2fd6d496 100644 --- a/drivers/serial/mpc52xx_uart.c +++ b/drivers/serial/mpc52xx_uart.c | |||
@@ -85,7 +85,7 @@ static struct uart_port mpc52xx_uart_ports[MPC52xx_PSC_MAXNUM]; | |||
85 | 85 | ||
86 | 86 | ||
87 | /* Forward declaration of the interruption handling routine */ | 87 | /* Forward declaration of the interruption handling routine */ |
88 | static irqreturn_t mpc52xx_uart_int(int irq,void *dev_id,struct pt_regs *regs); | 88 | static irqreturn_t mpc52xx_uart_int(int irq,void *dev_id); |
89 | 89 | ||
90 | 90 | ||
91 | /* Simple macro to test if a port is console or not. This one is taken | 91 | /* Simple macro to test if a port is console or not. This one is taken |
@@ -410,7 +410,7 @@ static struct uart_ops mpc52xx_uart_ops = { | |||
410 | /* ======================================================================== */ | 410 | /* ======================================================================== */ |
411 | 411 | ||
412 | static inline int | 412 | static inline int |
413 | mpc52xx_uart_int_rx_chars(struct uart_port *port, struct pt_regs *regs) | 413 | mpc52xx_uart_int_rx_chars(struct uart_port *port) |
414 | { | 414 | { |
415 | struct tty_struct *tty = port->info->tty; | 415 | struct tty_struct *tty = port->info->tty; |
416 | unsigned char ch, flag; | 416 | unsigned char ch, flag; |
@@ -425,7 +425,7 @@ mpc52xx_uart_int_rx_chars(struct uart_port *port, struct pt_regs *regs) | |||
425 | 425 | ||
426 | /* Handle sysreq char */ | 426 | /* Handle sysreq char */ |
427 | #ifdef SUPPORT_SYSRQ | 427 | #ifdef SUPPORT_SYSRQ |
428 | if (uart_handle_sysrq_char(port, ch, regs)) { | 428 | if (uart_handle_sysrq_char(port, ch)) { |
429 | port->sysrq = 0; | 429 | port->sysrq = 0; |
430 | continue; | 430 | continue; |
431 | } | 431 | } |
@@ -510,7 +510,7 @@ mpc52xx_uart_int_tx_chars(struct uart_port *port) | |||
510 | } | 510 | } |
511 | 511 | ||
512 | static irqreturn_t | 512 | static irqreturn_t |
513 | mpc52xx_uart_int(int irq, void *dev_id, struct pt_regs *regs) | 513 | mpc52xx_uart_int(int irq, void *dev_id) |
514 | { | 514 | { |
515 | struct uart_port *port = (struct uart_port *) dev_id; | 515 | struct uart_port *port = (struct uart_port *) dev_id; |
516 | unsigned long pass = ISR_PASS_LIMIT; | 516 | unsigned long pass = ISR_PASS_LIMIT; |
@@ -539,7 +539,7 @@ mpc52xx_uart_int(int irq, void *dev_id, struct pt_regs *regs) | |||
539 | /* Do we need to receive chars ? */ | 539 | /* Do we need to receive chars ? */ |
540 | /* For this RX interrupts must be on and some chars waiting */ | 540 | /* For this RX interrupts must be on and some chars waiting */ |
541 | if ( status & MPC52xx_PSC_IMR_RXRDY ) | 541 | if ( status & MPC52xx_PSC_IMR_RXRDY ) |
542 | keepgoing |= mpc52xx_uart_int_rx_chars(port, regs); | 542 | keepgoing |= mpc52xx_uart_int_rx_chars(port); |
543 | 543 | ||
544 | /* Do we need to send chars ? */ | 544 | /* Do we need to send chars ? */ |
545 | /* For this, TX must be ready and TX interrupt enabled */ | 545 | /* For this, TX must be ready and TX interrupt enabled */ |
diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c index 704243c9f78a..8eea69f29989 100644 --- a/drivers/serial/mpsc.c +++ b/drivers/serial/mpsc.c | |||
@@ -992,7 +992,7 @@ mpsc_make_ready(struct mpsc_port_info *pi) | |||
992 | */ | 992 | */ |
993 | 993 | ||
994 | static inline int | 994 | static inline int |
995 | mpsc_rx_intr(struct mpsc_port_info *pi, struct pt_regs *regs) | 995 | mpsc_rx_intr(struct mpsc_port_info *pi) |
996 | { | 996 | { |
997 | struct mpsc_rx_desc *rxre; | 997 | struct mpsc_rx_desc *rxre; |
998 | struct tty_struct *tty = pi->port.info->tty; | 998 | struct tty_struct *tty = pi->port.info->tty; |
@@ -1072,7 +1072,7 @@ mpsc_rx_intr(struct mpsc_port_info *pi, struct pt_regs *regs) | |||
1072 | flag = TTY_PARITY; | 1072 | flag = TTY_PARITY; |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | if (uart_handle_sysrq_char(&pi->port, *bp, regs)) { | 1075 | if (uart_handle_sysrq_char(&pi->port, *bp)) { |
1076 | bp++; | 1076 | bp++; |
1077 | bytes_in--; | 1077 | bytes_in--; |
1078 | goto next_frame; | 1078 | goto next_frame; |
@@ -1257,7 +1257,7 @@ mpsc_tx_intr(struct mpsc_port_info *pi) | |||
1257 | * handling those descriptors, we restart the Rx/Tx engines if they're stopped. | 1257 | * handling those descriptors, we restart the Rx/Tx engines if they're stopped. |
1258 | */ | 1258 | */ |
1259 | static irqreturn_t | 1259 | static irqreturn_t |
1260 | mpsc_sdma_intr(int irq, void *dev_id, struct pt_regs *regs) | 1260 | mpsc_sdma_intr(int irq, void *dev_id) |
1261 | { | 1261 | { |
1262 | struct mpsc_port_info *pi = dev_id; | 1262 | struct mpsc_port_info *pi = dev_id; |
1263 | ulong iflags; | 1263 | ulong iflags; |
@@ -1267,7 +1267,7 @@ mpsc_sdma_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
1267 | 1267 | ||
1268 | spin_lock_irqsave(&pi->port.lock, iflags); | 1268 | spin_lock_irqsave(&pi->port.lock, iflags); |
1269 | mpsc_sdma_intr_ack(pi); | 1269 | mpsc_sdma_intr_ack(pi); |
1270 | if (mpsc_rx_intr(pi, regs)) | 1270 | if (mpsc_rx_intr(pi)) |
1271 | rc = IRQ_HANDLED; | 1271 | rc = IRQ_HANDLED; |
1272 | if (mpsc_tx_intr(pi)) | 1272 | if (mpsc_tx_intr(pi)) |
1273 | rc = IRQ_HANDLED; | 1273 | rc = IRQ_HANDLED; |
diff --git a/drivers/serial/netx-serial.c b/drivers/serial/netx-serial.c index 7502109d37f0..e92d7e1c22cf 100644 --- a/drivers/serial/netx-serial.c +++ b/drivers/serial/netx-serial.c | |||
@@ -200,7 +200,7 @@ static void netx_txint(struct uart_port *port) | |||
200 | uart_write_wakeup(port); | 200 | uart_write_wakeup(port); |
201 | } | 201 | } |
202 | 202 | ||
203 | static void netx_rxint(struct uart_port *port, struct pt_regs *regs) | 203 | static void netx_rxint(struct uart_port *port) |
204 | { | 204 | { |
205 | unsigned char rx, flg, status; | 205 | unsigned char rx, flg, status; |
206 | struct tty_struct *tty = port->info->tty; | 206 | struct tty_struct *tty = port->info->tty; |
@@ -235,7 +235,7 @@ static void netx_rxint(struct uart_port *port, struct pt_regs *regs) | |||
235 | flg = TTY_FRAME; | 235 | flg = TTY_FRAME; |
236 | } | 236 | } |
237 | 237 | ||
238 | if (uart_handle_sysrq_char(port, rx, regs)) | 238 | if (uart_handle_sysrq_char(port, rx)) |
239 | continue; | 239 | continue; |
240 | 240 | ||
241 | uart_insert_char(port, status, SR_OE, rx, flg); | 241 | uart_insert_char(port, status, SR_OE, rx, flg); |
@@ -245,7 +245,7 @@ static void netx_rxint(struct uart_port *port, struct pt_regs *regs) | |||
245 | return; | 245 | return; |
246 | } | 246 | } |
247 | 247 | ||
248 | static irqreturn_t netx_int(int irq, void *dev_id, struct pt_regs *regs) | 248 | static irqreturn_t netx_int(int irq, void *dev_id) |
249 | { | 249 | { |
250 | struct uart_port *port = (struct uart_port *)dev_id; | 250 | struct uart_port *port = (struct uart_port *)dev_id; |
251 | unsigned long flags; | 251 | unsigned long flags; |
@@ -256,7 +256,7 @@ static irqreturn_t netx_int(int irq, void *dev_id, struct pt_regs *regs) | |||
256 | status = readl(port->membase + UART_IIR) & IIR_MASK; | 256 | status = readl(port->membase + UART_IIR) & IIR_MASK; |
257 | while (status) { | 257 | while (status) { |
258 | if (status & IIR_RIS) | 258 | if (status & IIR_RIS) |
259 | netx_rxint(port, regs); | 259 | netx_rxint(port); |
260 | if (status & IIR_TIS) | 260 | if (status & IIR_TIS) |
261 | netx_txint(port); | 261 | netx_txint(port); |
262 | if (status & IIR_MIS) { | 262 | if (status & IIR_MIS) { |
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c index a3b99caf80e6..bf9809ed9c0b 100644 --- a/drivers/serial/pmac_zilog.c +++ b/drivers/serial/pmac_zilog.c | |||
@@ -204,8 +204,7 @@ static void pmz_maybe_update_regs(struct uart_pmac_port *uap) | |||
204 | } | 204 | } |
205 | } | 205 | } |
206 | 206 | ||
207 | static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap, | 207 | static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap) |
208 | struct pt_regs *regs) | ||
209 | { | 208 | { |
210 | struct tty_struct *tty = NULL; | 209 | struct tty_struct *tty = NULL; |
211 | unsigned char ch, r1, drop, error, flag; | 210 | unsigned char ch, r1, drop, error, flag; |
@@ -267,7 +266,7 @@ static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap, | |||
267 | if (uap->port.sysrq) { | 266 | if (uap->port.sysrq) { |
268 | int swallow; | 267 | int swallow; |
269 | spin_unlock(&uap->port.lock); | 268 | spin_unlock(&uap->port.lock); |
270 | swallow = uart_handle_sysrq_char(&uap->port, ch, regs); | 269 | swallow = uart_handle_sysrq_char(&uap->port, ch); |
271 | spin_lock(&uap->port.lock); | 270 | spin_lock(&uap->port.lock); |
272 | if (swallow) | 271 | if (swallow) |
273 | goto next_char; | 272 | goto next_char; |
@@ -335,7 +334,7 @@ static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap, | |||
335 | return tty; | 334 | return tty; |
336 | } | 335 | } |
337 | 336 | ||
338 | static void pmz_status_handle(struct uart_pmac_port *uap, struct pt_regs *regs) | 337 | static void pmz_status_handle(struct uart_pmac_port *uap) |
339 | { | 338 | { |
340 | unsigned char status; | 339 | unsigned char status; |
341 | 340 | ||
@@ -438,7 +437,7 @@ ack_tx_int: | |||
438 | } | 437 | } |
439 | 438 | ||
440 | /* Hrm... we register that twice, fixme later.... */ | 439 | /* Hrm... we register that twice, fixme later.... */ |
441 | static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 440 | static irqreturn_t pmz_interrupt(int irq, void *dev_id) |
442 | { | 441 | { |
443 | struct uart_pmac_port *uap = dev_id; | 442 | struct uart_pmac_port *uap = dev_id; |
444 | struct uart_pmac_port *uap_a; | 443 | struct uart_pmac_port *uap_a; |
@@ -462,9 +461,9 @@ static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
462 | write_zsreg(uap_a, R0, RES_H_IUS); | 461 | write_zsreg(uap_a, R0, RES_H_IUS); |
463 | zssync(uap_a); | 462 | zssync(uap_a); |
464 | if (r3 & CHAEXT) | 463 | if (r3 & CHAEXT) |
465 | pmz_status_handle(uap_a, regs); | 464 | pmz_status_handle(uap_a); |
466 | if (r3 & CHARxIP) | 465 | if (r3 & CHARxIP) |
467 | tty = pmz_receive_chars(uap_a, regs); | 466 | tty = pmz_receive_chars(uap_a); |
468 | if (r3 & CHATxIP) | 467 | if (r3 & CHATxIP) |
469 | pmz_transmit_chars(uap_a); | 468 | pmz_transmit_chars(uap_a); |
470 | rc = IRQ_HANDLED; | 469 | rc = IRQ_HANDLED; |
@@ -482,9 +481,9 @@ static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
482 | write_zsreg(uap_b, R0, RES_H_IUS); | 481 | write_zsreg(uap_b, R0, RES_H_IUS); |
483 | zssync(uap_b); | 482 | zssync(uap_b); |
484 | if (r3 & CHBEXT) | 483 | if (r3 & CHBEXT) |
485 | pmz_status_handle(uap_b, regs); | 484 | pmz_status_handle(uap_b); |
486 | if (r3 & CHBRxIP) | 485 | if (r3 & CHBRxIP) |
487 | tty = pmz_receive_chars(uap_b, regs); | 486 | tty = pmz_receive_chars(uap_b); |
488 | if (r3 & CHBTxIP) | 487 | if (r3 & CHBTxIP) |
489 | pmz_transmit_chars(uap_b); | 488 | pmz_transmit_chars(uap_b); |
490 | rc = IRQ_HANDLED; | 489 | rc = IRQ_HANDLED; |
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c index a720953a404e..846089f222d4 100644 --- a/drivers/serial/pxa.c +++ b/drivers/serial/pxa.c | |||
@@ -98,8 +98,7 @@ static void serial_pxa_stop_rx(struct uart_port *port) | |||
98 | serial_out(up, UART_IER, up->ier); | 98 | serial_out(up, UART_IER, up->ier); |
99 | } | 99 | } |
100 | 100 | ||
101 | static inline void | 101 | static inline void receive_chars(struct uart_pxa_port *up, int *status) |
102 | receive_chars(struct uart_pxa_port *up, int *status, struct pt_regs *regs) | ||
103 | { | 102 | { |
104 | struct tty_struct *tty = up->port.info->tty; | 103 | struct tty_struct *tty = up->port.info->tty; |
105 | unsigned int ch, flag; | 104 | unsigned int ch, flag; |
@@ -153,7 +152,7 @@ receive_chars(struct uart_pxa_port *up, int *status, struct pt_regs *regs) | |||
153 | flag = TTY_FRAME; | 152 | flag = TTY_FRAME; |
154 | } | 153 | } |
155 | 154 | ||
156 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 155 | if (uart_handle_sysrq_char(&up->port, ch)) |
157 | goto ignore_char; | 156 | goto ignore_char; |
158 | 157 | ||
159 | uart_insert_char(&up->port, *status, UART_LSR_OE, ch, flag); | 158 | uart_insert_char(&up->port, *status, UART_LSR_OE, ch, flag); |
@@ -231,8 +230,7 @@ static inline void check_modem_status(struct uart_pxa_port *up) | |||
231 | /* | 230 | /* |
232 | * This handles the interrupt from one port. | 231 | * This handles the interrupt from one port. |
233 | */ | 232 | */ |
234 | static inline irqreturn_t | 233 | static inline irqreturn_t serial_pxa_irq(int irq, void *dev_id) |
235 | serial_pxa_irq(int irq, void *dev_id, struct pt_regs *regs) | ||
236 | { | 234 | { |
237 | struct uart_pxa_port *up = (struct uart_pxa_port *)dev_id; | 235 | struct uart_pxa_port *up = (struct uart_pxa_port *)dev_id; |
238 | unsigned int iir, lsr; | 236 | unsigned int iir, lsr; |
@@ -242,7 +240,7 @@ serial_pxa_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
242 | return IRQ_NONE; | 240 | return IRQ_NONE; |
243 | lsr = serial_in(up, UART_LSR); | 241 | lsr = serial_in(up, UART_LSR); |
244 | if (lsr & UART_LSR_DR) | 242 | if (lsr & UART_LSR_DR) |
245 | receive_chars(up, &lsr, regs); | 243 | receive_chars(up, &lsr); |
246 | check_modem_status(up); | 244 | check_modem_status(up); |
247 | if (lsr & UART_LSR_THRE) | 245 | if (lsr & UART_LSR_THRE) |
248 | transmit_chars(up); | 246 | transmit_chars(up); |
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index 95738a19cde7..8dfc2dd058ca 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
@@ -310,7 +310,7 @@ static int s3c24xx_serial_rx_fifocnt(struct s3c24xx_uart_port *ourport, | |||
310 | #define S3C2410_UERSTAT_PARITY (0x1000) | 310 | #define S3C2410_UERSTAT_PARITY (0x1000) |
311 | 311 | ||
312 | static irqreturn_t | 312 | static irqreturn_t |
313 | s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs) | 313 | s3c24xx_serial_rx_chars(int irq, void *dev_id) |
314 | { | 314 | { |
315 | struct s3c24xx_uart_port *ourport = dev_id; | 315 | struct s3c24xx_uart_port *ourport = dev_id; |
316 | struct uart_port *port = &ourport->port; | 316 | struct uart_port *port = &ourport->port; |
@@ -379,7 +379,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs) | |||
379 | flag = TTY_FRAME; | 379 | flag = TTY_FRAME; |
380 | } | 380 | } |
381 | 381 | ||
382 | if (uart_handle_sysrq_char(port, ch, regs)) | 382 | if (uart_handle_sysrq_char(port, ch)) |
383 | goto ignore_char; | 383 | goto ignore_char; |
384 | 384 | ||
385 | uart_insert_char(port, uerstat, S3C2410_UERSTAT_OVERRUN, ch, flag); | 385 | uart_insert_char(port, uerstat, S3C2410_UERSTAT_OVERRUN, ch, flag); |
@@ -393,7 +393,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs) | |||
393 | return IRQ_HANDLED; | 393 | return IRQ_HANDLED; |
394 | } | 394 | } |
395 | 395 | ||
396 | static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id, struct pt_regs *regs) | 396 | static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id) |
397 | { | 397 | { |
398 | struct s3c24xx_uart_port *ourport = id; | 398 | struct s3c24xx_uart_port *ourport = id; |
399 | struct uart_port *port = &ourport->port; | 399 | struct uart_port *port = &ourport->port; |
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c index db3486d33870..d4065266b6fc 100644 --- a/drivers/serial/sa1100.c +++ b/drivers/serial/sa1100.c | |||
@@ -190,7 +190,7 @@ static void sa1100_enable_ms(struct uart_port *port) | |||
190 | } | 190 | } |
191 | 191 | ||
192 | static void | 192 | static void |
193 | sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) | 193 | sa1100_rx_chars(struct sa1100_port *sport) |
194 | { | 194 | { |
195 | struct tty_struct *tty = sport->port.info->tty; | 195 | struct tty_struct *tty = sport->port.info->tty; |
196 | unsigned int status, ch, flg; | 196 | unsigned int status, ch, flg; |
@@ -228,7 +228,7 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) | |||
228 | #endif | 228 | #endif |
229 | } | 229 | } |
230 | 230 | ||
231 | if (uart_handle_sysrq_char(&sport->port, ch, regs)) | 231 | if (uart_handle_sysrq_char(&sport->port, ch)) |
232 | goto ignore_char; | 232 | goto ignore_char; |
233 | 233 | ||
234 | uart_insert_char(&sport->port, status, UTSR1_TO_SM(UTSR1_ROR), ch, flg); | 234 | uart_insert_char(&sport->port, status, UTSR1_TO_SM(UTSR1_ROR), ch, flg); |
@@ -281,7 +281,7 @@ static void sa1100_tx_chars(struct sa1100_port *sport) | |||
281 | sa1100_stop_tx(&sport->port); | 281 | sa1100_stop_tx(&sport->port); |
282 | } | 282 | } |
283 | 283 | ||
284 | static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs) | 284 | static irqreturn_t sa1100_int(int irq, void *dev_id) |
285 | { | 285 | { |
286 | struct sa1100_port *sport = dev_id; | 286 | struct sa1100_port *sport = dev_id; |
287 | unsigned int status, pass_counter = 0; | 287 | unsigned int status, pass_counter = 0; |
@@ -294,7 +294,7 @@ static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs) | |||
294 | /* Clear the receiver idle bit, if set */ | 294 | /* Clear the receiver idle bit, if set */ |
295 | if (status & UTSR0_RID) | 295 | if (status & UTSR0_RID) |
296 | UART_PUT_UTSR0(sport, UTSR0_RID); | 296 | UART_PUT_UTSR0(sport, UTSR0_RID); |
297 | sa1100_rx_chars(sport, regs); | 297 | sa1100_rx_chars(sport); |
298 | } | 298 | } |
299 | 299 | ||
300 | /* Clear the relevant break bits */ | 300 | /* Clear the relevant break bits */ |
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c index 23ddedbaec08..5e1ac356bbb0 100644 --- a/drivers/serial/serial_lh7a40x.c +++ b/drivers/serial/serial_lh7a40x.c | |||
@@ -135,12 +135,7 @@ static void lh7a40xuart_enable_ms (struct uart_port* port) | |||
135 | BIT_SET (port, UART_R_INTEN, ModemInt); | 135 | BIT_SET (port, UART_R_INTEN, ModemInt); |
136 | } | 136 | } |
137 | 137 | ||
138 | static void | 138 | static void lh7a40xuart_rx_chars (struct uart_port* port) |
139 | #ifdef SUPPORT_SYSRQ | ||
140 | lh7a40xuart_rx_chars (struct uart_port* port, struct pt_regs* regs) | ||
141 | #else | ||
142 | lh7a40xuart_rx_chars (struct uart_port* port) | ||
143 | #endif | ||
144 | { | 139 | { |
145 | struct tty_struct* tty = port->info->tty; | 140 | struct tty_struct* tty = port->info->tty; |
146 | int cbRxMax = 256; /* (Gross) limit on receive */ | 141 | int cbRxMax = 256; /* (Gross) limit on receive */ |
@@ -177,7 +172,7 @@ lh7a40xuart_rx_chars (struct uart_port* port) | |||
177 | flag = TTY_FRAME; | 172 | flag = TTY_FRAME; |
178 | } | 173 | } |
179 | 174 | ||
180 | if (uart_handle_sysrq_char (port, (unsigned char) data, regs)) | 175 | if (uart_handle_sysrq_char (port, (unsigned char) data)) |
181 | continue; | 176 | continue; |
182 | 177 | ||
183 | uart_insert_char(port, data, RxOverrunError, data, flag); | 178 | uart_insert_char(port, data, RxOverrunError, data, flag); |
@@ -248,8 +243,7 @@ static void lh7a40xuart_modem_status (struct uart_port* port) | |||
248 | wake_up_interruptible (&port->info->delta_msr_wait); | 243 | wake_up_interruptible (&port->info->delta_msr_wait); |
249 | } | 244 | } |
250 | 245 | ||
251 | static irqreturn_t lh7a40xuart_int (int irq, void* dev_id, | 246 | static irqreturn_t lh7a40xuart_int (int irq, void* dev_id) |
252 | struct pt_regs* regs) | ||
253 | { | 247 | { |
254 | struct uart_port* port = dev_id; | 248 | struct uart_port* port = dev_id; |
255 | unsigned int cLoopLimit = ISR_LOOP_LIMIT; | 249 | unsigned int cLoopLimit = ISR_LOOP_LIMIT; |
@@ -258,11 +252,7 @@ static irqreturn_t lh7a40xuart_int (int irq, void* dev_id, | |||
258 | 252 | ||
259 | do { | 253 | do { |
260 | if (isr & (RxInt | RxTimeoutInt)) | 254 | if (isr & (RxInt | RxTimeoutInt)) |
261 | #ifdef SUPPORT_SYSRQ | ||
262 | lh7a40xuart_rx_chars(port, regs); | ||
263 | #else | ||
264 | lh7a40xuart_rx_chars(port); | 255 | lh7a40xuart_rx_chars(port); |
265 | #endif | ||
266 | if (isr & ModemInt) | 256 | if (isr & ModemInt) |
267 | lh7a40xuart_modem_status (port); | 257 | lh7a40xuart_modem_status (port); |
268 | if (isr & TxInt) | 258 | if (isr & TxInt) |
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c index ebd8d2bb17fd..2a48289ac722 100644 --- a/drivers/serial/serial_txx9.c +++ b/drivers/serial/serial_txx9.c | |||
@@ -283,7 +283,7 @@ static void serial_txx9_enable_ms(struct uart_port *port) | |||
283 | } | 283 | } |
284 | 284 | ||
285 | static inline void | 285 | static inline void |
286 | receive_chars(struct uart_txx9_port *up, unsigned int *status, struct pt_regs *regs) | 286 | receive_chars(struct uart_txx9_port *up, unsigned int *status) |
287 | { | 287 | { |
288 | struct tty_struct *tty = up->port.info->tty; | 288 | struct tty_struct *tty = up->port.info->tty; |
289 | unsigned char ch; | 289 | unsigned char ch; |
@@ -344,7 +344,7 @@ receive_chars(struct uart_txx9_port *up, unsigned int *status, struct pt_regs *r | |||
344 | else if (disr & TXX9_SIDISR_UFER) | 344 | else if (disr & TXX9_SIDISR_UFER) |
345 | flag = TTY_FRAME; | 345 | flag = TTY_FRAME; |
346 | } | 346 | } |
347 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 347 | if (uart_handle_sysrq_char(&up->port, ch)) |
348 | goto ignore_char; | 348 | goto ignore_char; |
349 | 349 | ||
350 | uart_insert_char(&up->port, disr, TXX9_SIDISR_UOER, ch, flag); | 350 | uart_insert_char(&up->port, disr, TXX9_SIDISR_UOER, ch, flag); |
@@ -391,7 +391,7 @@ static inline void transmit_chars(struct uart_txx9_port *up) | |||
391 | serial_txx9_stop_tx(&up->port); | 391 | serial_txx9_stop_tx(&up->port); |
392 | } | 392 | } |
393 | 393 | ||
394 | static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 394 | static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id) |
395 | { | 395 | { |
396 | int pass_counter = 0; | 396 | int pass_counter = 0; |
397 | struct uart_txx9_port *up = dev_id; | 397 | struct uart_txx9_port *up = dev_id; |
@@ -409,7 +409,7 @@ static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id, struct pt_regs * | |||
409 | } | 409 | } |
410 | 410 | ||
411 | if (status & TXX9_SIDISR_RDIS) | 411 | if (status & TXX9_SIDISR_RDIS) |
412 | receive_chars(up, &status, regs); | 412 | receive_chars(up, &status); |
413 | if (status & TXX9_SIDISR_TDIS) | 413 | if (status & TXX9_SIDISR_TDIS) |
414 | transmit_chars(up); | 414 | transmit_chars(up); |
415 | /* Clear TX/RX Int. Status */ | 415 | /* Clear TX/RX Int. Status */ |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 5c025d1190c1..266aa325569e 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -446,8 +446,7 @@ static void sci_transmit_chars(struct uart_port *port) | |||
446 | /* On SH3, SCIF may read end-of-break as a space->mark char */ | 446 | /* On SH3, SCIF may read end-of-break as a space->mark char */ |
447 | #define STEPFN(c) ({int __c=(c); (((__c-1)|(__c)) == -1); }) | 447 | #define STEPFN(c) ({int __c=(c); (((__c-1)|(__c)) == -1); }) |
448 | 448 | ||
449 | static inline void sci_receive_chars(struct uart_port *port, | 449 | static inline void sci_receive_chars(struct uart_port *port) |
450 | struct pt_regs *regs) | ||
451 | { | 450 | { |
452 | struct sci_port *sci_port = (struct sci_port *)port; | 451 | struct sci_port *sci_port = (struct sci_port *)port; |
453 | struct tty_struct *tty = port->info->tty; | 452 | struct tty_struct *tty = port->info->tty; |
@@ -476,7 +475,7 @@ static inline void sci_receive_chars(struct uart_port *port, | |||
476 | 475 | ||
477 | if (port->type == PORT_SCI) { | 476 | if (port->type == PORT_SCI) { |
478 | char c = sci_in(port, SCxRDR); | 477 | char c = sci_in(port, SCxRDR); |
479 | if (uart_handle_sysrq_char(port, c, regs) || sci_port->break_flag) | 478 | if (uart_handle_sysrq_char(port, c) || sci_port->break_flag) |
480 | count = 0; | 479 | count = 0; |
481 | else { | 480 | else { |
482 | tty_insert_flip_char(tty, c, TTY_NORMAL); | 481 | tty_insert_flip_char(tty, c, TTY_NORMAL); |
@@ -504,7 +503,7 @@ static inline void sci_receive_chars(struct uart_port *port, | |||
504 | } | 503 | } |
505 | } | 504 | } |
506 | #endif /* CONFIG_CPU_SH3 */ | 505 | #endif /* CONFIG_CPU_SH3 */ |
507 | if (uart_handle_sysrq_char(port, c, regs)) { | 506 | if (uart_handle_sysrq_char(port, c)) { |
508 | count--; i--; | 507 | count--; i--; |
509 | continue; | 508 | continue; |
510 | } | 509 | } |
@@ -652,18 +651,18 @@ static inline int sci_handle_breaks(struct uart_port *port) | |||
652 | return copied; | 651 | return copied; |
653 | } | 652 | } |
654 | 653 | ||
655 | static irqreturn_t sci_rx_interrupt(int irq, void *port, struct pt_regs *regs) | 654 | static irqreturn_t sci_rx_interrupt(int irq, void *port) |
656 | { | 655 | { |
657 | /* I think sci_receive_chars has to be called irrespective | 656 | /* I think sci_receive_chars has to be called irrespective |
658 | * of whether the I_IXOFF is set, otherwise, how is the interrupt | 657 | * of whether the I_IXOFF is set, otherwise, how is the interrupt |
659 | * to be disabled? | 658 | * to be disabled? |
660 | */ | 659 | */ |
661 | sci_receive_chars(port, regs); | 660 | sci_receive_chars(port); |
662 | 661 | ||
663 | return IRQ_HANDLED; | 662 | return IRQ_HANDLED; |
664 | } | 663 | } |
665 | 664 | ||
666 | static irqreturn_t sci_tx_interrupt(int irq, void *ptr, struct pt_regs *regs) | 665 | static irqreturn_t sci_tx_interrupt(int irq, void *ptr) |
667 | { | 666 | { |
668 | struct uart_port *port = ptr; | 667 | struct uart_port *port = ptr; |
669 | 668 | ||
@@ -674,7 +673,7 @@ static irqreturn_t sci_tx_interrupt(int irq, void *ptr, struct pt_regs *regs) | |||
674 | return IRQ_HANDLED; | 673 | return IRQ_HANDLED; |
675 | } | 674 | } |
676 | 675 | ||
677 | static irqreturn_t sci_er_interrupt(int irq, void *ptr, struct pt_regs *regs) | 676 | static irqreturn_t sci_er_interrupt(int irq, void *ptr) |
678 | { | 677 | { |
679 | struct uart_port *port = ptr; | 678 | struct uart_port *port = ptr; |
680 | 679 | ||
@@ -696,18 +695,18 @@ static irqreturn_t sci_er_interrupt(int irq, void *ptr, struct pt_regs *regs) | |||
696 | pr_debug("scif: overrun error\n"); | 695 | pr_debug("scif: overrun error\n"); |
697 | } | 696 | } |
698 | #endif | 697 | #endif |
699 | sci_rx_interrupt(irq, ptr, regs); | 698 | sci_rx_interrupt(irq, ptr); |
700 | } | 699 | } |
701 | 700 | ||
702 | sci_out(port, SCxSR, SCxSR_ERROR_CLEAR(port)); | 701 | sci_out(port, SCxSR, SCxSR_ERROR_CLEAR(port)); |
703 | 702 | ||
704 | /* Kick the transmission */ | 703 | /* Kick the transmission */ |
705 | sci_tx_interrupt(irq, ptr, regs); | 704 | sci_tx_interrupt(irq, ptr); |
706 | 705 | ||
707 | return IRQ_HANDLED; | 706 | return IRQ_HANDLED; |
708 | } | 707 | } |
709 | 708 | ||
710 | static irqreturn_t sci_br_interrupt(int irq, void *ptr, struct pt_regs *regs) | 709 | static irqreturn_t sci_br_interrupt(int irq, void *ptr) |
711 | { | 710 | { |
712 | struct uart_port *port = ptr; | 711 | struct uart_port *port = ptr; |
713 | 712 | ||
@@ -724,7 +723,7 @@ static irqreturn_t sci_br_interrupt(int irq, void *ptr, struct pt_regs *regs) | |||
724 | return IRQ_HANDLED; | 723 | return IRQ_HANDLED; |
725 | } | 724 | } |
726 | 725 | ||
727 | static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr, struct pt_regs *regs) | 726 | static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) |
728 | { | 727 | { |
729 | unsigned short ssr_status, scr_status; | 728 | unsigned short ssr_status, scr_status; |
730 | struct uart_port *port = ptr; | 729 | struct uart_port *port = ptr; |
@@ -734,16 +733,16 @@ static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr, struct pt_regs *regs) | |||
734 | 733 | ||
735 | /* Tx Interrupt */ | 734 | /* Tx Interrupt */ |
736 | if ((ssr_status & 0x0020) && (scr_status & 0x0080)) | 735 | if ((ssr_status & 0x0020) && (scr_status & 0x0080)) |
737 | sci_tx_interrupt(irq, ptr, regs); | 736 | sci_tx_interrupt(irq, ptr); |
738 | /* Rx Interrupt */ | 737 | /* Rx Interrupt */ |
739 | if ((ssr_status & 0x0002) && (scr_status & 0x0040)) | 738 | if ((ssr_status & 0x0002) && (scr_status & 0x0040)) |
740 | sci_rx_interrupt(irq, ptr, regs); | 739 | sci_rx_interrupt(irq, ptr); |
741 | /* Error Interrupt */ | 740 | /* Error Interrupt */ |
742 | if ((ssr_status & 0x0080) && (scr_status & 0x0400)) | 741 | if ((ssr_status & 0x0080) && (scr_status & 0x0400)) |
743 | sci_er_interrupt(irq, ptr, regs); | 742 | sci_er_interrupt(irq, ptr); |
744 | /* Break Interrupt */ | 743 | /* Break Interrupt */ |
745 | if ((ssr_status & 0x0010) && (scr_status & 0x0200)) | 744 | if ((ssr_status & 0x0010) && (scr_status & 0x0200)) |
746 | sci_br_interrupt(irq, ptr, regs); | 745 | sci_br_interrupt(irq, ptr); |
747 | 746 | ||
748 | return IRQ_HANDLED; | 747 | return IRQ_HANDLED; |
749 | } | 748 | } |
@@ -795,7 +794,7 @@ static struct notifier_block sci_nb = { &sci_notifier, NULL, 0 }; | |||
795 | static int sci_request_irq(struct sci_port *port) | 794 | static int sci_request_irq(struct sci_port *port) |
796 | { | 795 | { |
797 | int i; | 796 | int i; |
798 | irqreturn_t (*handlers[4])(int irq, void *ptr, struct pt_regs *regs) = { | 797 | irqreturn_t (*handlers[4])(int irq, void *ptr) = { |
799 | sci_er_interrupt, sci_rx_interrupt, sci_tx_interrupt, | 798 | sci_er_interrupt, sci_rx_interrupt, sci_tx_interrupt, |
800 | sci_br_interrupt, | 799 | sci_br_interrupt, |
801 | }; | 800 | }; |
diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c index 2f148e5b9255..709f93a6c18c 100644 --- a/drivers/serial/sn_console.c +++ b/drivers/serial/sn_console.c | |||
@@ -447,7 +447,6 @@ static int sn_debug_printf(const char *fmt, ...) | |||
447 | /** | 447 | /** |
448 | * sn_receive_chars - Grab characters, pass them to tty layer | 448 | * sn_receive_chars - Grab characters, pass them to tty layer |
449 | * @port: Port to operate on | 449 | * @port: Port to operate on |
450 | * @regs: Saved registers (needed by uart_handle_sysrq_char) | ||
451 | * @flags: irq flags | 450 | * @flags: irq flags |
452 | * | 451 | * |
453 | * Note: If we're not registered with the serial core infrastructure yet, | 452 | * Note: If we're not registered with the serial core infrastructure yet, |
@@ -455,8 +454,7 @@ static int sn_debug_printf(const char *fmt, ...) | |||
455 | * | 454 | * |
456 | */ | 455 | */ |
457 | static void | 456 | static void |
458 | sn_receive_chars(struct sn_cons_port *port, struct pt_regs *regs, | 457 | sn_receive_chars(struct sn_cons_port *port, unsigned long flags) |
459 | unsigned long flags) | ||
460 | { | 458 | { |
461 | int ch; | 459 | int ch; |
462 | struct tty_struct *tty; | 460 | struct tty_struct *tty; |
@@ -494,7 +492,7 @@ sn_receive_chars(struct sn_cons_port *port, struct pt_regs *regs, | |||
494 | sysrq_requested = 0; | 492 | sysrq_requested = 0; |
495 | if (ch && time_before(jiffies, sysrq_timeout)) { | 493 | if (ch && time_before(jiffies, sysrq_timeout)) { |
496 | spin_unlock_irqrestore(&port->sc_port.lock, flags); | 494 | spin_unlock_irqrestore(&port->sc_port.lock, flags); |
497 | handle_sysrq(ch, regs, NULL); | 495 | handle_sysrq(ch, NULL); |
498 | spin_lock_irqsave(&port->sc_port.lock, flags); | 496 | spin_lock_irqsave(&port->sc_port.lock, flags); |
499 | /* ignore actual sysrq command char */ | 497 | /* ignore actual sysrq command char */ |
500 | continue; | 498 | continue; |
@@ -615,10 +613,9 @@ static void sn_transmit_chars(struct sn_cons_port *port, int raw) | |||
615 | * sn_sal_interrupt - Handle console interrupts | 613 | * sn_sal_interrupt - Handle console interrupts |
616 | * @irq: irq #, useful for debug statements | 614 | * @irq: irq #, useful for debug statements |
617 | * @dev_id: our pointer to our port (sn_cons_port which contains the uart port) | 615 | * @dev_id: our pointer to our port (sn_cons_port which contains the uart port) |
618 | * @regs: Saved registers, used by sn_receive_chars for uart_handle_sysrq_char | ||
619 | * | 616 | * |
620 | */ | 617 | */ |
621 | static irqreturn_t sn_sal_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 618 | static irqreturn_t sn_sal_interrupt(int irq, void *dev_id) |
622 | { | 619 | { |
623 | struct sn_cons_port *port = (struct sn_cons_port *)dev_id; | 620 | struct sn_cons_port *port = (struct sn_cons_port *)dev_id; |
624 | unsigned long flags; | 621 | unsigned long flags; |
@@ -629,7 +626,7 @@ static irqreturn_t sn_sal_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
629 | 626 | ||
630 | spin_lock_irqsave(&port->sc_port.lock, flags); | 627 | spin_lock_irqsave(&port->sc_port.lock, flags); |
631 | if (status & SAL_CONSOLE_INTR_RECV) { | 628 | if (status & SAL_CONSOLE_INTR_RECV) { |
632 | sn_receive_chars(port, regs, flags); | 629 | sn_receive_chars(port, flags); |
633 | } | 630 | } |
634 | if (status & SAL_CONSOLE_INTR_XMIT) { | 631 | if (status & SAL_CONSOLE_INTR_XMIT) { |
635 | sn_transmit_chars(port, TRANSMIT_BUFFERED); | 632 | sn_transmit_chars(port, TRANSMIT_BUFFERED); |
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c index f851f0f44f9b..03941d27d15d 100644 --- a/drivers/serial/sunhv.c +++ b/drivers/serial/sunhv.c | |||
@@ -73,7 +73,7 @@ static inline long hypervisor_con_putchar(long ch) | |||
73 | 73 | ||
74 | static int hung_up = 0; | 74 | static int hung_up = 0; |
75 | 75 | ||
76 | static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs *regs) | 76 | static struct tty_struct *receive_chars(struct uart_port *port) |
77 | { | 77 | { |
78 | struct tty_struct *tty = NULL; | 78 | struct tty_struct *tty = NULL; |
79 | int saw_console_brk = 0; | 79 | int saw_console_brk = 0; |
@@ -106,7 +106,7 @@ static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs * | |||
106 | } | 106 | } |
107 | 107 | ||
108 | if (tty == NULL) { | 108 | if (tty == NULL) { |
109 | uart_handle_sysrq_char(port, c, regs); | 109 | uart_handle_sysrq_char(port, c); |
110 | continue; | 110 | continue; |
111 | } | 111 | } |
112 | 112 | ||
@@ -119,7 +119,7 @@ static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs * | |||
119 | flag = TTY_BREAK; | 119 | flag = TTY_BREAK; |
120 | } | 120 | } |
121 | 121 | ||
122 | if (uart_handle_sysrq_char(port, c, regs)) | 122 | if (uart_handle_sysrq_char(port, c)) |
123 | continue; | 123 | continue; |
124 | 124 | ||
125 | if ((port->ignore_status_mask & IGNORE_ALL) || | 125 | if ((port->ignore_status_mask & IGNORE_ALL) || |
@@ -161,14 +161,14 @@ static void transmit_chars(struct uart_port *port) | |||
161 | uart_write_wakeup(port); | 161 | uart_write_wakeup(port); |
162 | } | 162 | } |
163 | 163 | ||
164 | static irqreturn_t sunhv_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 164 | static irqreturn_t sunhv_interrupt(int irq, void *dev_id) |
165 | { | 165 | { |
166 | struct uart_port *port = dev_id; | 166 | struct uart_port *port = dev_id; |
167 | struct tty_struct *tty; | 167 | struct tty_struct *tty; |
168 | unsigned long flags; | 168 | unsigned long flags; |
169 | 169 | ||
170 | spin_lock_irqsave(&port->lock, flags); | 170 | spin_lock_irqsave(&port->lock, flags); |
171 | tty = receive_chars(port, regs); | 171 | tty = receive_chars(port); |
172 | transmit_chars(port); | 172 | transmit_chars(port); |
173 | spin_unlock_irqrestore(&port->lock, flags); | 173 | spin_unlock_irqrestore(&port->lock, flags); |
174 | 174 | ||
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c index cfe20f730436..08a7cd6a3a0c 100644 --- a/drivers/serial/sunsab.c +++ b/drivers/serial/sunsab.c | |||
@@ -108,8 +108,7 @@ static __inline__ void sunsab_cec_wait(struct uart_sunsab_port *up) | |||
108 | 108 | ||
109 | static struct tty_struct * | 109 | static struct tty_struct * |
110 | receive_chars(struct uart_sunsab_port *up, | 110 | receive_chars(struct uart_sunsab_port *up, |
111 | union sab82532_irq_status *stat, | 111 | union sab82532_irq_status *stat) |
112 | struct pt_regs *regs) | ||
113 | { | 112 | { |
114 | struct tty_struct *tty = NULL; | 113 | struct tty_struct *tty = NULL; |
115 | unsigned char buf[32]; | 114 | unsigned char buf[32]; |
@@ -161,7 +160,7 @@ receive_chars(struct uart_sunsab_port *up, | |||
161 | unsigned char ch = buf[i], flag; | 160 | unsigned char ch = buf[i], flag; |
162 | 161 | ||
163 | if (tty == NULL) { | 162 | if (tty == NULL) { |
164 | uart_handle_sysrq_char(&up->port, ch, regs); | 163 | uart_handle_sysrq_char(&up->port, ch); |
165 | continue; | 164 | continue; |
166 | } | 165 | } |
167 | 166 | ||
@@ -208,7 +207,7 @@ receive_chars(struct uart_sunsab_port *up, | |||
208 | flag = TTY_FRAME; | 207 | flag = TTY_FRAME; |
209 | } | 208 | } |
210 | 209 | ||
211 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 210 | if (uart_handle_sysrq_char(&up->port, ch)) |
212 | continue; | 211 | continue; |
213 | 212 | ||
214 | if ((stat->sreg.isr0 & (up->port.ignore_status_mask & 0xff)) == 0 && | 213 | if ((stat->sreg.isr0 & (up->port.ignore_status_mask & 0xff)) == 0 && |
@@ -301,7 +300,7 @@ static void check_status(struct uart_sunsab_port *up, | |||
301 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 300 | wake_up_interruptible(&up->port.info->delta_msr_wait); |
302 | } | 301 | } |
303 | 302 | ||
304 | static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 303 | static irqreturn_t sunsab_interrupt(int irq, void *dev_id) |
305 | { | 304 | { |
306 | struct uart_sunsab_port *up = dev_id; | 305 | struct uart_sunsab_port *up = dev_id; |
307 | struct tty_struct *tty; | 306 | struct tty_struct *tty; |
@@ -321,7 +320,7 @@ static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
321 | if ((status.sreg.isr0 & (SAB82532_ISR0_TCD | SAB82532_ISR0_TIME | | 320 | if ((status.sreg.isr0 & (SAB82532_ISR0_TCD | SAB82532_ISR0_TIME | |
322 | SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) || | 321 | SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) || |
323 | (status.sreg.isr1 & SAB82532_ISR1_BRK)) | 322 | (status.sreg.isr1 & SAB82532_ISR1_BRK)) |
324 | tty = receive_chars(up, &status, regs); | 323 | tty = receive_chars(up, &status); |
325 | if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) || | 324 | if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) || |
326 | (status.sreg.isr1 & SAB82532_ISR1_CSC)) | 325 | (status.sreg.isr1 & SAB82532_ISR1_CSC)) |
327 | check_status(up, &status); | 326 | check_status(up, &status); |
@@ -350,7 +349,7 @@ static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
350 | SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) || | 349 | SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) || |
351 | (status.sreg.isr1 & SAB82532_ISR1_BRK)) | 350 | (status.sreg.isr1 & SAB82532_ISR1_BRK)) |
352 | 351 | ||
353 | tty = receive_chars(up, &status, regs); | 352 | tty = receive_chars(up, &status); |
354 | if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) || | 353 | if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) || |
355 | (status.sreg.isr1 & (SAB82532_ISR1_BRK | SAB82532_ISR1_CSC))) | 354 | (status.sreg.isr1 & (SAB82532_ISR1_BRK | SAB82532_ISR1_CSC))) |
356 | check_status(up, &status); | 355 | check_status(up, &status); |
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 9b3b9aaa6b90..c577faea60e8 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c | |||
@@ -310,7 +310,7 @@ static void sunsu_enable_ms(struct uart_port *port) | |||
310 | } | 310 | } |
311 | 311 | ||
312 | static struct tty_struct * | 312 | static struct tty_struct * |
313 | receive_chars(struct uart_sunsu_port *up, unsigned char *status, struct pt_regs *regs) | 313 | receive_chars(struct uart_sunsu_port *up, unsigned char *status) |
314 | { | 314 | { |
315 | struct tty_struct *tty = up->port.info->tty; | 315 | struct tty_struct *tty = up->port.info->tty; |
316 | unsigned char ch, flag; | 316 | unsigned char ch, flag; |
@@ -367,7 +367,7 @@ receive_chars(struct uart_sunsu_port *up, unsigned char *status, struct pt_regs | |||
367 | else if (*status & UART_LSR_FE) | 367 | else if (*status & UART_LSR_FE) |
368 | flag = TTY_FRAME; | 368 | flag = TTY_FRAME; |
369 | } | 369 | } |
370 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 370 | if (uart_handle_sysrq_char(&up->port, ch)) |
371 | goto ignore_char; | 371 | goto ignore_char; |
372 | if ((*status & up->port.ignore_status_mask) == 0) | 372 | if ((*status & up->port.ignore_status_mask) == 0) |
373 | tty_insert_flip_char(tty, ch, flag); | 373 | tty_insert_flip_char(tty, ch, flag); |
@@ -445,7 +445,7 @@ static void check_modem_status(struct uart_sunsu_port *up) | |||
445 | wake_up_interruptible(&up->port.info->delta_msr_wait); | 445 | wake_up_interruptible(&up->port.info->delta_msr_wait); |
446 | } | 446 | } |
447 | 447 | ||
448 | static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 448 | static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id) |
449 | { | 449 | { |
450 | struct uart_sunsu_port *up = dev_id; | 450 | struct uart_sunsu_port *up = dev_id; |
451 | unsigned long flags; | 451 | unsigned long flags; |
@@ -459,7 +459,7 @@ static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id, struct pt_regs | |||
459 | status = serial_inp(up, UART_LSR); | 459 | status = serial_inp(up, UART_LSR); |
460 | tty = NULL; | 460 | tty = NULL; |
461 | if (status & UART_LSR_DR) | 461 | if (status & UART_LSR_DR) |
462 | tty = receive_chars(up, &status, regs); | 462 | tty = receive_chars(up, &status); |
463 | check_modem_status(up); | 463 | check_modem_status(up); |
464 | if (status & UART_LSR_THRE) | 464 | if (status & UART_LSR_THRE) |
465 | transmit_chars(up); | 465 | transmit_chars(up); |
@@ -497,7 +497,7 @@ static void sunsu_change_mouse_baud(struct uart_sunsu_port *up) | |||
497 | sunsu_change_speed(&up->port, up->cflag, 0, quot); | 497 | sunsu_change_speed(&up->port, up->cflag, 0, quot); |
498 | } | 498 | } |
499 | 499 | ||
500 | static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *regs, int is_break) | 500 | static void receive_kbd_ms_chars(struct uart_sunsu_port *up, int is_break) |
501 | { | 501 | { |
502 | do { | 502 | do { |
503 | unsigned char ch = serial_inp(up, UART_RX); | 503 | unsigned char ch = serial_inp(up, UART_RX); |
@@ -505,7 +505,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg | |||
505 | /* Stop-A is handled by drivers/char/keyboard.c now. */ | 505 | /* Stop-A is handled by drivers/char/keyboard.c now. */ |
506 | if (up->su_type == SU_PORT_KBD) { | 506 | if (up->su_type == SU_PORT_KBD) { |
507 | #ifdef CONFIG_SERIO | 507 | #ifdef CONFIG_SERIO |
508 | serio_interrupt(&up->serio, ch, 0, regs); | 508 | serio_interrupt(&up->serio, ch, 0); |
509 | #endif | 509 | #endif |
510 | } else if (up->su_type == SU_PORT_MS) { | 510 | } else if (up->su_type == SU_PORT_MS) { |
511 | int ret = suncore_mouse_baud_detection(ch, is_break); | 511 | int ret = suncore_mouse_baud_detection(ch, is_break); |
@@ -519,7 +519,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg | |||
519 | 519 | ||
520 | case 0: | 520 | case 0: |
521 | #ifdef CONFIG_SERIO | 521 | #ifdef CONFIG_SERIO |
522 | serio_interrupt(&up->serio, ch, 0, regs); | 522 | serio_interrupt(&up->serio, ch, 0); |
523 | #endif | 523 | #endif |
524 | break; | 524 | break; |
525 | }; | 525 | }; |
@@ -527,7 +527,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg | |||
527 | } while (serial_in(up, UART_LSR) & UART_LSR_DR); | 527 | } while (serial_in(up, UART_LSR) & UART_LSR_DR); |
528 | } | 528 | } |
529 | 529 | ||
530 | static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 530 | static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id) |
531 | { | 531 | { |
532 | struct uart_sunsu_port *up = dev_id; | 532 | struct uart_sunsu_port *up = dev_id; |
533 | 533 | ||
@@ -535,8 +535,7 @@ static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id, struct pt_regs | |||
535 | unsigned char status = serial_inp(up, UART_LSR); | 535 | unsigned char status = serial_inp(up, UART_LSR); |
536 | 536 | ||
537 | if ((status & UART_LSR_DR) || (status & UART_LSR_BI)) | 537 | if ((status & UART_LSR_DR) || (status & UART_LSR_BI)) |
538 | receive_kbd_ms_chars(up, regs, | 538 | receive_kbd_ms_chars(up, (status & UART_LSR_BI) != 0); |
539 | (status & UART_LSR_BI) != 0); | ||
540 | } | 539 | } |
541 | 540 | ||
542 | return IRQ_HANDLED; | 541 | return IRQ_HANDLED; |
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c index 0da3ebfff82d..b11f6dea2704 100644 --- a/drivers/serial/sunzilog.c +++ b/drivers/serial/sunzilog.c | |||
@@ -277,14 +277,13 @@ static void sunzilog_change_mouse_baud(struct uart_sunzilog_port *up) | |||
277 | } | 277 | } |
278 | 278 | ||
279 | static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, | 279 | static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, |
280 | unsigned char ch, int is_break, | 280 | unsigned char ch, int is_break) |
281 | struct pt_regs *regs) | ||
282 | { | 281 | { |
283 | if (ZS_IS_KEYB(up)) { | 282 | if (ZS_IS_KEYB(up)) { |
284 | /* Stop-A is handled by drivers/char/keyboard.c now. */ | 283 | /* Stop-A is handled by drivers/char/keyboard.c now. */ |
285 | #ifdef CONFIG_SERIO | 284 | #ifdef CONFIG_SERIO |
286 | if (up->serio_open) | 285 | if (up->serio_open) |
287 | serio_interrupt(&up->serio, ch, 0, regs); | 286 | serio_interrupt(&up->serio, ch, 0); |
288 | #endif | 287 | #endif |
289 | } else if (ZS_IS_MOUSE(up)) { | 288 | } else if (ZS_IS_MOUSE(up)) { |
290 | int ret = suncore_mouse_baud_detection(ch, is_break); | 289 | int ret = suncore_mouse_baud_detection(ch, is_break); |
@@ -299,7 +298,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, | |||
299 | case 0: | 298 | case 0: |
300 | #ifdef CONFIG_SERIO | 299 | #ifdef CONFIG_SERIO |
301 | if (up->serio_open) | 300 | if (up->serio_open) |
302 | serio_interrupt(&up->serio, ch, 0, regs); | 301 | serio_interrupt(&up->serio, ch, 0); |
303 | #endif | 302 | #endif |
304 | break; | 303 | break; |
305 | }; | 304 | }; |
@@ -308,8 +307,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, | |||
308 | 307 | ||
309 | static struct tty_struct * | 308 | static struct tty_struct * |
310 | sunzilog_receive_chars(struct uart_sunzilog_port *up, | 309 | sunzilog_receive_chars(struct uart_sunzilog_port *up, |
311 | struct zilog_channel __iomem *channel, | 310 | struct zilog_channel __iomem *channel) |
312 | struct pt_regs *regs) | ||
313 | { | 311 | { |
314 | struct tty_struct *tty; | 312 | struct tty_struct *tty; |
315 | unsigned char ch, r1, flag; | 313 | unsigned char ch, r1, flag; |
@@ -346,12 +344,12 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up, | |||
346 | ch &= up->parity_mask; | 344 | ch &= up->parity_mask; |
347 | 345 | ||
348 | if (unlikely(ZS_IS_KEYB(up)) || unlikely(ZS_IS_MOUSE(up))) { | 346 | if (unlikely(ZS_IS_KEYB(up)) || unlikely(ZS_IS_MOUSE(up))) { |
349 | sunzilog_kbdms_receive_chars(up, ch, 0, regs); | 347 | sunzilog_kbdms_receive_chars(up, ch, 0); |
350 | continue; | 348 | continue; |
351 | } | 349 | } |
352 | 350 | ||
353 | if (tty == NULL) { | 351 | if (tty == NULL) { |
354 | uart_handle_sysrq_char(&up->port, ch, regs); | 352 | uart_handle_sysrq_char(&up->port, ch); |
355 | continue; | 353 | continue; |
356 | } | 354 | } |
357 | 355 | ||
@@ -379,7 +377,7 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up, | |||
379 | else if (r1 & CRC_ERR) | 377 | else if (r1 & CRC_ERR) |
380 | flag = TTY_FRAME; | 378 | flag = TTY_FRAME; |
381 | } | 379 | } |
382 | if (uart_handle_sysrq_char(&up->port, ch, regs)) | 380 | if (uart_handle_sysrq_char(&up->port, ch)) |
383 | continue; | 381 | continue; |
384 | 382 | ||
385 | if (up->port.ignore_status_mask == 0xff || | 383 | if (up->port.ignore_status_mask == 0xff || |
@@ -394,8 +392,7 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up, | |||
394 | } | 392 | } |
395 | 393 | ||
396 | static void sunzilog_status_handle(struct uart_sunzilog_port *up, | 394 | static void sunzilog_status_handle(struct uart_sunzilog_port *up, |
397 | struct zilog_channel __iomem *channel, | 395 | struct zilog_channel __iomem *channel) |
398 | struct pt_regs *regs) | ||
399 | { | 396 | { |
400 | unsigned char status; | 397 | unsigned char status; |
401 | 398 | ||
@@ -408,7 +405,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up, | |||
408 | 405 | ||
409 | if (status & BRK_ABRT) { | 406 | if (status & BRK_ABRT) { |
410 | if (ZS_IS_MOUSE(up)) | 407 | if (ZS_IS_MOUSE(up)) |
411 | sunzilog_kbdms_receive_chars(up, 0, 1, regs); | 408 | sunzilog_kbdms_receive_chars(up, 0, 1); |
412 | if (ZS_IS_CONS(up)) { | 409 | if (ZS_IS_CONS(up)) { |
413 | /* Wait for BREAK to deassert to avoid potentially | 410 | /* Wait for BREAK to deassert to avoid potentially |
414 | * confusing the PROM. | 411 | * confusing the PROM. |
@@ -517,7 +514,7 @@ ack_tx_int: | |||
517 | ZS_WSYNC(channel); | 514 | ZS_WSYNC(channel); |
518 | } | 515 | } |
519 | 516 | ||
520 | static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 517 | static irqreturn_t sunzilog_interrupt(int irq, void *dev_id) |
521 | { | 518 | { |
522 | struct uart_sunzilog_port *up = dev_id; | 519 | struct uart_sunzilog_port *up = dev_id; |
523 | 520 | ||
@@ -538,9 +535,9 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *reg | |||
538 | ZS_WSYNC(channel); | 535 | ZS_WSYNC(channel); |
539 | 536 | ||
540 | if (r3 & CHARxIP) | 537 | if (r3 & CHARxIP) |
541 | tty = sunzilog_receive_chars(up, channel, regs); | 538 | tty = sunzilog_receive_chars(up, channel); |
542 | if (r3 & CHAEXT) | 539 | if (r3 & CHAEXT) |
543 | sunzilog_status_handle(up, channel, regs); | 540 | sunzilog_status_handle(up, channel); |
544 | if (r3 & CHATxIP) | 541 | if (r3 & CHATxIP) |
545 | sunzilog_transmit_chars(up, channel); | 542 | sunzilog_transmit_chars(up, channel); |
546 | } | 543 | } |
@@ -561,9 +558,9 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *reg | |||
561 | ZS_WSYNC(channel); | 558 | ZS_WSYNC(channel); |
562 | 559 | ||
563 | if (r3 & CHBRxIP) | 560 | if (r3 & CHBRxIP) |
564 | tty = sunzilog_receive_chars(up, channel, regs); | 561 | tty = sunzilog_receive_chars(up, channel); |
565 | if (r3 & CHBEXT) | 562 | if (r3 & CHBEXT) |
566 | sunzilog_status_handle(up, channel, regs); | 563 | sunzilog_status_handle(up, channel); |
567 | if (r3 & CHBTxIP) | 564 | if (r3 & CHBTxIP) |
568 | sunzilog_transmit_chars(up, channel); | 565 | sunzilog_transmit_chars(up, channel); |
569 | } | 566 | } |
diff --git a/drivers/serial/v850e_uart.c b/drivers/serial/v850e_uart.c index f802867c95c5..28f3bbff87bf 100644 --- a/drivers/serial/v850e_uart.c +++ b/drivers/serial/v850e_uart.c | |||
@@ -271,14 +271,14 @@ void v850e_uart_tx (struct uart_port *port) | |||
271 | v850e_uart_stop_tx (port, stopped); | 271 | v850e_uart_stop_tx (port, stopped); |
272 | } | 272 | } |
273 | 273 | ||
274 | static irqreturn_t v850e_uart_tx_irq(int irq, void *data, struct pt_regs *regs) | 274 | static irqreturn_t v850e_uart_tx_irq(int irq, void *data) |
275 | { | 275 | { |
276 | struct uart_port *port = data; | 276 | struct uart_port *port = data; |
277 | v850e_uart_tx (port); | 277 | v850e_uart_tx (port); |
278 | return IRQ_HANDLED; | 278 | return IRQ_HANDLED; |
279 | } | 279 | } |
280 | 280 | ||
281 | static irqreturn_t v850e_uart_rx_irq(int irq, void *data, struct pt_regs *regs) | 281 | static irqreturn_t v850e_uart_rx_irq(int irq, void *data) |
282 | { | 282 | { |
283 | struct uart_port *port = data; | 283 | struct uart_port *port = data; |
284 | unsigned ch_stat = TTY_NORMAL; | 284 | unsigned ch_stat = TTY_NORMAL; |
diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c index 6c8b0ea83c3c..fd51f8182dec 100644 --- a/drivers/serial/vr41xx_siu.c +++ b/drivers/serial/vr41xx_siu.c | |||
@@ -359,8 +359,7 @@ static void siu_break_ctl(struct uart_port *port, int ctl) | |||
359 | spin_unlock_irqrestore(&port->lock, flags); | 359 | spin_unlock_irqrestore(&port->lock, flags); |
360 | } | 360 | } |
361 | 361 | ||
362 | static inline void receive_chars(struct uart_port *port, uint8_t *status, | 362 | static inline void receive_chars(struct uart_port *port, uint8_t *status) |
363 | struct pt_regs *regs) | ||
364 | { | 363 | { |
365 | struct tty_struct *tty; | 364 | struct tty_struct *tty; |
366 | uint8_t lsr, ch; | 365 | uint8_t lsr, ch; |
@@ -405,7 +404,7 @@ static inline void receive_chars(struct uart_port *port, uint8_t *status, | |||
405 | flag = TTY_PARITY; | 404 | flag = TTY_PARITY; |
406 | } | 405 | } |
407 | 406 | ||
408 | if (uart_handle_sysrq_char(port, ch, regs)) | 407 | if (uart_handle_sysrq_char(port, ch)) |
409 | goto ignore_char; | 408 | goto ignore_char; |
410 | 409 | ||
411 | uart_insert_char(port, lsr, UART_LSR_OE, ch, flag); | 410 | uart_insert_char(port, lsr, UART_LSR_OE, ch, flag); |
@@ -472,7 +471,7 @@ static inline void transmit_chars(struct uart_port *port) | |||
472 | siu_stop_tx(port); | 471 | siu_stop_tx(port); |
473 | } | 472 | } |
474 | 473 | ||
475 | static irqreturn_t siu_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 474 | static irqreturn_t siu_interrupt(int irq, void *dev_id) |
476 | { | 475 | { |
477 | struct uart_port *port; | 476 | struct uart_port *port; |
478 | uint8_t iir, lsr; | 477 | uint8_t iir, lsr; |
@@ -485,7 +484,7 @@ static irqreturn_t siu_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
485 | 484 | ||
486 | lsr = siu_read(port, UART_LSR); | 485 | lsr = siu_read(port, UART_LSR); |
487 | if (lsr & UART_LSR_DR) | 486 | if (lsr & UART_LSR_DR) |
488 | receive_chars(port, &lsr, regs); | 487 | receive_chars(port, &lsr); |
489 | 488 | ||
490 | check_modem_status(port); | 489 | check_modem_status(port); |
491 | 490 | ||