1What: /sys/bus/pci/drivers/ehci_hcd/.../companion 2 /sys/bus/usb/devices/usbN/../companion 3Date: January 2007 4KernelVersion: 2.6.21 5Contact: Alan Stern <stern@rowland.harvard.edu> 6Description: 7 PCI-based EHCI USB controllers (i.e., high-speed USB-2.0 8 controllers) are often implemented along with a set of 9 "companion" full/low-speed USB-1.1 controllers. When a 10 high-speed device is plugged in, the connection is routed 11 to the EHCI controller; when a full- or low-speed device 12 is plugged in, the connection is routed to the companion 13 controller. 14 15 Sometimes you want to force a high-speed device to connect 16 at full speed, which can be accomplished by forcing the 17 connection to be routed to the companion controller. 18 That's what this file does. Writing a port number to the 19 file causes connections on that port to be routed to the 20 companion controller, and writing the negative of a port 21 number returns the port to normal operation. 22 23 For example: To force the high-speed device attached to 24 port 4 on bus 2 to run at full speed:: 25 26 echo 4 >/sys/bus/usb/devices/usb2/../companion 27 28 To return the port to high-speed operation:: 29 30 echo -4 >/sys/bus/usb/devices/usb2/../companion 31 32 Reading the file gives the list of ports currently forced 33 to the companion controller. 34 35 Note: Some EHCI controllers do not have companions; they 36 may contain an internal "transaction translator" or they 37 may be attached directly to a "rate-matching hub". This 38 mechanism will not work with such controllers. Also, it 39 cannot be used to force a port on a high-speed hub to 40 connect at full speed. 41 42 Note: When this file was first added, it appeared in a 43 different sysfs directory. The location given above is 44 correct for 2.6.35 (and probably several earlier kernel 45 versions as well). 46 47