Alan Stern | 25aa554 | 2011-09-14 12:33:16 -0400 | [diff] [blame] | 1 | What: /sys/bus/pci/drivers/ehci_hcd/.../companion |
| 2 | /sys/bus/usb/devices/usbN/../companion |
| 3 | Date: January 2007 |
| 4 | KernelVersion: 2.6.21 |
| 5 | Contact: Alan Stern <stern@rowland.harvard.edu> |
| 6 | Description: |
| 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 | |