dm: serial: consolidate common code more

Commit b8893327e9 (dm: serial: Put common code into separate functions)
consolidated getc() and putc().  This commit does more puts() and tsts().

Also rename locally used functions to _serial_*() for clarification
because we have similar functions names here are there in this file.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: Simon Glass <sjg@chromium.org>
master
Masahiro Yamada 11 years ago committed by Simon Glass
parent 52a0a6f0dc
commit eea5a4cc1b
  1. 79
      drivers/serial/serial-uclass.c

@ -83,7 +83,7 @@ void serial_initialize(void)
serial_find_console_or_panic(); serial_find_console_or_panic();
} }
static void serial_putc_dev(struct udevice *dev, char ch) static void _serial_putc(struct udevice *dev, char ch)
{ {
struct dm_serial_ops *ops = serial_get_ops(dev); struct dm_serial_ops *ops = serial_get_ops(dev);
int err; int err;
@ -92,55 +92,65 @@ static void serial_putc_dev(struct udevice *dev, char ch)
err = ops->putc(dev, ch); err = ops->putc(dev, ch);
} while (err == -EAGAIN); } while (err == -EAGAIN);
if (ch == '\n') if (ch == '\n')
serial_putc_dev(dev, '\r'); _serial_putc(dev, '\r');
} }
void serial_putc(char ch) static void _serial_puts(struct udevice *dev, const char *str)
{ {
serial_putc_dev(cur_dev, ch); while (*str)
_serial_putc(dev, *str++);
} }
void serial_setbrg(void) static int _serial_getc(struct udevice *dev)
{ {
struct dm_serial_ops *ops = serial_get_ops(cur_dev); struct dm_serial_ops *ops = serial_get_ops(dev);
int err;
if (ops->setbrg) do {
ops->setbrg(cur_dev, gd->baudrate); err = ops->getc(dev);
} if (err == -EAGAIN)
WATCHDOG_RESET();
} while (err == -EAGAIN);
void serial_puts(const char *str) return err >= 0 ? err : 0;
{
while (*str)
serial_putc(*str++);
} }
int serial_tstc(void) static int _serial_tstc(struct udevice *dev)
{ {
struct dm_serial_ops *ops = serial_get_ops(cur_dev); struct dm_serial_ops *ops = serial_get_ops(dev);
if (ops->pending) if (ops->pending)
return ops->pending(cur_dev, true); return ops->pending(dev, true);
return 1; return 1;
} }
static int serial_getc_dev(struct udevice *dev) void serial_putc(char ch)
{ {
struct dm_serial_ops *ops = serial_get_ops(dev); _serial_putc(cur_dev, ch);
int err; }
do {
err = ops->getc(dev);
if (err == -EAGAIN)
WATCHDOG_RESET();
} while (err == -EAGAIN);
return err >= 0 ? err : 0; void serial_puts(const char *str)
{
_serial_puts(cur_dev, str);
} }
int serial_getc(void) int serial_getc(void)
{ {
return serial_getc_dev(cur_dev); return _serial_getc(cur_dev);
}
int serial_tstc(void)
{
return _serial_tstc(cur_dev);
}
void serial_setbrg(void)
{
struct dm_serial_ops *ops = serial_get_ops(cur_dev);
if (ops->setbrg)
ops->setbrg(cur_dev, gd->baudrate);
} }
void serial_stdio_init(void) void serial_stdio_init(void)
@ -149,29 +159,22 @@ void serial_stdio_init(void)
static void serial_stub_putc(struct stdio_dev *sdev, const char ch) static void serial_stub_putc(struct stdio_dev *sdev, const char ch)
{ {
serial_putc_dev(sdev->priv, ch); _serial_putc(sdev->priv, ch);
} }
void serial_stub_puts(struct stdio_dev *sdev, const char *str) void serial_stub_puts(struct stdio_dev *sdev, const char *str)
{ {
while (*str) _serial_puts(sdev->priv, str);
serial_stub_putc(sdev, *str++);
} }
int serial_stub_getc(struct stdio_dev *sdev) int serial_stub_getc(struct stdio_dev *sdev)
{ {
return serial_getc_dev(sdev->priv); return _serial_getc(sdev->priv);
} }
int serial_stub_tstc(struct stdio_dev *sdev) int serial_stub_tstc(struct stdio_dev *sdev)
{ {
struct udevice *dev = sdev->priv; return _serial_tstc(sdev->priv);
struct dm_serial_ops *ops = serial_get_ops(dev);
if (ops->pending)
return ops->pending(dev, true);
return 1;
} }
static int serial_post_probe(struct udevice *dev) static int serial_post_probe(struct udevice *dev)

Loading…
Cancel
Save