All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] serial: Add a debug console using the RISC-V SBI interface
@ 2021-09-12 15:56 Samuel Holland
  2021-09-12 16:22 ` Sean Anderson
  2021-09-12 22:38 ` Bin Meng
  0 siblings, 2 replies; 3+ messages in thread
From: Samuel Holland @ 2021-09-12 15:56 UTC (permalink / raw)
  To: Rick Chen, Leo
  Cc: u-boot, Samuel Holland, AKASHI Takahiro, Marek Behún,
	Mark Kettenis, Michal Simek, Minkyu Kang, Simon Glass,
	Stefan Roese, Vabhav Sharma, Weijie Gao

The RISC-V SBI interface v0.1 provides a function for printing a
character to the console. Even though SBI v0.1 functions are deprecated,
the SBI console is quite useful for early debugging, because it works
without any dcache, memory, or MMIO access in S mode.

Signed-off-by: Samuel Holland <samuel@sholland.org>
---

 drivers/serial/Kconfig      | 10 ++++++++++
 drivers/serial/Makefile     |  1 +
 drivers/serial/serial_sbi.c | 16 ++++++++++++++++
 3 files changed, 27 insertions(+)
 create mode 100644 drivers/serial/serial_sbi.c

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 36ee43210a9..e5f086271ef 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -280,6 +280,14 @@ config DEBUG_EFI_CONSOLE
 	  U-Boot when running on top of EFI (Extensive Firmware Interface).
 	  This is a type of BIOS used by PCs.
 
+config DEBUG_SBI_CONSOLE
+	bool "SBI"
+	depends on SBI_V01
+	help
+	  Select this to enable a debug console which calls back to SBI to
+	  output to the console. This can be useful for early debugging of
+	  U-Boot when running on top of SBI (Supervisor Binary Interface).
+
 config DEBUG_UART_S5P
 	bool "Samsung S5P"
 	depends on ARCH_EXYNOS || ARCH_S5PC1XX
@@ -442,6 +450,7 @@ endchoice
 config DEBUG_UART_BASE
 	hex "Base address of UART"
 	depends on DEBUG_UART
+	default 0 if DEBUG_SBI_CONSOLE
 	default 0 if DEBUG_UART_SANDBOX
 	help
 	  This is the base address of your UART for memory-mapped UARTs.
@@ -452,6 +461,7 @@ config DEBUG_UART_BASE
 config DEBUG_UART_CLOCK
 	int "UART input clock"
 	depends on DEBUG_UART
+	default 0 if DEBUG_SBI_CONSOLE
 	default 0 if DEBUG_UART_SANDBOX
 	default 0 if DEBUG_MVEBU_A3700_UART
 	help
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
index 3cbea8156f8..4edd2aa9458 100644
--- a/drivers/serial/Makefile
+++ b/drivers/serial/Makefile
@@ -36,6 +36,7 @@ obj-$(CONFIG_ATMEL_USART) += atmel_usart.o
 obj-$(CONFIG_BCM6345_SERIAL) += serial_bcm6345.o
 obj-$(CONFIG_COREBOOT_SERIAL) += serial_coreboot.o
 obj-$(CONFIG_CORTINA_UART) += serial_cortina.o
+obj-$(CONFIG_DEBUG_SBI_CONSOLE) += serial_sbi.o
 obj-$(CONFIG_EFI_APP) += serial_efi.o
 obj-$(CONFIG_LPC32XX_HSUART) += lpc32xx_hsuart.o
 obj-$(CONFIG_MCFUART) += serial_mcf.o
diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c
new file mode 100644
index 00000000000..b9f35ed36e6
--- /dev/null
+++ b/drivers/serial/serial_sbi.c
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <debug_uart.h>
+#include <asm/sbi.h>
+
+static inline void _debug_uart_init(void)
+{
+}
+
+static inline void _debug_uart_putc(int c)
+{
+	if (CONFIG_IS_ENABLED(RISCV_SMODE))
+		sbi_console_putchar(c);
+}
+
+DEBUG_UART_FUNCS
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] serial: Add a debug console using the RISC-V SBI interface
  2021-09-12 15:56 [PATCH] serial: Add a debug console using the RISC-V SBI interface Samuel Holland
@ 2021-09-12 16:22 ` Sean Anderson
  2021-09-12 22:38 ` Bin Meng
  1 sibling, 0 replies; 3+ messages in thread
From: Sean Anderson @ 2021-09-12 16:22 UTC (permalink / raw)
  To: Samuel Holland, Rick Chen, Leo
  Cc: u-boot, AKASHI Takahiro, Marek Behún, Mark Kettenis,
	Michal Simek, Minkyu Kang, Simon Glass, Stefan Roese,
	Vabhav Sharma, Weijie Gao

On 9/12/21 11:56 AM, Samuel Holland wrote:
> The RISC-V SBI interface v0.1 provides a function for printing a
> character to the console. Even though SBI v0.1 functions are deprecated,
> the SBI console is quite useful for early debugging, because it works
> without any dcache, memory, or MMIO access in S mode.
> 
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> ---
> 
>   drivers/serial/Kconfig      | 10 ++++++++++
>   drivers/serial/Makefile     |  1 +
>   drivers/serial/serial_sbi.c | 16 ++++++++++++++++
>   3 files changed, 27 insertions(+)
>   create mode 100644 drivers/serial/serial_sbi.c
> 
> diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
> index 36ee43210a9..e5f086271ef 100644
> --- a/drivers/serial/Kconfig
> +++ b/drivers/serial/Kconfig
> @@ -280,6 +280,14 @@ config DEBUG_EFI_CONSOLE
>   	  U-Boot when running on top of EFI (Extensive Firmware Interface).
>   	  This is a type of BIOS used by PCs.
>   
> +config DEBUG_SBI_CONSOLE
> +	bool "SBI"
> +	depends on SBI_V01
> +	help
> +	  Select this to enable a debug console which calls back to SBI to
> +	  output to the console. This can be useful for early debugging of
> +	  U-Boot when running on top of SBI (Supervisor Binary Interface).
> +
>   config DEBUG_UART_S5P
>   	bool "Samsung S5P"
>   	depends on ARCH_EXYNOS || ARCH_S5PC1XX
> @@ -442,6 +450,7 @@ endchoice
>   config DEBUG_UART_BASE
>   	hex "Base address of UART"
>   	depends on DEBUG_UART
> +	default 0 if DEBUG_SBI_CONSOLE
>   	default 0 if DEBUG_UART_SANDBOX
>   	help
>   	  This is the base address of your UART for memory-mapped UARTs.
> @@ -452,6 +461,7 @@ config DEBUG_UART_BASE
>   config DEBUG_UART_CLOCK
>   	int "UART input clock"
>   	depends on DEBUG_UART
> +	default 0 if DEBUG_SBI_CONSOLE
>   	default 0 if DEBUG_UART_SANDBOX
>   	default 0 if DEBUG_MVEBU_A3700_UART
>   	help
> diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
> index 3cbea8156f8..4edd2aa9458 100644
> --- a/drivers/serial/Makefile
> +++ b/drivers/serial/Makefile
> @@ -36,6 +36,7 @@ obj-$(CONFIG_ATMEL_USART) += atmel_usart.o
>   obj-$(CONFIG_BCM6345_SERIAL) += serial_bcm6345.o
>   obj-$(CONFIG_COREBOOT_SERIAL) += serial_coreboot.o
>   obj-$(CONFIG_CORTINA_UART) += serial_cortina.o
> +obj-$(CONFIG_DEBUG_SBI_CONSOLE) += serial_sbi.o
>   obj-$(CONFIG_EFI_APP) += serial_efi.o
>   obj-$(CONFIG_LPC32XX_HSUART) += lpc32xx_hsuart.o
>   obj-$(CONFIG_MCFUART) += serial_mcf.o
> diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c
> new file mode 100644
> index 00000000000..b9f35ed36e6
> --- /dev/null
> +++ b/drivers/serial/serial_sbi.c
> @@ -0,0 +1,16 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +
> +#include <debug_uart.h>
> +#include <asm/sbi.h>
> +
> +static inline void _debug_uart_init(void)
> +{
> +}
> +
> +static inline void _debug_uart_putc(int c)
> +{
> +	if (CONFIG_IS_ENABLED(RISCV_SMODE))
> +		sbi_console_putchar(c);
> +}
> +
> +DEBUG_UART_FUNCS
> 
Reviewed-by: Sean Anderson <seanga2@gmail.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] serial: Add a debug console using the RISC-V SBI interface
  2021-09-12 15:56 [PATCH] serial: Add a debug console using the RISC-V SBI interface Samuel Holland
  2021-09-12 16:22 ` Sean Anderson
@ 2021-09-12 22:38 ` Bin Meng
  1 sibling, 0 replies; 3+ messages in thread
From: Bin Meng @ 2021-09-12 22:38 UTC (permalink / raw)
  To: Samuel Holland
  Cc: Rick Chen, Leo, U-Boot Mailing List, AKASHI Takahiro,
	Marek Behún, Mark Kettenis, Michal Simek, Minkyu Kang,
	Simon Glass, Stefan Roese, Vabhav Sharma, Weijie Gao

On Sun, Sep 12, 2021 at 11:56 PM Samuel Holland <samuel@sholland.org> wrote:
>
> The RISC-V SBI interface v0.1 provides a function for printing a
> character to the console. Even though SBI v0.1 functions are deprecated,
> the SBI console is quite useful for early debugging, because it works
> without any dcache, memory, or MMIO access in S mode.
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> ---
>
>  drivers/serial/Kconfig      | 10 ++++++++++
>  drivers/serial/Makefile     |  1 +
>  drivers/serial/serial_sbi.c | 16 ++++++++++++++++
>  3 files changed, 27 insertions(+)
>  create mode 100644 drivers/serial/serial_sbi.c
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-09-12 22:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-12 15:56 [PATCH] serial: Add a debug console using the RISC-V SBI interface Samuel Holland
2021-09-12 16:22 ` Sean Anderson
2021-09-12 22:38 ` Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.