> (please CC me in your replies as I am not suscribed to the ML) > > The following patch allows users to use KGDB over serial console on > board based on Samsung SOC. It has been tested on a mini2440. > > Signed-off-by: Julien Pichon <pichon.jln@xxxxxxxxx> > --- > drivers/tty/serial/samsung.c | 50 ++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 50 insertions(+), 0 deletions(-) > > diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c > index f96f37b..9f703ca 100644 > --- a/drivers/tty/serial/samsung.c > +++ b/drivers/tty/serial/samsung.c > @@ -877,11 +877,24 @@ s3c24xx_serial_verify_port(struct uart_port *port, struct serial_struct *ser) > > static struct console s3c24xx_serial_console; > > +static int __init s3c24xx_serial_console_init(void) > +{ > + register_console(&s3c24xx_serial_console); > + return 0; > +} > +console_initcall(s3c24xx_serial_console_init); > + > #define S3C24XX_SERIAL_CONSOLE &s3c24xx_serial_console > #else > #define S3C24XX_SERIAL_CONSOLE NULL > #endif > > +#ifdef CONFIG_CONSOLE_POLL > +static int s3c24xx_serial_get_poll_char(struct uart_port *port); > +static void s3c24xx_serial_put_poll_char(struct uart_port *port, > + unsigned char c); > +#endif > + > static struct uart_ops s3c24xx_serial_ops = { > .pm = s3c24xx_serial_pm, > .tx_empty = s3c24xx_serial_tx_empty, > @@ -900,6 +913,10 @@ static struct uart_ops s3c24xx_serial_ops = { > .request_port = s3c24xx_serial_request_port, > .config_port = s3c24xx_serial_config_port, > .verify_port = s3c24xx_serial_verify_port, > +#ifdef CONFIG_CONSOLE_POLL > + .poll_get_char = s3c24xx_serial_get_poll_char, > + .poll_put_char = s3c24xx_serial_put_poll_char, > +#endif > }; > > static struct uart_driver s3c24xx_uart_drv = { > @@ -1311,6 +1328,39 @@ s3c24xx_serial_console_txrdy(struct uart_port *port, unsigned int ufcon) > return (utrstat & S3C2410_UTRSTAT_TXE) ? 1 : 0; > } > > +#ifdef CONFIG_CONSOLE_POLL > +/* > + * Console polling routines for writing and reading from the uart while > + * in an interrupt or debug context. > + */ > + > +static int s3c24xx_serial_get_poll_char(struct uart_port *port) > +{ > + struct s3c24xx_uart_port *ourport = to_ourport(port); > + unsigned int ufstat, count; > + > + do { > + ufstat = rd_regl(port, S3C2410_UFSTAT); > + count = s3c24xx_serial_rx_fifocnt(ourport, ufstat); > + if (!count) > + cpu_relax(); > + } while (!count); > + > + return rd_regb(port, S3C2410_URXH); > +} > + > +static void s3c24xx_serial_put_poll_char(struct uart_port *port, > + unsigned char c) > +{ > + unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON); > + > + while (!s3c24xx_serial_console_txrdy(port, ufcon)) > + cpu_relax(); > + wr_regb(cons_uart, S3C2410_UTXH, c); > +} > + > +#endif /* CONFIG_CONSOLE_POLL */ > + > static void > s3c24xx_serial_console_putchar(struct uart_port *port, int ch) > { > -- > 1.7.2.5 > > (CC maintainers) Someone has time to review this patch ? -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html