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