usb - Irix USB subsystem
This page documents the Irix USB implementation for Onyx3.
The SN1 system Ibrick incorporates a USB host controller as part of the
baseio device set. There are two usb ports, on one usb controller.
Device Topology [Toc] [Back]
The USB device topology is exported through a subtree in the hardware
graph. The device topology format is subject to change over releases as
the need arises, so it should not be relied on by scripts. Each usb
driver (eg. keyboard, mouse) should export it's own namespace that can be
Usb hwgraph paths are of the form:
Where <slot> is 5 for the Ibrick internal usb controller. <port_path> is
a '/' separated sequence of usb hub port numbers. Ports having a common
parent belong to the same usb hub. Port components separated by a '/'
are connected by a hub. For example:
refers to port 1 of the usb controller, or Root Hub in USB terminology.
refers to port 2 of the hub which is plugged into port 1 of the Root Hub.
If a non-hub device is plugged into a port (and there is a driver for
that device), a driver-specific path will be hung off of the port that
the device is plugged into. In the example:
a driver has detected a keyboard device plugged into hub port 3, and a
mouse plugged into hub port 4. The hub in this example is plugged into
the Root Hub port 2.
USB Topology Rules
The following rules are enforced by the usb subsystem:
- The maximum depth from root hub to end device cannot exceed 7,
where the root hub (ie. controller) counts as 1. Stated
another way, you can have 5 usb hubs between the root hub and
an end device.
- All hubs in a path must be self-powered with the exception of
the one closest to the end device.
- Devices plugged into a port of a bus-powered hub must be
classified as low-power devices (max 100ma draw).
Hub Driver [Toc] [Back]
The Irix USB infrastructure implements the driver for USB hubs. Hubs
conforming to the USB 1.1 spec are supported.
Hot Plug [Toc] [Back]
The Irix USB implemtation supports hot plugging and unplugging of USB
devices, within the constraints of the USB topology rules.
A device that is hot plugged will be initialized to a default state by
the usb subsystem, and then the appropriate driver (if any) will be
called to do further driver specific initialization. Device
initialization errors will generally be logged to the console, and the
device will not be accessble.
A device that is unplugged will have its entry removed from the USB
hwgraph namespace. It is up to the individual drivers to do any driverspecific
cleanup at unplug time.
Reset [Toc] [Back]
There is no general usb administrative command. If a device needs to be
reset, it should be unplugged, and replugged.
The SGI USB implemtation is a partial implementation, intended to provide
support for selected keyboards and mice (see usbinput(7)) for Onyx3.
Currently there is no administrative command for individual device
control, and there is no support for devices other than keyboard/mouse.
Likewise, the usb infrastructure provides no published api for the
implentation of new usb drivers.
Only controllers conforming to the OpenHCI spec are supported.
usbinput(7), Universal Serial Bus Specification rev 1.1, OpenHCI Open
Host Controller Interface Specification for USB rev 1.0a
PPPPaaaaggggeeee 2222 [ Back ]