From 7ebffaaf203812bbf9d13be4ae853da102ddba77 Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Mon, 2 Dec 2019 13:07:24 +0800 Subject: [PATCH] dm: serial: add "serial_dev_" API for normal serial device "serial_" API is designed for UART debug and "serial_stub_" API is designed for stdio device(e.g. keyboard, video, lcd...). We need new API for normal serial device, e.g. a UART working with other peripheral device. Signed-off-by: Joseph Chen Change-Id: Ifc2cb2ca9c1d4a395e89ceb5e059ec05a07b1967 --- drivers/serial/serial-uclass.c | 52 ++++++++++++++++++++++++++++++++++ include/serial.h | 8 ++++++ 2 files changed, 60 insertions(+) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index b4d6b7b6e7..ec90dbcde1 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -307,6 +307,58 @@ void serial_clear(void) __serial_clear(gd->cur_serial_dev); } +void serial_dev_putc(struct udevice *dev, char ch) +{ + if (!dev) + return; + + _serial_putc(dev, ch); +} + +void serial_dev_puts(struct udevice *dev, const char *str) +{ + if (!dev) + return; + + _serial_puts(dev, str); +} + +int serial_dev_getc(struct udevice *dev) +{ + if (!dev) + return 0; + + return _serial_getc(dev); +} + +int serial_dev_tstc(struct udevice *dev) +{ + if (!dev) + return 0; + + return _serial_tstc(dev); +} + +void serial_dev_setbrg(struct udevice *dev, int baudrate) +{ + struct dm_serial_ops *ops; + + if (!dev) + return; + + ops = serial_get_ops(dev); + if (ops->setbrg) + ops->setbrg(dev, baudrate); +} + +void serial_dev_clear(struct udevice *dev) +{ + if (!dev) + return; + + __serial_clear(dev); +} + void serial_stdio_init(void) { } diff --git a/include/serial.h b/include/serial.h index d87f01082a..e418b02f30 100644 --- a/include/serial.h +++ b/include/serial.h @@ -207,4 +207,12 @@ void sh_serial_initialize(void); void uartlite_serial_initialize(void); void zynq_serial_initialize(void); +/* serial device */ +int serial_dev_getc(struct udevice *dev); +int serial_dev_tstc(struct udevice *dev); +void serial_dev_putc(struct udevice *dev, char ch); +void serial_dev_puts(struct udevice *dev, const char *str); +void serial_dev_setbrg(struct udevice *dev, int baudrate); +void serial_dev_clear(struct udevice *dev); + #endif