RapidIO sysfs Files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Device Subdirectories ------------------------ For each RapidIO device, the RapidIO subsystem creates files in an individual subdirectory with the following name, /sys/bus/rapidio/devices/<device_name>. The format of device_name is "nn:d:iiii", where: nn - two-digit hexadecimal ID of RapidIO network where the device resides d - device typr: 'e' - for endpoint or 's' - for switch iiii - four-digit device destID for endpoints, or switchID for switches For example, below is a list of device directories that represents a typical RapidIO network with one switch, one host, and two agent endpoints, as it is seen by the enumerating host (destID = 1): /sys/bus/rapidio/devices/00:e:0000 /sys/bus/rapidio/devices/00:e:0002 /sys/bus/rapidio/devices/00:s:0001 NOTE: An enumerating or discovering endpoint does not create a sysfs entry for itself, this is why an endpoint with destID=1 is not shown in the list. 2. Attributes Common for All Devices ------------------------------------ Each device subdirectory contains the following informational read-only files: did - returns the device identifier vid - returns the device vendor identifier device_rev - returns the device revision level asm_did - returns identifier for the assembly containing the device asm_rev - returns revision level of the assembly containing the device asm_vid - returns vendor identifier of the assembly containing the device destid - returns device destination ID assigned by the enumeration routine (see 4.1 for switch specific details) lprev - returns name of previous device (switch) on the path to the device that that owns this attribute modalias - returns the device modalias In addition to the files listed above, each device has a binary attribute file that allows read/write access to the device configuration registers using the RapidIO maintenance transactions: config - reads from and writes to the device configuration registers. This attribute is similar in behavior to the "config" attribute of PCI devices and provides an access to the RapidIO device registers using standard file read and write operations. 3. Endpoint Device Attributes ----------------------------- Currently Linux RapidIO subsystem does not create any endpoint specific sysfs attributes. It is possible that RapidIO master port drivers and endpoint device drivers will add their device-specific sysfs attributes but such attributes are outside the scope of this document. 4. Switch Device Attributes --------------------------- RapidIO switches have additional attributes in sysfs. RapidIO subsystem supports common and device-specific sysfs attributes for switches. Because switches are integrated into the RapidIO subsystem, it offers a method to create device-specific sysfs attributes by specifying a callback function that may be set by the switch initialization routine during enumeration or discovery process. 4.1 Common Switch Attributes routes - reports switch routing information in "destID port" format. This attribute reports only valid routing table entries, one line for each entry. destid - device destination ID that defines a route to the switch hopcount - number of hops on the path to the switch lnext - returns names of devices linked to the switch except one of a device linked to the ingress port (reported as "lprev"). This is an array names with number of lines equal to number of ports in switch. If a switch port has no attached device, returns "null" instead of a device name. 4.2 Device-specific Switch Attributes Device-specific switch attributes are listed for each RapidIO switch driver that exports additional attributes. IDT_GEN2: errlog - reads contents of device error log until it is empty. 5. RapidIO Bus Attributes ------------------------- RapidIO bus subdirectory /sys/bus/rapidio implements the following bus-specific attribute: scan - allows to trigger enumeration discovery process from user space. This is a write-only attribute. To initiate an enumeration or discovery process on specific mport device, a user needs to write mport_ID (not RapidIO destination ID) into this file. The mport_ID is a sequential number (0 ... RIO_MAX_MPORTS) assigned to the mport device. For example, for a machine with a single RapidIO controller, mport_ID for that controller always will be 0. To initiate RapidIO enumeration/discovery on all available mports a user must write '-1' (or RIO_MPORT_ANY) into this attribute file.