Commit b3718602 authored by David S. Miller's avatar David S. Miller

SPARC UART: More build fixes.

parent 7e0fc16e
...@@ -13,13 +13,19 @@ ...@@ -13,13 +13,19 @@
#ifndef _SERIAL_SUN_H #ifndef _SERIAL_SUN_H
#define _SERIAL_SUN_H #define _SERIAL_SUN_H
#include <linux/config.h> /* Serial keyboard defines for L1-A processing... */
#define SUNKBD_RESET 0xff
#define SUNKBD_L1 0x01
#define SUNKBD_UP 0x80
#define SUNKBD_A 0x4d
extern void sun_do_break(void); extern void sun_do_break(void);
extern unsigned int suncore_mouse_baud_cflag_next(unsigned int, int *); extern unsigned int suncore_mouse_baud_cflag_next(unsigned int, int *);
extern int suncore_mouse_baud_detection(unsigned char, int); extern int suncore_mouse_baud_detection(unsigned char, int);
extern struct pt_regs *kbd_pt_regs;
extern int serial_console; extern int serial_console;
extern int stop_a_enabled; extern int stop_a_enabled;
extern int sunserial_current_minor; extern int sunserial_current_minor;
......
This diff is collapsed.
...@@ -286,7 +286,8 @@ static void sunzilog_change_mouse_baud(struct uart_sunzilog_port *up) ...@@ -286,7 +286,8 @@ static void sunzilog_change_mouse_baud(struct uart_sunzilog_port *up)
} }
static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up,
unsigned char ch, int is_break) unsigned char ch, int is_break,
struct pt_regs *regs)
{ {
if (ZS_IS_KEYB(up)) { if (ZS_IS_KEYB(up)) {
if (ch == SUNKBD_RESET) { if (ch == SUNKBD_RESET) {
...@@ -304,6 +305,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, ...@@ -304,6 +305,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up,
up->kbd_id = 0; up->kbd_id = 0;
return; return;
} }
kbd_pt_regs = regs;
#ifdef CONFIG_SERIO #ifdef CONFIG_SERIO
serio_interrupt(&up->serio, ch, 0); serio_interrupt(&up->serio, ch, 0);
#endif #endif
...@@ -363,7 +365,7 @@ static void sunzilog_receive_chars(struct uart_sunzilog_port *up, ...@@ -363,7 +365,7 @@ static void sunzilog_receive_chars(struct uart_sunzilog_port *up,
ch &= up->parity_mask; ch &= up->parity_mask;
if (unlikely(ZS_IS_KEYB(up)) || unlikely(ZS_IS_MOUSE(up))) { if (unlikely(ZS_IS_KEYB(up)) || unlikely(ZS_IS_MOUSE(up))) {
sunzilog_kbdms_receive_chars(up, ch, 0); sunzilog_kbdms_receive_chars(up, ch, 0, regs);
goto next_char; goto next_char;
} }
...@@ -440,7 +442,8 @@ static void sunzilog_receive_chars(struct uart_sunzilog_port *up, ...@@ -440,7 +442,8 @@ static void sunzilog_receive_chars(struct uart_sunzilog_port *up,
} }
static void sunzilog_status_handle(struct uart_sunzilog_port *up, static void sunzilog_status_handle(struct uart_sunzilog_port *up,
struct zilog_channel *channel) struct zilog_channel *channel,
struct pt_regs *regs)
{ {
unsigned char status; unsigned char status;
...@@ -452,7 +455,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up, ...@@ -452,7 +455,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up,
ZS_WSYNC(channel); ZS_WSYNC(channel);
if ((status & BRK_ABRT) && ZS_IS_MOUSE(up)) if ((status & BRK_ABRT) && ZS_IS_MOUSE(up))
sunzilog_kbdms_receive_chars(up, 0, 1); sunzilog_kbdms_receive_chars(up, 0, 1, regs);
if (ZS_WANTS_MODEM_STATUS(up)) { if (ZS_WANTS_MODEM_STATUS(up)) {
if (status & SYNC) if (status & SYNC)
...@@ -558,7 +561,7 @@ static void sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -558,7 +561,7 @@ static void sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (r3 & CHARxIP) if (r3 & CHARxIP)
sunzilog_receive_chars(up, channel, regs); sunzilog_receive_chars(up, channel, regs);
if (r3 & CHAEXT) if (r3 & CHAEXT)
sunzilog_status_handle(up, channel); sunzilog_status_handle(up, channel, regs);
if (r3 & CHATxIP) if (r3 & CHATxIP)
sunzilog_transmit_chars(up, channel); sunzilog_transmit_chars(up, channel);
} }
...@@ -577,7 +580,7 @@ static void sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -577,7 +580,7 @@ static void sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (r3 & CHBRxIP) if (r3 & CHBRxIP)
sunzilog_receive_chars(up, channel, regs); sunzilog_receive_chars(up, channel, regs);
if (r3 & CHBEXT) if (r3 & CHBEXT)
sunzilog_status_handle(up, channel); sunzilog_status_handle(up, channel, regs);
if (r3 & CHBTxIP) if (r3 & CHBTxIP)
sunzilog_transmit_chars(up, channel); sunzilog_transmit_chars(up, channel);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment