|  | RapidIO sysfs Files | 
|  |  | 
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  |  | 
|  | 1. RapidIO 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 RapidIO 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. RapidIO 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. RapidIO 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. | 
|  |  | 
|  |  | 
|  | 6. RapidIO Bus Controllers/Ports | 
|  | -------------------------------- | 
|  |  | 
|  | On-chip RapidIO controllers and PCIe-to-RapidIO bridges (referenced as | 
|  | "Master Port" or "mport") are presented in sysfs as the special class of | 
|  | devices: "rapidio_port". | 
|  |  | 
|  | The /sys/class/rapidio_port subdirectory contains individual subdirectories | 
|  | named as "rapidioN" where N = mport ID registered with RapidIO subsystem. | 
|  |  | 
|  | NOTE: An mport ID is not a RapidIO destination ID assigned to a given local | 
|  | mport device. | 
|  |  | 
|  | Each mport device subdirectory in addition to standard entries contains the | 
|  | following device-specific attributes: | 
|  |  | 
|  | port_destid - reports RapidIO destination ID assigned to the given RapidIO | 
|  | mport device. If value 0xFFFFFFFF is returned this means that | 
|  | no valid destination ID have been assigned to the mport (yet). | 
|  | Normally, before enumeration/discovery have been executed only | 
|  | fabric enumerating mports have a valid destination ID assigned | 
|  | to them using "hdid=..." rapidio module parameter. | 
|  | sys_size - reports RapidIO common transport system size: | 
|  | 0 = small (8-bit destination ID, max. 256 devices), | 
|  | 1 = large (16-bit destination ID, max. 65536 devices). | 
|  |  | 
|  | After enumeration or discovery was performed for a given mport device, | 
|  | the corresponding subdirectory will also contain subdirectories for each | 
|  | child RapidIO device connected to the mport. Naming conventions for RapidIO | 
|  | devices are described in Section 1 above. | 
|  |  | 
|  | The example below shows mport device subdirectory with several child RapidIO | 
|  | devices attached to it. | 
|  |  | 
|  | [rio@rapidio ~]$ ls /sys/class/rapidio_port/rapidio0/ -l | 
|  | total 0 | 
|  | drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0001 | 
|  | drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0004 | 
|  | drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0007 | 
|  | drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0002 | 
|  | drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0003 | 
|  | drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0005 | 
|  | lrwxrwxrwx 1 root root    0 Feb 11 15:11 device -> ../../../0000:01:00.0 | 
|  | -r--r--r-- 1 root root 4096 Feb 11 15:11 port_destid | 
|  | drwxr-xr-x 2 root root    0 Feb 11 15:11 power | 
|  | lrwxrwxrwx 1 root root    0 Feb 11 15:04 subsystem -> ../../../../../../class/rapidio_port | 
|  | -r--r--r-- 1 root root 4096 Feb 11 15:11 sys_size | 
|  | -rw-r--r-- 1 root root 4096 Feb 11 15:04 uevent |