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

Filip Žaludek filip.zaludek at oracle.com
Mon Dec 19 21:25:27 CET 2022



Hi Simon,


On 12/19/22 20:20, Simon Glass wrote:
> Hi Filip,
> 
> On Mon, 19 Dec 2022 at 02:29, Filip Žaludek <filip.zaludek at oracle.com> wrote:
>>
>>
>>
>> Hi Simon,
>>
>>    is your testing framework connected to HDMI? Only notable discrepancy
>> from generic config is enabled 'efidebug' command.
>>
>>
>> Tested more (cycled 'U-Boot>' and 'reset'), both RPi3B and RPi3B+..
>> USB Keyboard failure rates:
>> connected console            02/10
>> connected hdmi               06/10
>> connected console + hdmi     07/10
>> ** USB Keyboard always detected by 'usb info', just does not respond.
>>
>> USB Keyboard failure rates, reverted 96991e652f541323a03c5b7e075d54a117091618:
>> connected console + hdmi     00/10
> 
> Yes this one does have HDMI. Are you wanting me to run multiple runs?
> With or without the display?


  Yes please! With HDMI as there is better chance you will hit issue I am experiencing,
to confirm 96991e652f541323a03c5b7e075d54a117091618 is inferior for RPi3.
You should see usb_kbd detected, but no input possible.


Thanks,
Filip





> 
> Regards,
> Simon
> 
> 
>>
>>
>>
>>    Just to note subsequent Grub2 menu redraw to my 180x50 console terminal
>> is about 5x faster when hdmi disconnected.
>>
>>
>>
>> Thanks for testing!
>> Regards,
>> Filip
>>
>>
>>
>> FW: rpi-firmware-20220830-1.0.1.el8.noarch
>> Revision: 9bd3d354a1a0712ac27c717df9ad60566b0406ee
>>
>>
>>
>>
>>
>>
>>
>> On 12/17/22 23:24, Simon Glass wrote:
>>> 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://urldefense.com/v3/__https://github.com/u-boot/u-boot/commit/96991e652f541323a03c5b7e075d54a117091618__;!!ACWV5N9M2RV99hQ!MunypRlNhelLw1nrbbLFCTeZK2pCAlIH_WPhgvmgFhfy3wJnPA5titNwl3o2fkc-mCqWAgJxjjc1sSD1$
>>>>
>>>>
>>>> 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:
>>>> https://urldefense.com/v3/__http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS-raspberrypi.aarch64-2022.10.11-Snapshot20221112.raw.xz__;!!ACWV5N9M2RV99hQ!MunypRlNhelLw1nrbbLFCTeZK2pCAlIH_WPhgvmgFhfy3wJnPA5titNwl3o2fkc-mCqWAgJxjkilUmrv$
>>>> (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