Re: How to set USB_PORT_QUIRK_OLD_SCHEME on an usb-port ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 17, 2020 at 07:27:03PM +0200, Hans de Goede wrote:
> Hi,
> 
> On 9/10/20 5:41 PM, Alan Stern wrote:
> > On Thu, Sep 10, 2020 at 03:58:49PM +0200, Hans de Goede wrote:
> > > Hi,
> > > 
> > > On 9/6/20 4:22 AM, Alan Stern wrote:
> > > > On Sat, Sep 05, 2020 at 01:37:38PM +0200, Hans de Goede wrote:
> > > > > Hi All,
> > > > > 
> > > > > I have been debugging an issue with a 2-in-1 which
> > > > > consists of a tablet + a kbd-dock, where the device
> > > > > turns into a clamshell when docked into the kbd-dock.
> > > > > 
> > > > > The kbd dock is connected via pogo-pins. This works
> > > > > fine when docked at boot. But there is an enumeration
> > > > > issue when hot-docked (and the keyboard looses power
> > > > > when the lid is closedm so this also triggers after
> > > > > a suspend/resume):
> > > > > 
> > > > > [ 3498.924190] usb 1-3: new full-speed USB device number 5 using xhci_hcd
> > > > > [ 3499.041725] usb 1-3: device descriptor read/64, error -71
> > > > > [ 3515.215890] usb 1-3: device descriptor read/64, error -110
> > > > > [ 3515.440369] usb 1-3: new full-speed USB device number 6 using xhci_hcd
> > > > > [ 3515.603544] usb 1-3: New USB device found, idVendor=06cb, idProduct=73f5, bcdDevice= 0.02
> > > > > [ 3515.603574] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> > > > > [ 3515.603596] usb 1-3: Product: ITE Device(8910)
> > > > > [ 3515.603614] usb 1-3: Manufacturer: ITE Tech. Inc.
> > > > > 
> > > > > Note there is about 6 seconds before the keyboard becomes
> > > > > usable, which is quite long when trying to unlock the
> > > > > laptop after opening the lid.
> > > > > 
> > > > > If I set the USB_PORT_QUIRK_OLD_SCHEME on the port used by the kbd-dock:
> > > > > 
> > > > > echo 1 >  /sys/devices/pci0000\:00/0000\:00\:14.0/usb1/1-0\:1.0/usb1-port3/quirks
> > > > > 
> > > > > Then this changes to:
> > > > > 
> > > > > [ 4467.875008] usb 1-3: new full-speed USB device number 7 using xhci_hcd
> > > > > [ 4467.878483] usb 1-3: Device not responding to setup address.
> > > > > [ 4468.082476] usb 1-3: Device not responding to setup address.
> > > > > [ 4468.289990] usb 1-3: device not accepting address 7, error -71
> > > > > [ 4468.614928] usb 1-3: new full-speed USB device number 8 using xhci_hcd
> > > > > [ 4468.662392] usb 1-3: New USB device found, idVendor=06cb, idProduct=73f5, bcdDevice= 0.02
> > > > > [ 4468.662423] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> > > > > [ 4468.662444] usb 1-3: Product: ITE Device(8910)
> > > > > [ 4468.662461] usb 1-3: Manufacturer: ITE Tech. Inc.
> > > > > 
> > > > > Which is a lot better wrt making the keyboard available for
> > > > > use in a timely manner.
> > > > > 
> > > > > So now I'm looking into a way to automatically do this. I would
> > > > > prefer to keep the handling of this out of the kernel, so I looked into
> > > > > udev, but it seems that the usb_port_device_type device-s registered by
> > > > > usb_hub_create_port_device() are not visible to udev?
> > > > > 
> > > > > At least I'm not seeing them, in the output of "udevadm info -e"
> > > > 
> > > > My impression is that fixing this would be the simplest approach.
> > > 
> > > I agree that first trying to fix it is a good idea.
> 
> <snip>
> 
> > > > Have you tried decreasing the initial_descriptor_timeout module
> > > > parameter for usbcore?  That would probably help, but it's kind of a
> > > > sledgehammer.
> > > 
> > > So I tried this:
> > > 
> > > [root@localhost ~]# cat /sys/module/usbcore/parameters/initial_descriptor_timeout
> > > 1000
> > > 
> > > But it does not really seem to help:
> > > 
> > > [ 1171.435346] usb 1-3: USB disconnect, device number 2
> > > [ 1180.430958] usb 1-3: new full-speed USB device number 3 using xhci_hcd
> > > [ 1180.551543] usb 1-3: device descriptor read/64, error -71
> > > [ 1184.045548] usb 1-3: device descriptor read/64, error -110
> > > [ 1184.270924] usb 1-3: new full-speed USB device number 4 using xhci_hcd
> > > [ 1184.438336] usb 1-3: New USB device found, idVendor=06cb, idProduct=73f5, bcdDevice= 0.02
> > > [ 1184.438371] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> > > [ 1184.438399] usb 1-3: Product: ITE Device(8910)
> > > [ 1184.438425] usb 1-3: Manufacturer: ITE Tech. Inc.
> > 
> > That part of hub.c is a real mess.  Coincidentally, I just posted a
> > patch to try and fix it up a bit:
> > 
> > 	https://marc.info/?l=linux-usb&m=159959185227447&w=2
> 
> Ok, I've applied the patch and tried again (with initial_descriptor_timeout still set to 1000),
> so now the log from the reconnect looks look this:
> 
> [ 1157.248439] usb 1-3: new full-speed USB device number 3 using xhci_hcd
> [ 1157.254234] usb 1-3: device descriptor read/64, error -71
> [ 1157.371442] usb 1-3: new full-speed USB device number 4 using xhci_hcd
> [ 1158.377895] usb 1-3: device descriptor read/64, error -110
> [ 1158.379646] usb usb1-port3: attempt power cycle
> [ 1159.014480] usb 1-3: new full-speed USB device number 5 using xhci_hcd
> [ 1159.176112] usb 1-3: New USB device found, idVendor=06cb, idProduct=73f5, bcdDevice= 0.02
> [ 1159.176138] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> [ 1159.176156] usb 1-3: Product: ITE Device(8910)
> [ 1159.176172] usb 1-3: Manufacturer: ITE Tech. Inc.
> 
> Still a bit slower then the old probe method, but much better then the
> new probe method with the default initial_descriptor_timeout.

Yeah, okay, it's good to see that the patch helps.  But I'm doubtful 
that the change it makes will become part of the standard (i.e., not 
for embedded systems) kernel.

I still think the udev approach will be best.  That will require adding 
various *_uevent_* calls in usb_hub_create_port_device, and adding a 
.uevent member to usb_port_device_type.

> > If you apply that along with module parameter change, does it make any
> > difference?
> > 
> > (Or maybe you don't care to pursue this course and would prefer to work
> > on the udev approach...)
> 
> No, I would like to see this fixed properly in the kernel, but this is
> somewhat low on my prioritry list, esp. during workdays, so that why I'm
> a bit slow with responding, sorry.

No problem.

Alan Stern



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux