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 10 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();
}
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);
int err;
@ -92,55 +92,65 @@ static void serial_putc_dev(struct udevice *dev, char ch)
err = ops->putc(dev, ch);
} while (err == -EAGAIN);
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)
ops->setbrg(cur_dev, gd->baudrate);
}
do {
err = ops->getc(dev);
if (err == -EAGAIN)
WATCHDOG_RESET();
} while (err == -EAGAIN);
void serial_puts(const char *str)
{
while (*str)
serial_putc(*str++);
return err >= 0 ? err : 0;
}
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)
return ops->pending(cur_dev, true);
return ops->pending(dev, true);
return 1;
}
static int serial_getc_dev(struct udevice *dev)
void serial_putc(char ch)
{
struct dm_serial_ops *ops = serial_get_ops(dev);
int err;
do {
err = ops->getc(dev);
if (err == -EAGAIN)
WATCHDOG_RESET();
} while (err == -EAGAIN);
_serial_putc(cur_dev, ch);
}
return err >= 0 ? err : 0;
void serial_puts(const char *str)
{
_serial_puts(cur_dev, str);
}
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)
@ -149,29 +159,22 @@ void serial_stdio_init(void)
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)
{
while (*str)
serial_stub_putc(sdev, *str++);
_serial_puts(sdev->priv, str);
}
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)
{
struct udevice *dev = sdev->priv;
struct dm_serial_ops *ops = serial_get_ops(dev);
if (ops->pending)
return ops->pending(dev, true);
return 1;
return _serial_tstc(sdev->priv);
}
static int serial_post_probe(struct udevice *dev)

Loading…
Cancel
Save