* membase is an 'ioremapped' cookie. This is compatible with the old
* serial.c driver, and is currently the preferred form.
*/
+#include <linux/config.h>
#if defined(CONFIG_SERIAL_M32R_SIO_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#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 int serial_link_irq_chain(struct uart_sio_port *up)
{
struct irq_info *i = irq_lists + up->port.irq;
- int ret, irq_flags = up->port.flags & UPF_SHARE_IRQ ? IRQF_SHARED : 0;
+ int ret, irq_flags = up->port.flags & UPF_SHARE_IRQ ? SA_SHIRQ : 0;
spin_lock_irq(&i->lock);
}
}
-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
static struct uart_driver m32r_sio_reg = {
.owner = THIS_MODULE,
.driver_name = "sio",
+ .devfs_name = "tts/",
.dev_name = "ttyS",
.major = TTY_MAJOR,
.minor = 64,