mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-21 12:25:27 +00:00
serial: sandbox: Implement puts
This implements puts for sandbox. It is fairly straightforward, except that we break out the shared color printing functionality into its own function. Signed-off-by: Sean Anderson <sean.anderson@seco.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
2c777488b6
commit
efa51f2bd6
2 changed files with 21 additions and 1 deletions
|
@ -779,6 +779,7 @@ config S5P_SERIAL
|
||||||
config SANDBOX_SERIAL
|
config SANDBOX_SERIAL
|
||||||
bool "Sandbox UART support"
|
bool "Sandbox UART support"
|
||||||
depends on SANDBOX
|
depends on SANDBOX
|
||||||
|
imply SERIAL_PUTS
|
||||||
help
|
help
|
||||||
Select this to enable a seral UART for sandbox. This is required to
|
Select this to enable a seral UART for sandbox. This is required to
|
||||||
operate correctly, otherwise you will see no serial output from
|
operate correctly, otherwise you will see no serial output from
|
||||||
|
|
|
@ -67,7 +67,7 @@ static int sandbox_serial_remove(struct udevice *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sandbox_serial_putc(struct udevice *dev, const char ch)
|
static void sandbox_print_color(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sandbox_serial_priv *priv = dev_get_priv(dev);
|
struct sandbox_serial_priv *priv = dev_get_priv(dev);
|
||||||
struct sandbox_serial_plat *plat = dev_get_plat(dev);
|
struct sandbox_serial_plat *plat = dev_get_plat(dev);
|
||||||
|
@ -78,7 +78,13 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch)
|
||||||
priv->start_of_line = false;
|
priv->start_of_line = false;
|
||||||
output_ansi_colour(plat->colour);
|
output_ansi_colour(plat->colour);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sandbox_serial_putc(struct udevice *dev, const char ch)
|
||||||
|
{
|
||||||
|
struct sandbox_serial_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
sandbox_print_color(dev);
|
||||||
os_write(1, &ch, 1);
|
os_write(1, &ch, 1);
|
||||||
if (ch == '\n')
|
if (ch == '\n')
|
||||||
priv->start_of_line = true;
|
priv->start_of_line = true;
|
||||||
|
@ -86,6 +92,18 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t sandbox_serial_puts(struct udevice *dev, const char *s,
|
||||||
|
size_t len)
|
||||||
|
{
|
||||||
|
struct sandbox_serial_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
sandbox_print_color(dev);
|
||||||
|
if (s[len - 1] == '\n')
|
||||||
|
priv->start_of_line = true;
|
||||||
|
|
||||||
|
return os_write(1, s, len);
|
||||||
|
}
|
||||||
|
|
||||||
static int sandbox_serial_pending(struct udevice *dev, bool input)
|
static int sandbox_serial_pending(struct udevice *dev, bool input)
|
||||||
{
|
{
|
||||||
struct sandbox_serial_priv *priv = dev_get_priv(dev);
|
struct sandbox_serial_priv *priv = dev_get_priv(dev);
|
||||||
|
@ -212,6 +230,7 @@ static int sandbox_serial_of_to_plat(struct udevice *dev)
|
||||||
|
|
||||||
static const struct dm_serial_ops sandbox_serial_ops = {
|
static const struct dm_serial_ops sandbox_serial_ops = {
|
||||||
.putc = sandbox_serial_putc,
|
.putc = sandbox_serial_putc,
|
||||||
|
.puts = sandbox_serial_puts,
|
||||||
.pending = sandbox_serial_pending,
|
.pending = sandbox_serial_pending,
|
||||||
.getc = sandbox_serial_getc,
|
.getc = sandbox_serial_getc,
|
||||||
.getconfig = sandbox_serial_getconfig,
|
.getconfig = sandbox_serial_getconfig,
|
||||||
|
|
Loading…
Add table
Reference in a new issue