Re: [PATCH 2/2] risc-v: implement DBCN based debug console

2023-09-04 Thread Heinrich Schuchardt

On 9/4/23 11:30, Chanho Park wrote:

Hi,


-Original Message-
From: U-Boot  On Behalf Of Heinrich
Schuchardt
Sent: Saturday, August 19, 2023 10:13 PM
To: Rick Chen ; Leo 
Cc: Bin Meng ; Anup Patel ;
u-boot@lists.denx.de; Heinrich Schuchardt

Subject: [PATCH 2/2] risc-v: implement DBCN based debug console

Use the DBCN SBI extension to implement a debug console.
Make it the default for S-mode RISC-V.

Signed-off-by: Heinrich Schuchardt 
---
  drivers/serial/Kconfig  |  3 ++-
  drivers/serial/serial_sbi.c | 19 +++
  2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index
a1e089962a..8421c5c047 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -218,6 +218,7 @@ config DEBUG_UART
  choice
prompt "Select which UART will provide the debug UART"
depends on DEBUG_UART
+   default DEBUG_SBI_CONSOLE if RISCV_SMODE
default DEBUG_UART_NS16550

  config DEBUG_UART_ALTERA_JTAGUART
@@ -289,7 +290,7 @@ config DEBUG_EFI_CONSOLE

  config DEBUG_SBI_CONSOLE
bool "SBI"
-   depends on SBI_V01
+   depends on RISCV_SMODE
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
diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c
index b9f35ed36e..093c7309d3 100644
--- a/drivers/serial/serial_sbi.c
+++ b/drivers/serial/serial_sbi.c
@@ -3,6 +3,8 @@
  #include 
  #include 

+#ifdef CONFIG_SBI_V01
+
  static inline void _debug_uart_init(void)  {  } @@ -13,4 +15,21 @@ static
inline void _debug_uart_putc(int c)
sbi_console_putchar(c);
  }

+#else
+
+static int sbi_dbcn_available;
+
+static inline void _debug_uart_init(void) {
+   sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN);
+}
+
+static inline void _debug_uart_putc(int ch) {
+   if (sbi_dbcn_available)
+   sbi_dbcn_write_byte(ch);
+}
+
+#endif
+
  DEBUG_UART_FUNCS
--
2.40.1


I've got below error when I tried to build it with VisionFive2 board
configuration(starfive_visionfive2_defconfig).
To test this patch, I enabled CONFIG_DEBUG_SBI_CONSOLE. Seems like spl also
includes the driver when DEBUG_SBI_CONSOLE is enabled.
Do I need to do any more configurations to test this?

LD  spl/u-boot-spl
riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function
`_debug_uart_putc':
/data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined
reference to `sbi_dbcn_write_byte'
riscv64-unknown-linux-gnu-ld.bfd:
/data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined
reference to `sbi_dbcn_write_byte'
riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function
`_debug_uart_init':
/data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:24: undefined
reference to `sbi_probe_extension'
make[2]: *** [/data/risc-v/vf2/mainline/u-boot/scripts/Makefile.spl:527:
spl/u-boot-spl] Error 1

Best Regards,
Chanho Park



Hello Chanho,

thanks for reporting the issue. SBI is not available in M-mode. We need 
a check in the driver like


if (!CONFIG_IS_ENABLED(RISCV_MMODE))

I will send a new version of the series.

Best regards

Heinrich


RE: [PATCH 2/2] risc-v: implement DBCN based debug console

2023-09-04 Thread Chanho Park
Hi,

> -Original Message-
> From: U-Boot  On Behalf Of Heinrich
> Schuchardt
> Sent: Saturday, August 19, 2023 10:13 PM
> To: Rick Chen ; Leo 
> Cc: Bin Meng ; Anup Patel ;
> u-boot@lists.denx.de; Heinrich Schuchardt
> 
> Subject: [PATCH 2/2] risc-v: implement DBCN based debug console
> 
> Use the DBCN SBI extension to implement a debug console.
> Make it the default for S-mode RISC-V.
> 
> Signed-off-by: Heinrich Schuchardt 
> ---
>  drivers/serial/Kconfig  |  3 ++-
>  drivers/serial/serial_sbi.c | 19 +++
>  2 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index
> a1e089962a..8421c5c047 100644
> --- a/drivers/serial/Kconfig
> +++ b/drivers/serial/Kconfig
> @@ -218,6 +218,7 @@ config DEBUG_UART
>  choice
>   prompt "Select which UART will provide the debug UART"
>   depends on DEBUG_UART
> + default DEBUG_SBI_CONSOLE if RISCV_SMODE
>   default DEBUG_UART_NS16550
> 
>  config DEBUG_UART_ALTERA_JTAGUART
> @@ -289,7 +290,7 @@ config DEBUG_EFI_CONSOLE
> 
>  config DEBUG_SBI_CONSOLE
>   bool "SBI"
> - depends on SBI_V01
> + depends on RISCV_SMODE
>   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
> diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c
> index b9f35ed36e..093c7309d3 100644
> --- a/drivers/serial/serial_sbi.c
> +++ b/drivers/serial/serial_sbi.c
> @@ -3,6 +3,8 @@
>  #include 
>  #include 
> 
> +#ifdef CONFIG_SBI_V01
> +
>  static inline void _debug_uart_init(void)  {  } @@ -13,4 +15,21 @@ static
> inline void _debug_uart_putc(int c)
>   sbi_console_putchar(c);
>  }
> 
> +#else
> +
> +static int sbi_dbcn_available;
> +
> +static inline void _debug_uart_init(void) {
> + sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN);
> +}
> +
> +static inline void _debug_uart_putc(int ch) {
> + if (sbi_dbcn_available)
> + sbi_dbcn_write_byte(ch);
> +}
> +
> +#endif
> +
>  DEBUG_UART_FUNCS
> --
> 2.40.1

I've got below error when I tried to build it with VisionFive2 board
configuration(starfive_visionfive2_defconfig).
To test this patch, I enabled CONFIG_DEBUG_SBI_CONSOLE. Seems like spl also
includes the driver when DEBUG_SBI_CONSOLE is enabled.
Do I need to do any more configurations to test this?

LD  spl/u-boot-spl
riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function
`_debug_uart_putc':
/data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined
reference to `sbi_dbcn_write_byte'
riscv64-unknown-linux-gnu-ld.bfd:
/data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:30: undefined
reference to `sbi_dbcn_write_byte'
riscv64-unknown-linux-gnu-ld.bfd: drivers/serial/serial_sbi.o: in function
`_debug_uart_init':
/data/risc-v/vf2/mainline/u-boot/drivers/serial/serial_sbi.c:24: undefined
reference to `sbi_probe_extension'
make[2]: *** [/data/risc-v/vf2/mainline/u-boot/scripts/Makefile.spl:527:
spl/u-boot-spl] Error 1

Best Regards,
Chanho Park



Re: [PATCH 2/2] risc-v: implement DBCN based debug console

2023-09-03 Thread Leo Liang
On Sat, Aug 19, 2023 at 03:12:50PM +0200, Heinrich Schuchardt wrote:
> Use the DBCN SBI extension to implement a debug console.
> Make it the default for S-mode RISC-V.
> 
> Signed-off-by: Heinrich Schuchardt 
> ---
>  drivers/serial/Kconfig  |  3 ++-
>  drivers/serial/serial_sbi.c | 19 +++
>  2 files changed, 21 insertions(+), 1 deletion(-)

Reviewed-by: Leo Yu-Chi Liang 


[PATCH 2/2] risc-v: implement DBCN based debug console

2023-08-19 Thread Heinrich Schuchardt
Use the DBCN SBI extension to implement a debug console.
Make it the default for S-mode RISC-V.

Signed-off-by: Heinrich Schuchardt 
---
 drivers/serial/Kconfig  |  3 ++-
 drivers/serial/serial_sbi.c | 19 +++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index a1e089962a..8421c5c047 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -218,6 +218,7 @@ config DEBUG_UART
 choice
prompt "Select which UART will provide the debug UART"
depends on DEBUG_UART
+   default DEBUG_SBI_CONSOLE if RISCV_SMODE
default DEBUG_UART_NS16550
 
 config DEBUG_UART_ALTERA_JTAGUART
@@ -289,7 +290,7 @@ config DEBUG_EFI_CONSOLE
 
 config DEBUG_SBI_CONSOLE
bool "SBI"
-   depends on SBI_V01
+   depends on RISCV_SMODE
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
diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c
index b9f35ed36e..093c7309d3 100644
--- a/drivers/serial/serial_sbi.c
+++ b/drivers/serial/serial_sbi.c
@@ -3,6 +3,8 @@
 #include 
 #include 
 
+#ifdef CONFIG_SBI_V01
+
 static inline void _debug_uart_init(void)
 {
 }
@@ -13,4 +15,21 @@ static inline void _debug_uart_putc(int c)
sbi_console_putchar(c);
 }
 
+#else
+
+static int sbi_dbcn_available;
+
+static inline void _debug_uart_init(void)
+{
+   sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN);
+}
+
+static inline void _debug_uart_putc(int ch)
+{
+   if (sbi_dbcn_available)
+   sbi_dbcn_write_byte(ch);
+}
+
+#endif
+
 DEBUG_UART_FUNCS
-- 
2.40.1