mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 18:35:42 +01: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:
		| @@ -779,6 +779,7 @@ config S5P_SERIAL | ||||
| config SANDBOX_SERIAL | ||||
| 	bool "Sandbox UART support" | ||||
| 	depends on SANDBOX | ||||
| 	imply SERIAL_PUTS | ||||
| 	help | ||||
| 	  Select this to enable a seral UART for sandbox. This is required to | ||||
| 	  operate correctly, otherwise you will see no serial output from | ||||
|   | ||||
| @@ -67,7 +67,7 @@ static int sandbox_serial_remove(struct udevice *dev) | ||||
| 	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_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; | ||||
| 		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); | ||||
| 	if (ch == '\n') | ||||
| 		priv->start_of_line = true; | ||||
| @@ -86,6 +92,18 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) | ||||
| 	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) | ||||
| { | ||||
| 	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 = { | ||||
| 	.putc = sandbox_serial_putc, | ||||
| 	.puts = sandbox_serial_puts, | ||||
| 	.pending = sandbox_serial_pending, | ||||
| 	.getc = sandbox_serial_getc, | ||||
| 	.getconfig = sandbox_serial_getconfig, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user