dm: console/serial: fix flushc() doesn't work
fixes: c1e72b20c9
(dm: console/serial: add flushc() support)
Change-Id: I0e0fae58b23bad52b4377d00e89f1b055d39f187
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
parent
09d1ed2844
commit
a581116483
|
|
@ -54,6 +54,11 @@ static int nulldev_input(struct stdio_dev *dev)
|
|||
/* nulldev is empty! */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void nulldev_clear(struct stdio_dev *dev)
|
||||
{
|
||||
/* nulldev is empty! */
|
||||
}
|
||||
#endif
|
||||
|
||||
static void stdio_serial_putc(struct stdio_dev *dev, const char c)
|
||||
|
|
@ -76,6 +81,11 @@ static int stdio_serial_tstc(struct stdio_dev *dev)
|
|||
return serial_tstc();
|
||||
}
|
||||
|
||||
static void stdio_serial_clear(struct stdio_dev *dev)
|
||||
{
|
||||
serial_clear();
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* SYSTEM DRIVERS
|
||||
**************************************************************************
|
||||
|
|
@ -93,6 +103,7 @@ static void drv_system_init (void)
|
|||
dev.puts = stdio_serial_puts;
|
||||
dev.getc = stdio_serial_getc;
|
||||
dev.tstc = stdio_serial_tstc;
|
||||
dev.clear = stdio_serial_clear;
|
||||
stdio_register (&dev);
|
||||
|
||||
#ifdef CONFIG_SYS_DEVICE_NULLDEV
|
||||
|
|
@ -104,6 +115,7 @@ static void drv_system_init (void)
|
|||
dev.puts = nulldev_puts;
|
||||
dev.getc = nulldev_input;
|
||||
dev.tstc = nulldev_input;
|
||||
dev.clear = nulldev_clear;
|
||||
|
||||
stdio_register (&dev);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -201,6 +201,14 @@ static int __serial_tstc(struct udevice *dev)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static void __serial_clear(struct udevice *dev)
|
||||
{
|
||||
struct dm_serial_ops *ops = serial_get_ops(dev);
|
||||
|
||||
if (ops->clear)
|
||||
ops->clear(dev);
|
||||
}
|
||||
|
||||
#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER)
|
||||
static int _serial_tstc(struct udevice *dev)
|
||||
{
|
||||
|
|
@ -281,14 +289,10 @@ void serial_setbrg(void)
|
|||
|
||||
void serial_clear(void)
|
||||
{
|
||||
struct dm_serial_ops *ops;
|
||||
|
||||
if (!gd->cur_serial_dev)
|
||||
return;
|
||||
|
||||
ops = serial_get_ops(gd->cur_serial_dev);
|
||||
if (ops->setbrg)
|
||||
ops->clear(gd->cur_serial_dev);
|
||||
__serial_clear(gd->cur_serial_dev);
|
||||
}
|
||||
|
||||
void serial_stdio_init(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue