1 What: /sys/bus/pci/drivers/ehci_hcd/.../companion
2 /sys/bus/usb/devices/usbN/../companion
5 Contact: Alan Stern <stern@rowland.harvard.edu>
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
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.
23 For example: To force the high-speed device attached to
24 port 4 on bus 2 to run at full speed:
26 echo 4 >/sys/bus/usb/devices/usb2/../companion
28 To return the port to high-speed operation:
30 echo -4 >/sys/bus/usb/devices/usb2/../companion
32 Reading the file gives the list of ports currently forced
33 to the companion controller.
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.
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