2016-07-12 13 views
1

Ich habe eine Variscite VAR-SOM-MX6 mit einem Linux 3.0.35 Kernel, mit zwei USB-Ports. Der erste Port ist ein OTG-Port, der an eine externe Mini-OTG-Buchse angeschlossen ist. Der zweite ist ein interner Host-Port, der zu einem Hub-Chip und dann zu einigen anderen Geräten geht. Wenn ich ein OTG-Kabel an den ersten Port angeschlossen habe und es als Host deklariere, funktioniert alles einwandfrei. Wenn ich ein normales Kabel oder überhaupt kein Kabel angeschlossen habe, wird der zweite Host-Port nicht ordnungsgemäß aufgelistet. Es muss nichts am anderen Ende des Kabels sein, also ist dies ein Fehler, der nur darauf bezogen ist, ob die OTG versucht, ein Host oder ein Gerät zu sein. Zum Beispiel, wenn ich ein OTG-Kabel einstecken und neu starten, enthält das Kernel-Protokoll die folgenden Zeilen.Linux OTG-Port vermasselt meinen anderen Host-Port

usb 2-1: new high speed USB device number 2 using fsl-ehci 
usb 2-1: New USB device found, idVendor=0424, idProduct=2534 
usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 
hub 2-1:1.0: USB hub found 
hub 2-1:1.0: 4 ports detected 
usb 2-1.1: new high speed USB device number 3 using fsl-ehci 
usb 2-1.1: New USB device found, idVendor=0424, idProduct=9e00 
usb 2-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 
usb 2-1.2: new high speed USB device number 4 using fsl-ehci 
usb 2-1.2: New USB device found, idVendor=0403, idProduct=6011 
usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 
usb 2-1.2: Product: Quad RS232-HS 
usb 2-1.2: Manufacturer: FTDI 

Wenn ich dann die OTG-Kabel vom Port 1 zerren, trennt sie alles auf Port 2:

usb 2-1: USB disconnect, device number 2 
usb 2-1.1: USB disconnect, device number 3 
usb 2-1.2: USB disconnect, device number 4 

und dann versucht, alles neu zu auflisten, aber scheitert kläglich:

usb 2-1: new high speed USB device number 5 using fsl-ehci 
usb 2-1: new high speed USB device number 6 using fsl-ehci 
usb 2-1: new high speed USB device number 7 using fsl-ehci 
usb 2-1: device not accepting address 7, error -71 
usb 2-1: new high speed USB device number 8 using fsl-ehci 
usb 2-1: device not accepting address 8, error -71 
hub 2-0:1.0: unable to enumerate USB device on port 1 

Ich vermute, dass ein Code die physischen Portnummern 1 und 2 verwendet, unabhängig davon, ob ein Port ein Host oder ein Gerät ist, während anderer Code nur die tatsächlichen Hostports betrachtet und die Portnummern verwirrt väterlicherseits. Hat jemand diesen Fehler schon einmal gesehen? Googeln hat nichts ausgemacht. Oder gibt es ein spezielleres Forum, wo ich diese Frage stellen sollte?

Antwort

1

Falls jemand interessiert ist, stellte sich heraus, dass dies ein Hardwaredesignproblem war. Beide USB-PHYs werden über einen internen Regler mit +5 V entweder vom Host-VBUS oder vom OTG-VBUS, je nachdem, welcher höher ist, versorgt. Der Entwickler dachte, dies seien Spannungserfassungseingänge, und steuerten den Host-VBUS mit 5 V durch einen 10K-Widerstand. So lief es nicht mehr, wenn der OTG-Port nicht verbunden war. Das Ändern von 10K auf 0 Ohm hat es behoben.