Hi Bin,

On 29.06.2017 11:01, Bin Meng wrote:
Hi Stefan,

On Thu, Jun 29, 2017 at 4:20 PM, Stefan Roese <s...@denx.de> wrote:
Hi Bin,


On 29.06.2017 10:09, Stefan Roese wrote:

Hi Bin,

On 29.06.2017 08:51, Bin Meng wrote:

Hi Stefan,

On Thu, Jun 29, 2017 at 2:13 PM, Stefan Roese <s...@denx.de> wrote:

Hi Bin,

On 29.06.2017 07:39, Bin Meng wrote:

Hi Stefan,

On Wed, Jun 28, 2017 at 8:47 PM, Stefan Roese <s...@denx.de> wrote:

Hi Bin,

On 28.06.2017 14:11, Bin Meng wrote:

On Wed, Jun 28, 2017 at 7:00 PM, Stefan Roese <s...@denx.de> wrote:

Hi Bin,

On 26.06.2017 13:05, Bin Meng wrote:

This series is the final series of the xHCI driver update.

This adds the missing interrupt transfer support to xHCI driver, so
that devices like USB keyboard that uses interrupt transfer when
CONFIG_SYS_USB_EVENT_POLL is defined can work.

Previous two series:
[1]: usb: xhci: Fix USB xHCI support on Intel platform
https://lists.denx.de/pipermail/u-boot/2017-June/296166.html
[2]: usb: hub: Support USB 3.0 hubs
https://lists.denx.de/pipermail/u-boot/2017-June/296284.html

This series is available at u-boot-x86/xhci-working3 for testing.


I'm using this git branch to test all your xHCI related patches
now. On my BayTrail platform I get these messages upon "usb reset"
scanning:

=> usb reset
resetting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... cannot reset port 1!?
USB device descriptor short read (expected 18, got 8)
5 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s)
found

On the 2nd scan, the "cannot reset port 1" line is gone:

=> usb reset
resetting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... USB device descriptor short read
(expected 18, got 8)
5 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s)
found

All USB devices seem to be detected correctly though. Here the
logs:

=> usb tree
USB device tree:
      1  Hub (5 Gb/s, 0mA)
      |  U-Boot XHCI Host Controller
      |
      +-2  Hub (480 Mb/s, 100mA)
      |
      +-3  Hub (480 Mb/s, 2mA)
      | |
      | +-5  Mass Storage (480 Mb/s, 200mA)
      |      JetFlash Mass Storage Device 3281440601
      |
      +-4  Vendor specific (5 Gb/s, 64mA)
           Realtek USB 10/100/1000 LAN 000002000000

=> usb info
1: Hub,  USB Revision 3.0
     - U-Boot XHCI Host Controller
     - Class: Hub
     - PacketSize: 512  Configurations: 1
     - Vendor: 0x0000  Product 0x0000 Version 1.0
       Configuration: 1
       - Interfaces: 1 Self Powered 0mA
         Interface: 0
         - Alternate Setting 0, Endpoints: 1
         - Class Hub
         - Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms

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

3: Hub,  USB Revision 2.1
     - Class: Hub
     - PacketSize: 64  Configurations: 1
     - Vendor: 0x0424  Product 0x4604 Version 1.131
       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

5: Mass Storage,  USB Revision 2.10
     - JetFlash Mass Storage Device 3281440601
     - Class: (from Interface) Mass Storage
     - PacketSize: 64  Configurations: 1
     - Vendor: 0x8564  Product 0x1000 Version 16.117
       Configuration: 1
       - Interfaces: 1 Bus Powered 200mA
         Interface: 0
         - Alternate Setting 0, Endpoints: 2
         - Class Mass Storage, Transp. SCSI, Bulk only
         - Endpoint 2 Out Bulk MaxPacket 512
         - Endpoint 1 In Bulk MaxPacket 512

4: Vendor specific,  USB Revision 3.0
     - Realtek USB 10/100/1000 LAN 000002000000
     - Class: (from Interface) Vendor specific
     - PacketSize: 512  Configurations: 2
     - Vendor: 0x0bda  Product 0x8153 Version 48.0
       Configuration: 1
       - Interfaces: 1 Bus Powered Remote Wakeup 64mA
         Interface: 0
         - Alternate Setting 0, Endpoints: 3
         - Class Vendor specific
         - Endpoint 1 In Bulk MaxPacket 1024
         - Endpoint 2 Out Bulk MaxPacket 1024
         - Endpoint 3 In Interrupt MaxPacket 2 Interval 8ms

Do you have any ideas about the scanning logs that I've noticed
above? Would it help if I provided some debug logs (-DDEBUG)
for this?


"cannot reset port 1" message is annoying, but that may happen
sometimes due to unstable power supply. I will see if we can mute it
if it's not the final round of reset try.


That would be good, thanks.

I am more concerned about
the "USB device descriptor short read (expected 18, got 8)". This
message indicates U-Boot cannot get the device descriptor during set
configuration process. So did you manage to get all USB devices that
are connected on your board enumerated?


Might be that I'm missing some keyboard / mouse, which I'm not
using and not really aware of. One USB port is connected to a
KVM switch, enumberating such devices. Here the log from U-Boot
and Linux again:

=> usb reset
resetting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... cannot reset port 1!?
USB device descriptor short read (expected 18, got 8)
6 USB Device(s) found
          scanning usb for storage devices... 2 Storage Device(s) found
=> usb tree
USB device tree:
     1  Hub (5 Gb/s, 0mA)
     |  U-Boot XHCI Host Controller
     |
     +-2  Hub (480 Mb/s, 100mA)
     |
     +-3  Mass Storage (480 Mb/s, 98mA)
     |    USBest Technology USB Mass Storage Device 09092207fbf0c4
     |
     +-4  Hub (480 Mb/s, 2mA)
     | |
     | +-6  Mass Storage (480 Mb/s, 200mA)
     |      JetFlash Mass Storage Device 3281440601
     |
     +-5  Vendor specific (5 Gb/s, 64mA)
          Realtek USB 10/100/1000 LAN 000002000000


$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M
       |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class,
Driver=r8152, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
       |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
           |__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 12M
               |__ Port 1: Dev 6, If 1, Class=Human Interface Device,
Driver=usbhid, 12M
               |__ Port 1: Dev 6, If 2, Class=Human Interface Device,
Driver=usbhid, 12M
               |__ Port 1: Dev 6, If 0, Class=Human Interface Device,
Driver=usbhid, 12M
       |__ Port 4: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage,
480M
       |__ Port 5: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
           |__ Port 1: Dev 7, If 0, Class=Mass Storage,
Driver=usb-storage, 480M


Which event polling Kconfig option do I need to enable?


The default one CONFIG_SYS_USB_EVENT_POLL should be OK. By comparing
your U-Boot log and Linux one, I found the following devices were
enumerated by Linux but not by U-Boot:

               |__ Port 1: Dev 6, If 1, Class=Human Interface Device,
Driver=usbhid, 12M
               |__ Port 1: Dev 6, If 2, Class=Human Interface Device,
Driver=usbhid, 12M
               |__ Port 1: Dev 6, If 0, Class=Human Interface Device,
Driver=usbhid, 12M

These devices are full speed devices. I believe the reason is that
U-Boot encounters "USB device descriptor short read (expected 18, got
8)" so it does  not continue the enumeration. As to why these full
speed devices only return 8 bytes descriptors, this needs to be
investigated. Which devices are they?


This is my KVM switch with its USB keyboard and mouse. When I unplug
this USB cable, this message does not appear while running "usb reset".

This also happen, when I only plug a USB mouse to this same USB
port:

=> usb reset
resetting USB...
USB0:   Register 7000820 NbrPorts 7
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... USB device descriptor short read (expected
18, got 8)
5 USB Device(s) found
         scanning usb for storage devices... 2 Storage Device(s) found
=> usb tree
USB device tree:
    1  Hub (5 Gb/s, 0mA)
    |  U-Boot XHCI Host Controller
    |
    +-2  Mass Storage (480 Mb/s, 98mA)
    |    USBest Technology USB Mass Storage Device 09092207fbf0c4
    |
    +-3  Hub (480 Mb/s, 2mA)
    | |
    | +-5  Mass Storage (480 Mb/s, 200mA)
    |      JetFlash Mass Storage Device 3281440601
    |
    +-4  Vendor specific (5 Gb/s, 64mA)
         Realtek USB 10/100/1000 LAN 000002000000


$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M
      |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152,
5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
      |__ Port 2: Dev 2, If 0, Class=Human Interface Device,
Driver=usbhid, 12M
      |__ Port 2: Dev 2, If 1, Class=Human Interface Device,
Driver=usbhid, 12M
      |__ Port 4: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage,
480M
      |__ Port 5: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
          |__ Port 1: Dev 5, If 0, Class=Mass Storage,
Driver=usb-storage, 480M


Can you reproduce this on your MinnowMax? Would it help, if I
would enable some traces (-DDEBUG)?


I cannot reproduce this on MinnowMax. Is the KVM switch a USB 2.0 or
3.0 hub?


USB 2.0, its a pretty old device. But the example above is without the
KVM and only with the USB mouse.

Is it possible to switch BayTrail SoC to EHCI and do the same
testing?


Sure. After disabling CONFIG_USB_XHCI_HC I now get this error:

=> usb reset
resetting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... Divide Error
EIP: 0010:[<7b587862>] EFLAGS: 00010246
Original EIP :[<fff33862>]
EAX: 00000040 EBX: 7b35db00 ECX: 00000380 EDX: 00000000
ESI: 7b33af40 EDI: 7b33aa00 EBP: 7b35a640 ESP: 7b33a990
   DS: 0018 ES: 0018 FS: 0020 GS: 0018 SS: 0018
CR0: 00000033 CR2: 00000000 CR3: 00000000 CR4: 00000600
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
Stack:
      0x7b33a9d0 : 0x7b35dac0
      0x7b33a9cc : 0x7b33af40
      0x7b33a9c8 : 0x00000100
      0x7b33a9c4 : 0x7b33ac80
      0x7b33a9c0 : 0x00000001
      0x7b33a9bc : 0x7b33ac80
      0x7b33a9b8 : 0x7b35a680
      0x7b33a9b4 : 0x00000000
      0x7b33a9b0 : 0x00000040
      0x7b33a9ac : 0x80000080
      0x7b33a9a8 : 0x7b35db00
      0x7b33a9a4 : 0x00000040
      0x7b33a9a0 : 0x00000002
      0x7b33a99c : 0x7b35dac0
      0x7b33a998 : 0x1616cae2
      0x7b33a994 : 0xc8159ec7
--->0x7b33a990 : 0xc1b7c2b0
      0x7b33a98c : 0x00010246
      0x7b33a988 : 0x00000010
      0x7b33a984 : 0x7b587862
### ERROR ### Please RESET the board ###

EHCI worked before just fine. Does this (EHCI) work on your
MinnoxMax?


I just installed an earlier version with EHCI still working. Here the
USB mouse is detected:

=> usb reset
resetting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 5 USB Device(s) found
=> usb tree
USB device tree:
   1  Hub (480 Mb/s, 0mA)
   |  u-boot EHCI Host Controller
   |
   +-2  Hub (480 Mb/s, 0mA)
     |
     +-3  Vendor specific (480 Mb/s, 180mA)
     |    Realtek USB 10/100/1000 LAN 000002000000
     |
     +-5  Mass Storage (480 Mb/s, 98mA)
     |    USBest Technology USB Mass Storage Device 09092207fbf0c4
     |
     +-4  Human Interface (12 Mb/s, 98mA)
          Logitech USB Receiver

=> usb info
1: Hub,  USB Revision 2.0
  - u-boot EHCI Host Controller
  - Class: Hub
  - PacketSize: 64  Configurations: 1
  - Vendor: 0x0000  Product 0x0000 Version 1.0
    Configuration: 1
    - Interfaces: 1 Self Powered 0mA
      Interface: 0
      - Alternate Setting 0, Endpoints: 1
      - Class Hub
      - Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms

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

3: Vendor specific,  USB Revision 2.10
  - Realtek USB 10/100/1000 LAN 000002000000
  - Class: (from Interface) Vendor specific
  - PacketSize: 64  Configurations: 2
  - Vendor: 0x0bda  Product 0x8153 Version 48.0
    Configuration: 1
    - Interfaces: 1 Bus Powered Remote Wakeup 180mA
      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 2 Interval 8ms

5: Mass Storage,  USB Revision 2.0
  - USBest Technology USB Mass Storage Device 09092207fbf0c4
  - Class: (from Interface) Mass Storage
  - PacketSize: 64  Configurations: 1
  - Vendor: 0x1307  Product 0x0165 Version 1.0
    Configuration: 1
    - Interfaces: 1 Bus Powered 98mA
      Interface: 0
      - Alternate Setting 0, Endpoints: 3
      - Class Mass Storage, Transp. SCSI, Bulk only
      - Endpoint 1 Out Bulk MaxPacket 512
      - Endpoint 2 In Bulk MaxPacket 512
      - Endpoint 3 In Interrupt MaxPacket 64 Interval 8ms

4: Human Interface,  USB Revision 2.0
  - Logitech USB Receiver
  - Class: (from Interface) Human Interface
  - PacketSize: 8  Configurations: 1
  - Vendor: 0x046d  Product 0xc52f Version 34.0
    Configuration: 1
    - Interfaces: 2 Bus Powered Remote Wakeup 98mA
    - String: "RQR22.00_B0005"
      Interface: 0
      - Alternate Setting 0, Endpoints: 1
      - Class Human Interface, Subclass: Boot Mouse
      - Endpoint 1 In Interrupt MaxPacket 8 Interval 2ms
      Interface: 1
      - Alternate Setting 0, Endpoints: 1
      - Class Human Interface, Subclass: None
      - Endpoint 2 In Interrupt MaxPacket 20 Interval 2ms


Thank you very much for the information. This is very helpful. Looks
your USB mouse is Logitech which is a full speed device. My testing
was using a DELL mouse and keyboard which are both low speed devices.
It's possible that xHCI driver still has some issues somewhere that
does not handle LS/FS very well. After my patches it only works for my
mouse and keyboard. I may have some clue, but since I don't have the
device so I will rely on you to test that :)

Sure. I will gladly do some further tests.

BTW: The mouse is a Logitech M305, in case you might want to know. ;)

Thanks,
Stefan
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to