Re: [PATCH 01/18] Blackfin Serial Driver: Add a debug function to serial driver.

Andrew Morton
2009-03-06T22:38:46Z

On Fri, 6 Mar 2009 14:42:43 +0800
Bryan Wu <cooloney@kernel.org> wrote:

> From: Graf Yang <graf.yang@analog.com>
>
> Signed-off-by: Graf Yang <graf.yang@analog.com>
> Signed-off-by: Bryan Wu <cooloney@kernel.org>
> ---
> drivers/serial/bfin_5xx.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 44 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
> index 318d69d..52ccc27 100644
> --- a/drivers/serial/bfin_5xx.c
> +++ b/drivers/serial/bfin_5xx.c
> @@ -21,6 +21,7 @@
> #include <linux/tty.h>
> #include <linux/tty_flip.h>
> #include <linux/serial_core.h>
> +#include <stdarg.h>
>
> #if defined(CONFIG_KGDB_SERIAL_CONSOLE) || \
> defined(CONFIG_KGDB_SERIAL_CONSOLE_MODULE)
> @@ -1177,6 +1178,49 @@ struct console __init *bfin_earlyserial_init(unsigned int port,
>
> #endif /* CONFIG_EARLY_PRINTK */
>
> +#ifdef CONFIG_DEBUG_KERNEL
> +void bfin_serial_debug(const char *fmt, ...)
> +{
> + struct bfin_serial_port *uart = &bfin_serial_ports[0];
> + unsigned short status, tmp;
> + int flags, i, count;
> + char buf[128];
> + va_list ap;
> +
> + if (bfin_serial_console.index < 0)
> + return; /* Too early. */
> +
> + va_start(ap, fmt);
> + vsprintf(buf, fmt, ap);
> + va_end(ap);
> + count = strlen(buf);
> +
> + spin_lock_irqsave(&uart->port.lock, flags);
> +
> + for (i = 0; i < count; i++) {
> + do {
> + status = UART_GET_LSR(uart);
> + } while (!(status & THRE));
> +
> +#ifndef CONFIG_BF54x
> + tmp = UART_GET_LCR(uart);
> + tmp &= ~DLAB;
> + UART_PUT_LCR(uart, tmp);
> +#endif
> + UART_PUT_CHAR(uart, buf[i]);
> + if (buf[i] == '\n') {
> + do {
> + status = UART_GET_LSR(uart);
> + } while (!(status & THRE));
> + UART_PUT_CHAR(uart, '\r');
> + }
> + }
> +
> + spin_unlock_irqrestore(&uart->port.lock, flags);
> +}
> +EXPORT_SYMBOL(bfin_serial_debug);
> +#endif

This function is used in later bugfix patches - otherwise it wouldn't
be a 2.6.29 patch.

I shall update the changelog to reflect this.