162306a36Sopenharmony_ciWhat:		/sys/bus/pci/drivers/ehci_hcd/.../companion
262306a36Sopenharmony_ci		/sys/bus/usb/devices/usbN/../companion
362306a36Sopenharmony_ciDate:		January 2007
462306a36Sopenharmony_ciKernelVersion:	2.6.21
562306a36Sopenharmony_ciContact:	Alan Stern <stern@rowland.harvard.edu>
662306a36Sopenharmony_ciDescription:
762306a36Sopenharmony_ci		PCI-based EHCI USB controllers (i.e., high-speed USB-2.0
862306a36Sopenharmony_ci		controllers) are often implemented along with a set of
962306a36Sopenharmony_ci		"companion" full/low-speed USB-1.1 controllers.  When a
1062306a36Sopenharmony_ci		high-speed device is plugged in, the connection is routed
1162306a36Sopenharmony_ci		to the EHCI controller; when a full- or low-speed device
1262306a36Sopenharmony_ci		is plugged in, the connection is routed to the companion
1362306a36Sopenharmony_ci		controller.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci		Sometimes you want to force a high-speed device to connect
1662306a36Sopenharmony_ci		at full speed, which can be accomplished by forcing the
1762306a36Sopenharmony_ci		connection to be routed to the companion controller.
1862306a36Sopenharmony_ci		That's what this file does.  Writing a port number to the
1962306a36Sopenharmony_ci		file causes connections on that port to be routed to the
2062306a36Sopenharmony_ci		companion controller, and writing the negative of a port
2162306a36Sopenharmony_ci		number returns the port to normal operation.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci		For example: To force the high-speed device attached to
2462306a36Sopenharmony_ci		port 4 on bus 2 to run at full speed::
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci			echo 4 >/sys/bus/usb/devices/usb2/../companion
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci		To return the port to high-speed operation::
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci			echo -4 >/sys/bus/usb/devices/usb2/../companion
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci		Reading the file gives the list of ports currently forced
3362306a36Sopenharmony_ci		to the companion controller.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci		Note: Some EHCI controllers do not have companions; they
3662306a36Sopenharmony_ci		may contain an internal "transaction translator" or they
3762306a36Sopenharmony_ci		may be attached directly to a "rate-matching hub".  This
3862306a36Sopenharmony_ci		mechanism will not work with such controllers.  Also, it
3962306a36Sopenharmony_ci		cannot be used to force a port on a high-speed hub to
4062306a36Sopenharmony_ci		connect at full speed.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci		Note: When this file was first added, it appeared in a
4362306a36Sopenharmony_ci		different sysfs directory.  The location given above is
4462306a36Sopenharmony_ci		correct for 2.6.35 (and probably several earlier kernel
4562306a36Sopenharmony_ci		versions as well).
4662306a36Sopenharmony_ci
47