diff options
Diffstat (limited to 'drivers/serial/sunzilog.c')
-rw-r--r-- | drivers/serial/sunzilog.c | 31 |
1 files changed, 14 insertions, 17 deletions
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 | } |