#endif /* CONFIG_SERIAL_M32R_PLDSIO */
-static unsigned int sio_in(struct uart_sio_port *up, int offset)
+static _INLINE_ unsigned int sio_in(struct uart_sio_port *up, int offset)
{
return __sio_in(up->port.iobase + offset);
}
-static void sio_out(struct uart_sio_port *up, int offset, int value)
+static _INLINE_ void sio_out(struct uart_sio_port *up, int offset, int value)
{
__sio_out(value, up->port.iobase + offset);
}
-static unsigned int serial_in(struct uart_sio_port *up, int offset)
+static _INLINE_ unsigned int serial_in(struct uart_sio_port *up, int offset)
{
if (!offset)
return 0;
return __sio_in(offset);
}
-static void serial_out(struct uart_sio_port *up, int offset, int value)
+static _INLINE_ void
+serial_out(struct uart_sio_port *up, int offset, int value)
{
if (!offset)
return;
serial_out(up, UART_IER, up->ier);
}
-static void receive_chars(struct uart_sio_port *up, int *status,
- struct pt_regs *regs)
+static _INLINE_ void receive_chars(struct uart_sio_port *up, int *status,
+ struct pt_regs *regs)
{
struct tty_struct *tty = up->port.info->tty;
unsigned char ch;
tty_flip_buffer_push(tty);
}
-static void transmit_chars(struct uart_sio_port *up)
+static _INLINE_ void transmit_chars(struct uart_sio_port *up)
{
struct circ_buf *xmit = &up->port.info->xmit;
int count;
}
}
-static void m32r_sio_console_putchar(struct uart_port *port, int ch)
-{
- struct uart_sio_port *up = (struct uart_sio_port *)port;
-
- wait_for_xmitr(up);
- sio_out(up, SIOTXB, ch);
-}
-
/*
* Print a string to the serial port trying not to disturb
* any possible real use of the port...
{
struct uart_sio_port *up = &m32r_sio_ports[co->index];
unsigned int ier;
+ int i;
/*
* First save the UER then disable the interrupts
ier = sio_in(up, SIOTRCR);
sio_out(up, SIOTRCR, 0);
- uart_console_write(&up->port, s, count, m32r_sio_console_putchar);
+ /*
+ * Now, do each character
+ */
+ for (i = 0; i < count; i++, s++) {
+ wait_for_xmitr(up);
+
+ /*
+ * Send the character out.
+ * If a LF, also do CR...
+ */
+ sio_out(up, SIOTXB, *s);
+
+ if (*s == 10) {
+ wait_for_xmitr(up);
+ sio_out(up, SIOTXB, 13);
+ }
+ }
/*
* Finally, wait for transmitter to become empty