diff options
Diffstat (limited to 'drivers/serial/serial.c')
| -rw-r--r-- | drivers/serial/serial.c | 55 | 
1 files changed, 49 insertions, 6 deletions
| diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index fd61a5e5458..d2eb7520d03 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -254,6 +254,48 @@ void serial_initialize(void)  	serial_assign(default_serial_console()->name);  } +int serial_stub_start(struct stdio_dev *sdev) +{ +	struct serial_device *dev = sdev->priv; + +	return dev->start(); +} + +int serial_stub_stop(struct stdio_dev *sdev) +{ +	struct serial_device *dev = sdev->priv; + +	return dev->stop(); +} + +void serial_stub_putc(struct stdio_dev *sdev, const char ch) +{ +	struct serial_device *dev = sdev->priv; + +	dev->putc(ch); +} + +void serial_stub_puts(struct stdio_dev *sdev, const char *str) +{ +	struct serial_device *dev = sdev->priv; + +	dev->puts(str); +} + +int serial_stub_getc(struct stdio_dev *sdev) +{ +	struct serial_device *dev = sdev->priv; + +	return dev->getc(); +} + +int serial_stub_tstc(struct stdio_dev *sdev) +{ +	struct serial_device *dev = sdev->priv; + +	return dev->tstc(); +} +  /**   * serial_stdio_init() - Register serial ports with STDIO core   * @@ -272,12 +314,12 @@ void serial_stdio_init(void)  		strcpy(dev.name, s->name);  		dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT; -		dev.start = s->start; -		dev.stop = s->stop; -		dev.putc = s->putc; -		dev.puts = s->puts; -		dev.getc = s->getc; -		dev.tstc = s->tstc; +		dev.start = serial_stub_start; +		dev.stop = serial_stub_stop; +		dev.putc = serial_stub_putc; +		dev.puts = serial_stub_puts; +		dev.getc = serial_stub_getc; +		dev.tstc = serial_stub_tstc;  		stdio_register(&dev); @@ -376,6 +418,7 @@ static struct serial_device *get_current(void)   */  int serial_init(void)  { +	gd->flags |= GD_FLG_SERIAL_READY;  	return get_current()->start();  } | 
