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! */
|
/* nulldev is empty! */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nulldev_clear(struct stdio_dev *dev)
|
||||||
|
{
|
||||||
|
/* nulldev is empty! */
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void stdio_serial_putc(struct stdio_dev *dev, const char c)
|
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();
|
return serial_tstc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void stdio_serial_clear(struct stdio_dev *dev)
|
||||||
|
{
|
||||||
|
serial_clear();
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* SYSTEM DRIVERS
|
* SYSTEM DRIVERS
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
|
|
@ -93,6 +103,7 @@ static void drv_system_init (void)
|
||||||
dev.puts = stdio_serial_puts;
|
dev.puts = stdio_serial_puts;
|
||||||
dev.getc = stdio_serial_getc;
|
dev.getc = stdio_serial_getc;
|
||||||
dev.tstc = stdio_serial_tstc;
|
dev.tstc = stdio_serial_tstc;
|
||||||
|
dev.clear = stdio_serial_clear;
|
||||||
stdio_register (&dev);
|
stdio_register (&dev);
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DEVICE_NULLDEV
|
#ifdef CONFIG_SYS_DEVICE_NULLDEV
|
||||||
|
|
@ -104,6 +115,7 @@ static void drv_system_init (void)
|
||||||
dev.puts = nulldev_puts;
|
dev.puts = nulldev_puts;
|
||||||
dev.getc = nulldev_input;
|
dev.getc = nulldev_input;
|
||||||
dev.tstc = nulldev_input;
|
dev.tstc = nulldev_input;
|
||||||
|
dev.clear = nulldev_clear;
|
||||||
|
|
||||||
stdio_register (&dev);
|
stdio_register (&dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,14 @@ static int __serial_tstc(struct udevice *dev)
|
||||||
return 1;
|
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)
|
#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER)
|
||||||
static int _serial_tstc(struct udevice *dev)
|
static int _serial_tstc(struct udevice *dev)
|
||||||
{
|
{
|
||||||
|
|
@ -281,14 +289,10 @@ void serial_setbrg(void)
|
||||||
|
|
||||||
void serial_clear(void)
|
void serial_clear(void)
|
||||||
{
|
{
|
||||||
struct dm_serial_ops *ops;
|
|
||||||
|
|
||||||
if (!gd->cur_serial_dev)
|
if (!gd->cur_serial_dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ops = serial_get_ops(gd->cur_serial_dev);
|
__serial_clear(gd->cur_serial_dev);
|
||||||
if (ops->setbrg)
|
|
||||||
ops->clear(gd->cur_serial_dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void serial_stdio_init(void)
|
void serial_stdio_init(void)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue