Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-26 Thread Simon Glass
On Tue, 25 Jul 2023 at 01:05, Rick Chen  wrote:
>
> > From: U-Boot  On Behalf Of Bin Meng
> > Sent: Sunday, July 23, 2023 12:41 PM
> > To: Simon Glass ; u-boot@lists.denx.de
> > Cc: Bin Meng ; Heinrich Schuchardt 
> > Subject: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device
> >
> > This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard as one 
> > of the input devices.
> >
> > Signed-off-by: Bin Meng 
> >
> > ---
> >
> >  board/emulation/qemu-riscv/Kconfig  | 5 +
> >  board/emulation/qemu-riscv/qemu-riscv.c | 5 +
> >  doc/board/emulation/qemu-riscv.rst  | 5 +
> >  include/configs/qemu-riscv.h| 2 +-
> >  4 files changed, 16 insertions(+), 1 deletion(-)
>
> Reviewed-by: Rick Chen 

Reviewed-by: Simon Glass 


Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-25 Thread Rick Chen
> From: U-Boot  On Behalf Of Bin Meng
> Sent: Sunday, July 23, 2023 12:41 PM
> To: Simon Glass ; u-boot@lists.denx.de
> Cc: Bin Meng ; Heinrich Schuchardt 
> Subject: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device
>
> This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard as one of 
> the input devices.
>
> Signed-off-by: Bin Meng 
>
> ---
>
>  board/emulation/qemu-riscv/Kconfig  | 5 +
>  board/emulation/qemu-riscv/qemu-riscv.c | 5 +
>  doc/board/emulation/qemu-riscv.rst  | 5 +
>  include/configs/qemu-riscv.h| 2 +-
>  4 files changed, 16 insertions(+), 1 deletion(-)

Reviewed-by: Rick Chen 


Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-24 Thread Heinrich Schuchardt

On 23.07.23 12:11, Mark Kettenis wrote:

Date: Sun, 23 Jul 2023 11:30:31 +0200
From: Heinrich Schuchardt 

Am 23. Juli 2023 10:38:00 MESZ schrieb Mark Kettenis :

From: Bin Meng 
Date: Sun, 23 Jul 2023 12:40:41 +0800

This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
as one of the input devices.

Signed-off-by: Bin Meng 

---

  board/emulation/qemu-riscv/Kconfig  | 5 +
  board/emulation/qemu-riscv/qemu-riscv.c | 5 +
  doc/board/emulation/qemu-riscv.rst  | 5 +
  include/configs/qemu-riscv.h| 2 +-
  4 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/board/emulation/qemu-riscv/Kconfig 
b/board/emulation/qemu-riscv/Kconfig
index 7220c55350..b503578d27 100644
--- a/board/emulation/qemu-riscv/Kconfig
+++ b/board/emulation/qemu-riscv/Kconfig
@@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
imply VIDEO_BOCHS
imply SYS_WHITE_ON_BLACK
imply PRE_CONSOLE_BUFFER
+   imply USB
+   imply USB_XHCI_HCD
+   imply USB_XHCI_PCI
+   imply USB_KEYBOARD
+   imply CMD_USB

  endif
diff --git a/board/emulation/qemu-riscv/qemu-riscv.c 
b/board/emulation/qemu-riscv/qemu-riscv.c
index f39f3be366..181abbbf97 100644
--- a/board/emulation/qemu-riscv/qemu-riscv.c
+++ b/board/emulation/qemu-riscv/qemu-riscv.c
@@ -12,6 +12,7 @@
  #include 
  #include 
  #include 
+#include 
  #include 
  #include 

@@ -41,6 +42,10 @@ int board_init(void)

  int board_late_init(void)
  {
+   /* start usb so that usb keyboard can be used as input device */
+   if (CONFIG_IS_ENABLED(USB_KEYBOARD))
+   usb_init();
+


This is typically handled by including "usb start" in CONFIG_PREBOOT,
which is done by boot/Kconfig.  Any reason why that doesn't work for
you?


We run pci_init() in board_r.c. Why don't do the same for USB
instead of the PREBOOT quirk?


Well, yes, that was going to be my next question.  If using PREBOOT is
for some reason no longer the preferred way to do this, should there
be some other generic method to make sure the USB controllers are
started when a USB keyboard is configured as an input method.  Doing
something generic like this in board-specific code seems wrong to me.

Cheers,

Mark


+CC Marek






return 0;
  }

diff --git a/doc/board/emulation/qemu-riscv.rst 
b/doc/board/emulation/qemu-riscv.rst
index 9d21f3270c..61137bcbf1 100644
--- a/doc/board/emulation/qemu-riscv.rst
+++ b/doc/board/emulation/qemu-riscv.rst
@@ -138,6 +138,11 @@ and adding::

  -serial stdio -device VGA

+In addition, a usb keyboard can be attached to an emulated xHCI controller in
+RISC-V virt machine as an option of input devices by adding::
+
+-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
+
  Running with KVM
  

diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h
index d5146e70f7..584559cfa3 100644
--- a/include/configs/qemu-riscv.h
+++ b/include/configs/qemu-riscv.h
@@ -17,7 +17,7 @@

  /* Environment options */

-#define CFG_STD_DEVICES_SETTINGS   "stdin=serial\0" \
+#define CFG_STD_DEVICES_SETTINGS   "stdin=serial,usbkbd\0" \
"stdout=serial,vidconsole\0" \
"stderr=serial,vidconsole\0"

--
2.34.1







Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-23 Thread Bin Meng
Hi Heinrich,

On Sun, Jul 23, 2023 at 2:11 PM Heinrich Schuchardt  wrote:
>
>
>
> Am 23. Juli 2023 06:40:41 MESZ schrieb Bin Meng :
> >This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
> >as one of the input devices.
> >
> >Signed-off-by: Bin Meng 
> >
> >---
> >
> > board/emulation/qemu-riscv/Kconfig  | 5 +
> > board/emulation/qemu-riscv/qemu-riscv.c | 5 +
> > doc/board/emulation/qemu-riscv.rst  | 5 +
> > include/configs/qemu-riscv.h| 2 +-
> > 4 files changed, 16 insertions(+), 1 deletion(-)
> >
> >diff --git a/board/emulation/qemu-riscv/Kconfig 
> >b/board/emulation/qemu-riscv/Kconfig
> >index 7220c55350..b503578d27 100644
> >--- a/board/emulation/qemu-riscv/Kconfig
> >+++ b/board/emulation/qemu-riscv/Kconfig
> >@@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
> >   imply VIDEO_BOCHS
> >   imply SYS_WHITE_ON_BLACK
> >   imply PRE_CONSOLE_BUFFER
> >+  imply USB
> >+  imply USB_XHCI_HCD
> >+  imply USB_XHCI_PCI
>
> QEMU could alternatively use EHCI or OHCI for the keyboard. Does enabling 
> XHCI add support for these too?

No, EHCI or OHCI support is separate from xHCI. I don't think enabling
EHCI or OHCI *by default* brings a lot of value here as xHCI is the
latest and greatest and USB keyboard could work with xHCI without any
problem.

Regards,
Bin


Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-23 Thread Mark Kettenis
> Date: Sun, 23 Jul 2023 11:30:31 +0200
> From: Heinrich Schuchardt 
> 
> Am 23. Juli 2023 10:38:00 MESZ schrieb Mark Kettenis 
> :
> >> From: Bin Meng 
> >> Date: Sun, 23 Jul 2023 12:40:41 +0800
> >> 
> >> This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
> >> as one of the input devices.
> >> 
> >> Signed-off-by: Bin Meng 
> >> 
> >> ---
> >> 
> >>  board/emulation/qemu-riscv/Kconfig  | 5 +
> >>  board/emulation/qemu-riscv/qemu-riscv.c | 5 +
> >>  doc/board/emulation/qemu-riscv.rst  | 5 +
> >>  include/configs/qemu-riscv.h| 2 +-
> >>  4 files changed, 16 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/board/emulation/qemu-riscv/Kconfig 
> >> b/board/emulation/qemu-riscv/Kconfig
> >> index 7220c55350..b503578d27 100644
> >> --- a/board/emulation/qemu-riscv/Kconfig
> >> +++ b/board/emulation/qemu-riscv/Kconfig
> >> @@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
> >>imply VIDEO_BOCHS
> >>imply SYS_WHITE_ON_BLACK
> >>imply PRE_CONSOLE_BUFFER
> >> +  imply USB
> >> +  imply USB_XHCI_HCD
> >> +  imply USB_XHCI_PCI
> >> +  imply USB_KEYBOARD
> >> +  imply CMD_USB
> >>  
> >>  endif
> >> diff --git a/board/emulation/qemu-riscv/qemu-riscv.c 
> >> b/board/emulation/qemu-riscv/qemu-riscv.c
> >> index f39f3be366..181abbbf97 100644
> >> --- a/board/emulation/qemu-riscv/qemu-riscv.c
> >> +++ b/board/emulation/qemu-riscv/qemu-riscv.c
> >> @@ -12,6 +12,7 @@
> >>  #include 
> >>  #include 
> >>  #include 
> >> +#include 
> >>  #include 
> >>  #include 
> >>  
> >> @@ -41,6 +42,10 @@ int board_init(void)
> >>  
> >>  int board_late_init(void)
> >>  {
> >> +  /* start usb so that usb keyboard can be used as input device */
> >> +  if (CONFIG_IS_ENABLED(USB_KEYBOARD))
> >> +  usb_init();
> >> +
> >
> >This is typically handled by including "usb start" in CONFIG_PREBOOT,
> >which is done by boot/Kconfig.  Any reason why that doesn't work for
> >you?
> 
> We run pci_init() in board_r.c. Why don't do the same for USB
> instead of the PREBOOT quirk?

Well, yes, that was going to be my next question.  If using PREBOOT is
for some reason no longer the preferred way to do this, should there
be some other generic method to make sure the USB controllers are
started when a USB keyboard is configured as an input method.  Doing
something generic like this in board-specific code seems wrong to me.

Cheers,

Mark

> >
> >>return 0;
> >>  }
> >>  
> >> diff --git a/doc/board/emulation/qemu-riscv.rst 
> >> b/doc/board/emulation/qemu-riscv.rst
> >> index 9d21f3270c..61137bcbf1 100644
> >> --- a/doc/board/emulation/qemu-riscv.rst
> >> +++ b/doc/board/emulation/qemu-riscv.rst
> >> @@ -138,6 +138,11 @@ and adding::
> >>  
> >>  -serial stdio -device VGA
> >>  
> >> +In addition, a usb keyboard can be attached to an emulated xHCI 
> >> controller in
> >> +RISC-V virt machine as an option of input devices by adding::
> >> +
> >> +-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
> >> +
> >>  Running with KVM
> >>  
> >>  
> >> diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h
> >> index d5146e70f7..584559cfa3 100644
> >> --- a/include/configs/qemu-riscv.h
> >> +++ b/include/configs/qemu-riscv.h
> >> @@ -17,7 +17,7 @@
> >>  
> >>  /* Environment options */
> >>  
> >> -#define CFG_STD_DEVICES_SETTINGS  "stdin=serial\0" \
> >> +#define CFG_STD_DEVICES_SETTINGS  "stdin=serial,usbkbd\0" \
> >>"stdout=serial,vidconsole\0" \
> >>"stderr=serial,vidconsole\0"
> >>  
> >> -- 
> >> 2.34.1
> >> 
> >> 
> 


Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-23 Thread Heinrich Schuchardt



Am 23. Juli 2023 10:38:00 MESZ schrieb Mark Kettenis :
>> From: Bin Meng 
>> Date: Sun, 23 Jul 2023 12:40:41 +0800
>> 
>> This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
>> as one of the input devices.
>> 
>> Signed-off-by: Bin Meng 
>> 
>> ---
>> 
>>  board/emulation/qemu-riscv/Kconfig  | 5 +
>>  board/emulation/qemu-riscv/qemu-riscv.c | 5 +
>>  doc/board/emulation/qemu-riscv.rst  | 5 +
>>  include/configs/qemu-riscv.h| 2 +-
>>  4 files changed, 16 insertions(+), 1 deletion(-)
>> 
>> diff --git a/board/emulation/qemu-riscv/Kconfig 
>> b/board/emulation/qemu-riscv/Kconfig
>> index 7220c55350..b503578d27 100644
>> --- a/board/emulation/qemu-riscv/Kconfig
>> +++ b/board/emulation/qemu-riscv/Kconfig
>> @@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
>>  imply VIDEO_BOCHS
>>  imply SYS_WHITE_ON_BLACK
>>  imply PRE_CONSOLE_BUFFER
>> +imply USB
>> +imply USB_XHCI_HCD
>> +imply USB_XHCI_PCI
>> +imply USB_KEYBOARD
>> +imply CMD_USB
>>  
>>  endif
>> diff --git a/board/emulation/qemu-riscv/qemu-riscv.c 
>> b/board/emulation/qemu-riscv/qemu-riscv.c
>> index f39f3be366..181abbbf97 100644
>> --- a/board/emulation/qemu-riscv/qemu-riscv.c
>> +++ b/board/emulation/qemu-riscv/qemu-riscv.c
>> @@ -12,6 +12,7 @@
>>  #include 
>>  #include 
>>  #include 
>> +#include 
>>  #include 
>>  #include 
>>  
>> @@ -41,6 +42,10 @@ int board_init(void)
>>  
>>  int board_late_init(void)
>>  {
>> +/* start usb so that usb keyboard can be used as input device */
>> +if (CONFIG_IS_ENABLED(USB_KEYBOARD))
>> +usb_init();
>> +
>
>This is typically handled by including "usb start" in CONFIG_PREBOOT,
>which is done by boot/Kconfig.  Any reason why that doesn't work for
>you?

We run pci_init() in board_r.c. Why don't do the same for USB instead of the 
PREBOOT quirk?

Regards


Heinrich


>
>>  return 0;
>>  }
>>  
>> diff --git a/doc/board/emulation/qemu-riscv.rst 
>> b/doc/board/emulation/qemu-riscv.rst
>> index 9d21f3270c..61137bcbf1 100644
>> --- a/doc/board/emulation/qemu-riscv.rst
>> +++ b/doc/board/emulation/qemu-riscv.rst
>> @@ -138,6 +138,11 @@ and adding::
>>  
>>  -serial stdio -device VGA
>>  
>> +In addition, a usb keyboard can be attached to an emulated xHCI controller 
>> in
>> +RISC-V virt machine as an option of input devices by adding::
>> +
>> +-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
>> +
>>  Running with KVM
>>  
>>  
>> diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h
>> index d5146e70f7..584559cfa3 100644
>> --- a/include/configs/qemu-riscv.h
>> +++ b/include/configs/qemu-riscv.h
>> @@ -17,7 +17,7 @@
>>  
>>  /* Environment options */
>>  
>> -#define CFG_STD_DEVICES_SETTINGS"stdin=serial\0" \
>> +#define CFG_STD_DEVICES_SETTINGS"stdin=serial,usbkbd\0" \
>>  "stdout=serial,vidconsole\0" \
>>  "stderr=serial,vidconsole\0"
>>  
>> -- 
>> 2.34.1
>> 
>> 


Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-23 Thread Mark Kettenis
> From: Bin Meng 
> Date: Sun, 23 Jul 2023 12:40:41 +0800
> 
> This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
> as one of the input devices.
> 
> Signed-off-by: Bin Meng 
> 
> ---
> 
>  board/emulation/qemu-riscv/Kconfig  | 5 +
>  board/emulation/qemu-riscv/qemu-riscv.c | 5 +
>  doc/board/emulation/qemu-riscv.rst  | 5 +
>  include/configs/qemu-riscv.h| 2 +-
>  4 files changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/board/emulation/qemu-riscv/Kconfig 
> b/board/emulation/qemu-riscv/Kconfig
> index 7220c55350..b503578d27 100644
> --- a/board/emulation/qemu-riscv/Kconfig
> +++ b/board/emulation/qemu-riscv/Kconfig
> @@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
>   imply VIDEO_BOCHS
>   imply SYS_WHITE_ON_BLACK
>   imply PRE_CONSOLE_BUFFER
> + imply USB
> + imply USB_XHCI_HCD
> + imply USB_XHCI_PCI
> + imply USB_KEYBOARD
> + imply CMD_USB
>  
>  endif
> diff --git a/board/emulation/qemu-riscv/qemu-riscv.c 
> b/board/emulation/qemu-riscv/qemu-riscv.c
> index f39f3be366..181abbbf97 100644
> --- a/board/emulation/qemu-riscv/qemu-riscv.c
> +++ b/board/emulation/qemu-riscv/qemu-riscv.c
> @@ -12,6 +12,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  
> @@ -41,6 +42,10 @@ int board_init(void)
>  
>  int board_late_init(void)
>  {
> + /* start usb so that usb keyboard can be used as input device */
> + if (CONFIG_IS_ENABLED(USB_KEYBOARD))
> + usb_init();
> +

This is typically handled by including "usb start" in CONFIG_PREBOOT,
which is done by boot/Kconfig.  Any reason why that doesn't work for
you?

>   return 0;
>  }
>  
> diff --git a/doc/board/emulation/qemu-riscv.rst 
> b/doc/board/emulation/qemu-riscv.rst
> index 9d21f3270c..61137bcbf1 100644
> --- a/doc/board/emulation/qemu-riscv.rst
> +++ b/doc/board/emulation/qemu-riscv.rst
> @@ -138,6 +138,11 @@ and adding::
>  
>  -serial stdio -device VGA
>  
> +In addition, a usb keyboard can be attached to an emulated xHCI controller in
> +RISC-V virt machine as an option of input devices by adding::
> +
> +-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
> +
>  Running with KVM
>  
>  
> diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h
> index d5146e70f7..584559cfa3 100644
> --- a/include/configs/qemu-riscv.h
> +++ b/include/configs/qemu-riscv.h
> @@ -17,7 +17,7 @@
>  
>  /* Environment options */
>  
> -#define CFG_STD_DEVICES_SETTINGS "stdin=serial\0" \
> +#define CFG_STD_DEVICES_SETTINGS "stdin=serial,usbkbd\0" \
>   "stdout=serial,vidconsole\0" \
>   "stderr=serial,vidconsole\0"
>  
> -- 
> 2.34.1
> 
> 


Re: [PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-22 Thread Heinrich Schuchardt



Am 23. Juli 2023 06:40:41 MESZ schrieb Bin Meng :
>This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
>as one of the input devices.
>
>Signed-off-by: Bin Meng 
>
>---
>
> board/emulation/qemu-riscv/Kconfig  | 5 +
> board/emulation/qemu-riscv/qemu-riscv.c | 5 +
> doc/board/emulation/qemu-riscv.rst  | 5 +
> include/configs/qemu-riscv.h| 2 +-
> 4 files changed, 16 insertions(+), 1 deletion(-)
>
>diff --git a/board/emulation/qemu-riscv/Kconfig 
>b/board/emulation/qemu-riscv/Kconfig
>index 7220c55350..b503578d27 100644
>--- a/board/emulation/qemu-riscv/Kconfig
>+++ b/board/emulation/qemu-riscv/Kconfig
>@@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
>   imply VIDEO_BOCHS
>   imply SYS_WHITE_ON_BLACK
>   imply PRE_CONSOLE_BUFFER
>+  imply USB
>+  imply USB_XHCI_HCD
>+  imply USB_XHCI_PCI

QEMU could alternatively use EHCI or OHCI for the keyboard. Does enabling XHCI 
add support for these too?

Best regards

Heinrich 

>+  imply USB_KEYBOARD
>+  imply CMD_USB
> 
> endif
>diff --git a/board/emulation/qemu-riscv/qemu-riscv.c 
>b/board/emulation/qemu-riscv/qemu-riscv.c
>index f39f3be366..181abbbf97 100644
>--- a/board/emulation/qemu-riscv/qemu-riscv.c
>+++ b/board/emulation/qemu-riscv/qemu-riscv.c
>@@ -12,6 +12,7 @@
> #include 
> #include 
> #include 
>+#include 
> #include 
> #include 
> 
>@@ -41,6 +42,10 @@ int board_init(void)
> 
> int board_late_init(void)
> {
>+  /* start usb so that usb keyboard can be used as input device */
>+  if (CONFIG_IS_ENABLED(USB_KEYBOARD))
>+  usb_init();
>+
>   return 0;
> }
> 
>diff --git a/doc/board/emulation/qemu-riscv.rst 
>b/doc/board/emulation/qemu-riscv.rst
>index 9d21f3270c..61137bcbf1 100644
>--- a/doc/board/emulation/qemu-riscv.rst
>+++ b/doc/board/emulation/qemu-riscv.rst
>@@ -138,6 +138,11 @@ and adding::
> 
> -serial stdio -device VGA
> 
>+In addition, a usb keyboard can be attached to an emulated xHCI controller in
>+RISC-V virt machine as an option of input devices by adding::
>+
>+-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
>+
> Running with KVM
> 
> 
>diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h
>index d5146e70f7..584559cfa3 100644
>--- a/include/configs/qemu-riscv.h
>+++ b/include/configs/qemu-riscv.h
>@@ -17,7 +17,7 @@
> 
> /* Environment options */
> 
>-#define CFG_STD_DEVICES_SETTINGS  "stdin=serial\0" \
>+#define CFG_STD_DEVICES_SETTINGS  "stdin=serial,usbkbd\0" \
>   "stdout=serial,vidconsole\0" \
>   "stderr=serial,vidconsole\0"
> 


[PATCH 18/18] riscv: qemu: Enable usb keyboard as an input device

2023-07-22 Thread Bin Meng
This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard
as one of the input devices.

Signed-off-by: Bin Meng 

---

 board/emulation/qemu-riscv/Kconfig  | 5 +
 board/emulation/qemu-riscv/qemu-riscv.c | 5 +
 doc/board/emulation/qemu-riscv.rst  | 5 +
 include/configs/qemu-riscv.h| 2 +-
 4 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/board/emulation/qemu-riscv/Kconfig 
b/board/emulation/qemu-riscv/Kconfig
index 7220c55350..b503578d27 100644
--- a/board/emulation/qemu-riscv/Kconfig
+++ b/board/emulation/qemu-riscv/Kconfig
@@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
imply VIDEO_BOCHS
imply SYS_WHITE_ON_BLACK
imply PRE_CONSOLE_BUFFER
+   imply USB
+   imply USB_XHCI_HCD
+   imply USB_XHCI_PCI
+   imply USB_KEYBOARD
+   imply CMD_USB
 
 endif
diff --git a/board/emulation/qemu-riscv/qemu-riscv.c 
b/board/emulation/qemu-riscv/qemu-riscv.c
index f39f3be366..181abbbf97 100644
--- a/board/emulation/qemu-riscv/qemu-riscv.c
+++ b/board/emulation/qemu-riscv/qemu-riscv.c
@@ -12,6 +12,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 
@@ -41,6 +42,10 @@ int board_init(void)
 
 int board_late_init(void)
 {
+   /* start usb so that usb keyboard can be used as input device */
+   if (CONFIG_IS_ENABLED(USB_KEYBOARD))
+   usb_init();
+
return 0;
 }
 
diff --git a/doc/board/emulation/qemu-riscv.rst 
b/doc/board/emulation/qemu-riscv.rst
index 9d21f3270c..61137bcbf1 100644
--- a/doc/board/emulation/qemu-riscv.rst
+++ b/doc/board/emulation/qemu-riscv.rst
@@ -138,6 +138,11 @@ and adding::
 
 -serial stdio -device VGA
 
+In addition, a usb keyboard can be attached to an emulated xHCI controller in
+RISC-V virt machine as an option of input devices by adding::
+
+-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
+
 Running with KVM
 
 
diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h
index d5146e70f7..584559cfa3 100644
--- a/include/configs/qemu-riscv.h
+++ b/include/configs/qemu-riscv.h
@@ -17,7 +17,7 @@
 
 /* Environment options */
 
-#define CFG_STD_DEVICES_SETTINGS   "stdin=serial\0" \
+#define CFG_STD_DEVICES_SETTINGS   "stdin=serial,usbkbd\0" \
"stdout=serial,vidconsole\0" \
"stderr=serial,vidconsole\0"
 
-- 
2.34.1