aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/rapidio/rapidio.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/rapidio/rapidio.txt')
-rw-r--r--Documentation/rapidio/rapidio.txt128
1 files changed, 117 insertions, 11 deletions
diff --git a/Documentation/rapidio/rapidio.txt b/Documentation/rapidio/rapidio.txt
index c75694b35d08..a9c16c979da2 100644
--- a/Documentation/rapidio/rapidio.txt
+++ b/Documentation/rapidio/rapidio.txt
@@ -79,20 +79,63 @@ master port that is used to communicate with devices within the network.
79In order to initialize the RapidIO subsystem, a platform must initialize and 79In order to initialize the RapidIO subsystem, a platform must initialize and
80register at least one master port within the RapidIO network. To register mport 80register at least one master port within the RapidIO network. To register mport
81within the subsystem controller driver initialization code calls function 81within the subsystem controller driver initialization code calls function
82rio_register_mport() for each available master port. After all active master 82rio_register_mport() for each available master port.
83ports are registered with a RapidIO subsystem, the rio_init_mports() routine
84is called to perform enumeration and discovery.
85 83
86In the current PowerPC-based implementation a subsys_initcall() is specified to 84RapidIO subsystem uses subsys_initcall() or device_initcall() to perform
87perform controller initialization and mport registration. At the end it directly 85controller initialization (depending on controller device type).
88calls rio_init_mports() to execute RapidIO enumeration and discovery. 86
87After all active master ports are registered with a RapidIO subsystem,
88an enumeration and/or discovery routine may be called automatically or
89by user-space command.
89 90
904. Enumeration and Discovery 914. Enumeration and Discovery
91---------------------------- 92----------------------------
92 93
93When rio_init_mports() is called it scans a list of registered master ports and 944.1 Overview
94calls an enumeration or discovery routine depending on the configured role of a 95------------
95master port: host or agent. 96
97RapidIO subsystem configuration options allow users to specify enumeration and
98discovery methods as statically linked components or loadable modules.
99An enumeration/discovery method implementation and available input parameters
100define how any given method can be attached to available RapidIO mports:
101simply to all available mports OR individually to the specified mport device.
102
103Depending on selected enumeration/discovery build configuration, there are
104several methods to initiate an enumeration and/or discovery process:
105
106 (a) Statically linked enumeration and discovery process can be started
107 automatically during kernel initialization time using corresponding module
108 parameters. This was the original method used since introduction of RapidIO
109 subsystem. Now this method relies on enumerator module parameter which is
110 'rio-scan.scan' for existing basic enumeration/discovery method.
111 When automatic start of enumeration/discovery is used a user has to ensure
112 that all discovering endpoints are started before the enumerating endpoint
113 and are waiting for enumeration to be completed.
114 Configuration option CONFIG_RAPIDIO_DISC_TIMEOUT defines time that discovering
115 endpoint waits for enumeration to be completed. If the specified timeout
116 expires the discovery process is terminated without obtaining RapidIO network
117 information. NOTE: a timed out discovery process may be restarted later using
118 a user-space command as it is described later if the given endpoint was
119 enumerated successfully.
120
121 (b) Statically linked enumeration and discovery process can be started by
122 a command from user space. This initiation method provides more flexibility
123 for a system startup compared to the option (a) above. After all participating
124 endpoints have been successfully booted, an enumeration process shall be
125 started first by issuing a user-space command, after an enumeration is
126 completed a discovery process can be started on all remaining endpoints.
127
128 (c) Modular enumeration and discovery process can be started by a command from
129 user space. After an enumeration/discovery module is loaded, a network scan
130 process can be started by issuing a user-space command.
131 Similar to the option (b) above, an enumerator has to be started first.
132
133 (d) Modular enumeration and discovery process can be started by a module
134 initialization routine. In this case an enumerating module shall be loaded
135 first.
136
137When a network scan process is started it calls an enumeration or discovery
138routine depending on the configured role of a master port: host or agent.
96 139
97Enumeration is performed by a master port if it is configured as a host port by 140Enumeration is performed by a master port if it is configured as a host port by
98assigning a host device ID greater than or equal to zero. A host device ID is 141assigning a host device ID greater than or equal to zero. A host device ID is
@@ -104,8 +147,58 @@ for it.
104The enumeration and discovery routines use RapidIO maintenance transactions 147The enumeration and discovery routines use RapidIO maintenance transactions
105to access the configuration space of devices. 148to access the configuration space of devices.
106 149
107The enumeration process is implemented according to the enumeration algorithm 1504.2 Automatic Start of Enumeration and Discovery
108outlined in the RapidIO Interconnect Specification: Annex I [1]. 151------------------------------------------------
152
153Automatic enumeration/discovery start method is applicable only to built-in
154enumeration/discovery RapidIO configuration selection. To enable automatic
155enumeration/discovery start by existing basic enumerator method set use boot
156command line parameter "rio-scan.scan=1".
157
158This configuration requires synchronized start of all RapidIO endpoints that
159form a network which will be enumerated/discovered. Discovering endpoints have
160to be started before an enumeration starts to ensure that all RapidIO
161controllers have been initialized and are ready to be discovered. Configuration
162parameter CONFIG_RAPIDIO_DISC_TIMEOUT defines time (in seconds) which
163a discovering endpoint will wait for enumeration to be completed.
164
165When automatic enumeration/discovery start is selected, basic method's
166initialization routine calls rio_init_mports() to perform enumeration or
167discovery for all known mport devices.
168
169Depending on RapidIO network size and configuration this automatic
170enumeration/discovery start method may be difficult to use due to the
171requirement for synchronized start of all endpoints.
172
1734.3 User-space Start of Enumeration and Discovery
174-------------------------------------------------
175
176User-space start of enumeration and discovery can be used with built-in and
177modular build configurations. For user-space controlled start RapidIO subsystem
178creates the sysfs write-only attribute file '/sys/bus/rapidio/scan'. To initiate
179an enumeration or discovery process on specific mport device, a user needs to
180write mport_ID (not RapidIO destination ID) into that file. The mport_ID is a
181sequential number (0 ... RIO_MAX_MPORTS) assigned during mport device
182registration. For example for machine with single RapidIO controller, mport_ID
183for that controller always will be 0.
184
185To initiate RapidIO enumeration/discovery on all available mports a user may
186write '-1' (or RIO_MPORT_ANY) into the scan attribute file.
187
1884.4 Basic Enumeration Method
189----------------------------
190
191This is an original enumeration/discovery method which is available since
192first release of RapidIO subsystem code. The enumeration process is
193implemented according to the enumeration algorithm outlined in the RapidIO
194Interconnect Specification: Annex I [1].
195
196This method can be configured as statically linked or loadable module.
197The method's single parameter "scan" allows to trigger the enumeration/discovery
198process from module initialization routine.
199
200This enumeration/discovery method can be started only once and does not support
201unloading if it is built as a module.
109 202
110The enumeration process traverses the network using a recursive depth-first 203The enumeration process traverses the network using a recursive depth-first
111algorithm. When a new device is found, the enumerator takes ownership of that 204algorithm. When a new device is found, the enumerator takes ownership of that
@@ -160,6 +253,19 @@ time period. If this wait time period expires before enumeration is completed,
160an agent skips RapidIO discovery and continues with remaining kernel 253an agent skips RapidIO discovery and continues with remaining kernel
161initialization. 254initialization.
162 255
2564.5 Adding New Enumeration/Discovery Method
257-------------------------------------------
258
259RapidIO subsystem code organization allows addition of new enumeration/discovery
260methods as new configuration options without significant impact to to the core
261RapidIO code.
262
263A new enumeration/discovery method has to be attached to one or more mport
264devices before an enumeration/discovery process can be started. Normally,
265method's module initialization routine calls rio_register_scan() to attach
266an enumerator to a specified mport device (or devices). The basic enumerator
267implementation demonstrates this process.
268
1635. References 2695. References
164------------- 270-------------
165 271