[PATCH v3] console: usb: kbd: Limit poll frequency to improve performance

Simon Glass sjg at chromium.org
Sat Dec 17 23:24:28 CET 2022


Hi Filip,

On Sat, 17 Dec 2022 at 05:50, Filip Žaludek <filip.zaludek at oracle.com> wrote:
>
>
>
> Hello,
>   change seems to be unfriendly to RPi3B+, it allows to enter 'U-Boot>' shell but usb keyboard
> does not respond. Keyboard is detected by 'usb info' in v2023.01-rc3, not in v2022.10.
> When reverted, usb keyboard works as expected.
>
> Anybody sitting front of RPi3B+ care to confirm?
>
>
> Regards,
> Filip
>
>
>
>
>
> Patch:
> https://github.com/u-boot/u-boot/commit/96991e652f541323a03c5b7e075d54a117091618
>
>
> Debug:
> USB KBD: found interrupt EP: 0x81
> USB KBD: set boot protocol
> dwc2_submit_control_msg: dev='usb at 7e980000', udev=000000003af4be00,
> udev->dev='usb_kbd', portnr=3
> USB KBD: set idle interval...
> dwc2_submit_control_msg: dev='usb at 7e980000', udev=000000003af4be00,
> udev->dev='usb_kbd', portnr=3
> USB KBD: enable interrupt pipe...
> usb_kbd usb_kbd: Timeout poll on interrupt endpoint
>
>
> Tested:
> SW: v2022.10 & v2023.01-rc3 compiled from sources as 'rpiarm64'
> HW: USB 1.1 and 2.0 keyboards, RPi3B+
> JeOS:
> http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS-raspberrypi.aarch64-2022.10.11-Snapshot20221112.raw.xz
> (u-boot-rpiarm64-2022.10-1.1.aarch64)
>
>

This seems to work on current master:

do-try-int.sh rpi3
Revision 9bd3d354a1a0712ac27c717df9ad60566b0406ee, board rpi3

Checking revision 9bd3d354a1a0712ac27c717df9ad60566b0406ee
/vid/software/devel/ubtest
tbot starting ...
├─Parameters:
│     rev        = '9bd3d354a1a0712ac27c717df9ad60566b0406ee'
│     clean      = False
├─Calling uboot_build_and_flash ...
│   ├─Calling uboot_build ...
│   │   ├─Calling uboot_checkout ...
│   │   │   ├─Builder: rpi3
│   │   │   └─Done. (0.181s)
│   │   ├─Configuring build ...
│   │   ├─Calling uboot_make ...
│   │   │   └─Done. (1.504s)
│   │   └─Done. (2.178s)
│   ├─Calling uboot_flash ...
│   │   ├─Calling copy ...
│   │   │   └─Done. (0.004s)
│   │   └─Done. (1.119s)
│   └─Done. (3.663s)
├─────────────────────────────────────────
└─SUCCESS (3.799s)
tbot starting ...
├─Calling interactive_board ...
│   ├─POWERON (rpi3)
│   ├─Entering interactive shell (CTRL+D to exit) ...


U-Boot 2023.01-rc3-00057-g9bd3d354a1a (Dec 17 2022 - 15:23:14 -0700)

DRAM:  992 MiB
RPI 3 Model B (0xa22082)
Core:  66 devices, 14 uclasses, devicetree: embed
MMC:   mmc at 7e202000: 0, mmc at 7e300000: 1
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1...
In:    serial
Out:   vidconsole
Err:   vidconsole
Net:   No ethernet found.
starting USB...
Bus usb at 7e980000: USB DWC2
scanning bus usb at 7e980000 for devices... usb_kbd usb_kbd: Timeout poll
on interrupt endpoint
Failed to get keyboard state from device 0c40:8000
6 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
Hit any key to stop autoboot:  0
U-Boot> usb info
1: Hub,  USB Revision 1.10
 -  U-Boot Root Hub
 - Class: Hub
 - PacketSize: 8  Configurations: 1
 - Vendor: 0x0000  Product 0x0000 Version 0.0
   Configuration: 1
   - Interfaces: 1 Self Powered 0mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 1
     - Class Hub
     - Endpoint 1 In Interrupt MaxPacket 2 Interval 255ms

2: Hub,  USB Revision 2.0
 - Class: Hub
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0424  Product 0x9514 Version 2.0
   Configuration: 1
   - Interfaces: 1 Self Powered Remote Wakeup 2mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 1
     - Class Hub
     - Endpoint 1 In Interrupt MaxPacket 1 Interval 12ms
     - Endpoint 1 In Interrupt MaxPacket 1 Interval 12ms

3: Human Interface,  USB Revision 1.10
 - Logitech USB Keyboard
 - Class: (from Interface) Human Interface
 - PacketSize: 8  Configurations: 1
 - Vendor: 0x046d  Product 0xc31c Version 100.0
   Configuration: 1
   - Interfaces: 2 Bus Powered Remote Wakeup 90mA
   - String: "U64.00_B0001"
     Interface: 0
     - Alternate Setting 0, Endpoints: 1
     - Class Human Interface, Subclass: Boot Keyboard
     - String: "USB Keyboard"
     - Endpoint 1 In Interrupt MaxPacket 8 Interval 10ms
     Interface: 1
     - Alternate Setting 0, Endpoints: 1
     - Class Human Interface, Subclass: None
     - String: "USB Keyboard"
     - Endpoint 2 In Interrupt MaxPacket 4 Interval 255ms

4: Human Interface,  USB Revision 0.1
 - QDtech MPI5001 ?
 - Class: (from Interface) Human Interface
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0483  Product 0x5750 Version 2.0
   Configuration: 1
   - Interfaces: 1 Bus Powered 64mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 1
     - Class Human Interface, Subclass: None
     - Endpoint 2 In Interrupt MaxPacket 64 Interval 1ms
     - Endpoint 2 Out Interrupt MaxPacket 64 Interval 1ms

5: Vendor specific,  USB Revision 2.0
 - Class: Vendor specific
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0424  Product 0xec00 Version 2.0
   Configuration: 1
   - Interfaces: 1 Self Powered Remote Wakeup 2mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 3
     - Class Vendor specific
     - Endpoint 1 In Bulk MaxPacket 512
     - Endpoint 2 Out Bulk MaxPacket 512
     - Endpoint 3 In Interrupt MaxPacket 16 Interval 4ms

6: Mass Storage,  USB Revision 2.10
 - SanDisk USB Extreme Pro 513456791960
 - Class: (from Interface) Mass Storage
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0781  Product 0x5588 Version 1.0
   Configuration: 1
   - Interfaces: 1 Self Powered 0mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 2
     - Class Mass Storage, Transp. SCSI, Bulk only
     - Endpoint 1 In Bulk MaxPacket 512
     - Endpoint 2 Out Bulk MaxPacket 512

U-Boot> hello
Unknown command 'hello' - try 'help'
U-Boot>
│   ├─POWEROFF (rpi3)
│   ├─Exiting poweroff
│   └─Done. (34.381s)
├─────────────────────────────────────────
└─SUCCESS (34.481s)

(the 'hello' is typed on the keyboard)

Regards,
Simon


More information about the U-Boot mailing list