Re: [PATCH 15/18] Blackfin Serial Driver: merge the upstream adeos/xenomai

Andrew Morton
2009-03-06T22:40:25Z

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

> From: Philippe Gerum <rpm@xenomai.org>
>
> add ipipe serial debug function for adeos
>
> Signed-off-by: Philippe Gerum <rpm@xenomai.org>
> Signed-off-by: Bryan Wu <cooloney@kernel.org>

Changelog is useless.

> 1 files changed, 45 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
> index 71a9e6b..8aa0e37 100644
> --- a/drivers/serial/bfin_5xx.c
> +++ b/drivers/serial/bfin_5xx.c
> @@ -1145,6 +1145,51 @@ static void bfin_serial_console_putchar(struct uart_port *port, int ch)
> SSYNC();
> }
>
> +#ifdef CONFIG_IPIPE
> +
> +#include <stdarg.h>
> +
> +void __ipipe_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;
> +
> + va_start(ap, fmt);
> + vsprintf(buf, fmt, ap);
> + va_end(ap);
> + count = strlen(buf);
> +
> + local_irq_save_hw(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');
> + }
> + }
> +
> + local_irq_restore_hw(flags);
> +}
> +EXPORT_SYMBOL(__ipipe_serial_debug);
> +
> +#endif /* CONFIG_IPIPE */

What does this do? What bug does it fix? Why is it needed in 2.6.29?

None of the other patches add references to this symbol.

Why is it exported to modules?