aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/21285.c4
-rw-r--r--drivers/serial/68328serial.c9
-rw-r--r--drivers/serial/68360serial.c2
-rw-r--r--drivers/serial/8250.c14
-rw-r--r--drivers/serial/amba-pl010.c15
-rw-r--r--drivers/serial/amba-pl011.c15
-rw-r--r--drivers/serial/atmel_serial.c8
-rw-r--r--drivers/serial/clps711x.c6
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_core.c16
-rw-r--r--drivers/serial/crisv10.c6
-rw-r--r--drivers/serial/dz.c2
-rw-r--r--drivers/serial/icom.c3
-rw-r--r--drivers/serial/imx.c8
-rw-r--r--drivers/serial/ioc3_serial.c10
-rw-r--r--drivers/serial/ioc4_serial.c3
-rw-r--r--drivers/serial/ip22zilog.c18
-rw-r--r--drivers/serial/jsm/jsm.h2
-rw-r--r--drivers/serial/jsm/jsm_neo.c2
-rw-r--r--drivers/serial/m32r_sio.c14
-rw-r--r--drivers/serial/mcfserial.c2
-rw-r--r--drivers/serial/mpc52xx_uart.c10
-rw-r--r--drivers/serial/mpsc.c8
-rw-r--r--drivers/serial/netx-serial.c8
-rw-r--r--drivers/serial/pmac_zilog.c17
-rw-r--r--drivers/serial/pxa.c10
-rw-r--r--drivers/serial/s3c2410.c6
-rw-r--r--drivers/serial/sa1100.c8
-rw-r--r--drivers/serial/serial_lh7a40x.c16
-rw-r--r--drivers/serial/serial_txx9.c8
-rw-r--r--drivers/serial/sh-sci.c33
-rw-r--r--drivers/serial/sn_console.c11
-rw-r--r--drivers/serial/sunhv.c10
-rw-r--r--drivers/serial/sunsab.c13
-rw-r--r--drivers/serial/sunsu.c19
-rw-r--r--drivers/serial/sunzilog.c31
-rw-r--r--drivers/serial/v850e_uart.c4
-rw-r--r--drivers/serial/vr41xx_siu.c9
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
88static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs) 88static 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
126static irqreturn_t serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs) 126static 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
278static void receive_chars(struct m68k_serial *info, struct pt_regs *regs, 278static 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 */
380irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs) 379irqreturn_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 */
615static void rs_360_interrupt(int vec, void *dev_id, struct pt_regs *fp) 615static 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
1177static void 1177static void
1178receive_chars(struct uart_8250_port *up, int *status, struct pt_regs *regs) 1178receive_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 */
1311static inline void 1311static inline void
1312serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs) 1312serial8250_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 */
1345static irqreturn_t serial8250_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1345static 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
114static void 114static void pl010_rx_chars(struct uart_port *port)
115#ifdef SUPPORT_SYSRQ
116pl010_rx_chars(struct uart_port *port, struct pt_regs *regs)
117#else
118pl010_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
230static irqreturn_t pl010_int(int irq, void *dev_id, struct pt_regs *regs) 225static 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
110static void 110static void pl011_rx_chars(struct uart_amba_port *uap)
111#ifdef SUPPORT_SYSRQ
112pl011_rx_chars(struct uart_amba_port *uap, struct pt_regs *regs)
113#else
114pl011_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
221static irqreturn_t pl011_int(int irq, void *dev_id, struct pt_regs *regs) 216static 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 */
252static void atmel_rx_chars(struct uart_port *port, struct pt_regs *regs) 252static 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 */
342static irqreturn_t atmel_interrupt(int irq, void *dev_id, struct pt_regs *regs) 342static 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
96static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) 96static 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
150static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) 150static 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 */
251static void cpm_uart_int_tx(struct uart_port *port, struct pt_regs *regs) 251static 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 */
261static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs) 261static 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 */
376static irqreturn_t cpm_uart_int(int irq, void *data, struct pt_regs *regs) 376static 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
2348static irqreturn_t 2348static irqreturn_t
2349tr_interrupt(int irq, void *dev_id, struct pt_regs * regs) 2349tr_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
2397static irqreturn_t 2397static irqreturn_t
2398rec_interrupt(int irq, void *dev_id, struct pt_regs * regs) 2398rec_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 */
3056static irqreturn_t 3056static irqreturn_t
3057ser_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3057ser_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 */
342static irqreturn_t dz_interrupt(int irq, void *dev, struct pt_regs *regs) 342static 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
847static irqreturn_t icom_interrupt(int irq, void *dev_id, 847static 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
185static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs) 185static 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
201static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs) 201static 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
230static irqreturn_t imx_rxint(int irq, void *dev_id, struct pt_regs *regs) 230static 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
1434static int inline 1433static int inline
1435ioc3uart_intr_one(struct ioc3_submodule *is, 1434ioc3uart_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
1635static int ioc3uart_intr(struct ioc3_submodule *is, 1633static 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
993static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs) 992static 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
254static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up, 254static 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
341static void ip22zilog_status_handle(struct uart_ip22zilog_port *up, 340static 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
446static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) 444static 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 ************************************************************************/
101struct board_ops { 101struct 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 */
1117static irqreturn_t neo_intr(int irq, void *voidbrd, struct pt_regs *regs) 1117static 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
326static void receive_chars(struct uart_sio_port *up, int *status, 326static 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 */
441static inline void m32r_sio_handle_port(struct uart_sio_port *up, 440static 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 */
466static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id, 465static 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 */
388irqreturn_t mcfrs_interrupt(int irq, void *dev_id, struct pt_regs *regs) 388irqreturn_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 */
88static irqreturn_t mpc52xx_uart_int(int irq,void *dev_id,struct pt_regs *regs); 88static 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
412static inline int 412static inline int
413mpc52xx_uart_int_rx_chars(struct uart_port *port, struct pt_regs *regs) 413mpc52xx_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
512static irqreturn_t 512static irqreturn_t
513mpc52xx_uart_int(int irq, void *dev_id, struct pt_regs *regs) 513mpc52xx_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
994static inline int 994static inline int
995mpsc_rx_intr(struct mpsc_port_info *pi, struct pt_regs *regs) 995mpsc_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 */
1259static irqreturn_t 1259static irqreturn_t
1260mpsc_sdma_intr(int irq, void *dev_id, struct pt_regs *regs) 1260mpsc_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
203static void netx_rxint(struct uart_port *port, struct pt_regs *regs) 203static 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
248static irqreturn_t netx_int(int irq, void *dev_id, struct pt_regs *regs) 248static 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
207static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap, 207static 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
338static void pmz_status_handle(struct uart_pmac_port *uap, struct pt_regs *regs) 337static 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.... */
441static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs) 440static 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
101static inline void 101static inline void receive_chars(struct uart_pxa_port *up, int *status)
102receive_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 */
234static inline irqreturn_t 233static inline irqreturn_t serial_pxa_irq(int irq, void *dev_id)
235serial_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
312static irqreturn_t 312static irqreturn_t
313s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs) 313s3c24xx_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
396static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id, struct pt_regs *regs) 396static 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
192static void 192static void
193sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) 193sa1100_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
284static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs) 284static 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
138static void 138static void lh7a40xuart_rx_chars (struct uart_port* port)
139#ifdef SUPPORT_SYSRQ
140lh7a40xuart_rx_chars (struct uart_port* port, struct pt_regs* regs)
141#else
142lh7a40xuart_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
251static irqreturn_t lh7a40xuart_int (int irq, void* dev_id, 246static 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
285static inline void 285static inline void
286receive_chars(struct uart_txx9_port *up, unsigned int *status, struct pt_regs *regs) 286receive_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
394static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id, struct pt_regs *regs) 394static 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
449static inline void sci_receive_chars(struct uart_port *port, 449static 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
655static irqreturn_t sci_rx_interrupt(int irq, void *port, struct pt_regs *regs) 654static 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
666static irqreturn_t sci_tx_interrupt(int irq, void *ptr, struct pt_regs *regs) 665static 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
677static irqreturn_t sci_er_interrupt(int irq, void *ptr, struct pt_regs *regs) 676static 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
710static irqreturn_t sci_br_interrupt(int irq, void *ptr, struct pt_regs *regs) 709static 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
727static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr, struct pt_regs *regs) 726static 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 };
795static int sci_request_irq(struct sci_port *port) 794static 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 */
457static void 456static void
458sn_receive_chars(struct sn_cons_port *port, struct pt_regs *regs, 457sn_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 */
621static irqreturn_t sn_sal_interrupt(int irq, void *dev_id, struct pt_regs *regs) 618static 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
74static int hung_up = 0; 74static int hung_up = 0;
75 75
76static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs *regs) 76static 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
164static irqreturn_t sunhv_interrupt(int irq, void *dev_id, struct pt_regs *regs) 164static 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
109static struct tty_struct * 109static struct tty_struct *
110receive_chars(struct uart_sunsab_port *up, 110receive_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
304static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs) 303static 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
312static struct tty_struct * 312static struct tty_struct *
313receive_chars(struct uart_sunsu_port *up, unsigned char *status, struct pt_regs *regs) 313receive_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
448static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id, struct pt_regs *regs) 448static 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
500static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *regs, int is_break) 500static 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
530static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id, struct pt_regs *regs) 530static 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
279static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, 279static 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
309static struct tty_struct * 308static struct tty_struct *
310sunzilog_receive_chars(struct uart_sunzilog_port *up, 309sunzilog_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
396static void sunzilog_status_handle(struct uart_sunzilog_port *up, 394static 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
520static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) 517static 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
274static irqreturn_t v850e_uart_tx_irq(int irq, void *data, struct pt_regs *regs) 274static 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
281static irqreturn_t v850e_uart_rx_irq(int irq, void *data, struct pt_regs *regs) 281static 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
362static inline void receive_chars(struct uart_port *port, uint8_t *status, 362static 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
475static irqreturn_t siu_interrupt(int irq, void *dev_id, struct pt_regs *regs) 474static 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