summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2018-11-15 13:13:14 +0800
committerPeng Fan <peng.fan@nxp.com>2018-11-15 16:36:09 +0800
commitaa08894ff41b37f951e2875291763987b13fff85 (patch)
treec39782a7c8a4076bf3866bb971bd9d555b794f7f /drivers
parentddb393c45158f6114bd53c83dcd8397a6c2acbdc (diff)
MLK-20373-2 dm: serial: introduce puts hook
Introduce puts hook for dm serial driver. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Flynn xu <flynn.xu@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/serial/serial-uclass.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index 9891c20656..eb8f80a459 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -182,8 +182,17 @@ static void _serial_putc(struct udevice *dev, char ch)
static void _serial_puts(struct udevice *dev, const char *str)
{
- while (*str)
- _serial_putc(dev, *str++);
+ struct dm_serial_ops *ops = serial_get_ops(dev);
+ int err;
+
+ if (ops->puts) {
+ do {
+ err = ops->puts(dev, str);
+ } while (err == -EAGAIN);
+ } else {
+ while (*str)
+ _serial_putc(dev, *str++);
+ }
}
static int __serial_getc(struct udevice *dev)