diff options
author | Peng Fan <peng.fan@nxp.com> | 2018-11-15 13:13:14 +0800 |
---|---|---|
committer | Peng Fan <peng.fan@nxp.com> | 2018-11-15 16:36:09 +0800 |
commit | aa08894ff41b37f951e2875291763987b13fff85 (patch) | |
tree | c39782a7c8a4076bf3866bb971bd9d555b794f7f /drivers | |
parent | ddb393c45158f6114bd53c83dcd8397a6c2acbdc (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.c | 13 |
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) |