| 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 |  |