xref: /linux/Documentation/ABI/testing/sysfs-bus-pci-drivers-ehci_hcd (revision f3539c12d8196ce0a1993364d30b3a18908470d1)
1What:		/sys/bus/pci/drivers/ehci_hcd/.../companion
2		/sys/bus/usb/devices/usbN/../companion
3Date:		January 2007
4KernelVersion:	2.6.21
5Contact:	Alan Stern <stern@rowland.harvard.edu>
6Description:
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
47