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