| What: /sys/bus/pci/drivers/ehci_hcd/.../companion | |
| /sys/bus/usb/devices/usbN/../companion | |
| Date: January 2007 | |
| KernelVersion: 2.6.21 | |
| Contact: Alan Stern <stern@rowland.harvard.edu> | |
| Description: | |
| PCI-based EHCI USB controllers (i.e., high-speed USB-2.0 | |
| controllers) are often implemented along with a set of | |
| "companion" full/low-speed USB-1.1 controllers. When a | |
| high-speed device is plugged in, the connection is routed | |
| to the EHCI controller; when a full- or low-speed device | |
| is plugged in, the connection is routed to the companion | |
| controller. | |
| Sometimes you want to force a high-speed device to connect | |
| at full speed, which can be accomplished by forcing the | |
| connection to be routed to the companion controller. | |
| That's what this file does. Writing a port number to the | |
| file causes connections on that port to be routed to the | |
| companion controller, and writing the negative of a port | |
| number returns the port to normal operation. | |
| For example: To force the high-speed device attached to | |
| port 4 on bus 2 to run at full speed: | |
| echo 4 >/sys/bus/usb/devices/usb2/../companion | |
| To return the port to high-speed operation: | |
| echo -4 >/sys/bus/usb/devices/usb2/../companion | |
| Reading the file gives the list of ports currently forced | |
| to the companion controller. | |
| Note: Some EHCI controllers do not have companions; they | |
| may contain an internal "transaction translator" or they | |
| may be attached directly to a "rate-matching hub". This | |
| mechanism will not work with such controllers. Also, it | |
| cannot be used to force a port on a high-speed hub to | |
| connect at full speed. | |
| Note: When this file was first added, it appeared in a | |
| different sysfs directory. The location given above is | |
| correct for 2.6.35 (and probably several earlier kernel | |
| versions as well). | |