diff options
author | Alexandre Bounine <alexandre.bounine@idt.com> | 2013-05-24 18:55:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-24 19:22:50 -0400 |
commit | 5eeb929390de7d5219483a1ca10cce4a84066099 (patch) | |
tree | a0fff27850d77ac020a48d1ee68a3c249ea2fa36 /Documentation | |
parent | bc8fcfea18249640f2728c46d70999dcb7e4dc49 (diff) |
rapidio: documentation update for enumeration changes
Update RapidIO documentation to reflect changes made to
enumeration/discovery build configuration and user space triggering
mechanism.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
Cc: Matt Porter <mporter@kernel.crashing.org>
Cc: Li Yang <leoli@freescale.com>
Cc: Kumar Gala <galak@kernel.crashing.org>
Cc: Andre van Herk <andre.van.herk@Prodrive.nl>
Cc: Micha Nelissen <micha.nelissen@Prodrive.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/rapidio/rapidio.txt | 128 | ||||
-rw-r--r-- | Documentation/rapidio/sysfs.txt | 17 |
2 files changed, 134 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. | |||
79 | In order to initialize the RapidIO subsystem, a platform must initialize and | 79 | In order to initialize the RapidIO subsystem, a platform must initialize and |
80 | register at least one master port within the RapidIO network. To register mport | 80 | register at least one master port within the RapidIO network. To register mport |
81 | within the subsystem controller driver initialization code calls function | 81 | within the subsystem controller driver initialization code calls function |
82 | rio_register_mport() for each available master port. After all active master | 82 | rio_register_mport() for each available master port. |
83 | ports are registered with a RapidIO subsystem, the rio_init_mports() routine | ||
84 | is called to perform enumeration and discovery. | ||
85 | 83 | ||
86 | In the current PowerPC-based implementation a subsys_initcall() is specified to | 84 | RapidIO subsystem uses subsys_initcall() or device_initcall() to perform |
87 | perform controller initialization and mport registration. At the end it directly | 85 | controller initialization (depending on controller device type). |
88 | calls rio_init_mports() to execute RapidIO enumeration and discovery. | 86 | |
87 | After all active master ports are registered with a RapidIO subsystem, | ||
88 | an enumeration and/or discovery routine may be called automatically or | ||
89 | by user-space command. | ||
89 | 90 | ||
90 | 4. Enumeration and Discovery | 91 | 4. Enumeration and Discovery |
91 | ---------------------------- | 92 | ---------------------------- |
92 | 93 | ||
93 | When rio_init_mports() is called it scans a list of registered master ports and | 94 | 4.1 Overview |
94 | calls an enumeration or discovery routine depending on the configured role of a | 95 | ------------ |
95 | master port: host or agent. | 96 | |
97 | RapidIO subsystem configuration options allow users to specify enumeration and | ||
98 | discovery methods as statically linked components or loadable modules. | ||
99 | An enumeration/discovery method implementation and available input parameters | ||
100 | define how any given method can be attached to available RapidIO mports: | ||
101 | simply to all available mports OR individually to the specified mport device. | ||
102 | |||
103 | Depending on selected enumeration/discovery build configuration, there are | ||
104 | several 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 | |||
137 | When a network scan process is started it calls an enumeration or discovery | ||
138 | routine depending on the configured role of a master port: host or agent. | ||
96 | 139 | ||
97 | Enumeration is performed by a master port if it is configured as a host port by | 140 | Enumeration is performed by a master port if it is configured as a host port by |
98 | assigning a host device ID greater than or equal to zero. A host device ID is | 141 | assigning a host device ID greater than or equal to zero. A host device ID is |
@@ -104,8 +147,58 @@ for it. | |||
104 | The enumeration and discovery routines use RapidIO maintenance transactions | 147 | The enumeration and discovery routines use RapidIO maintenance transactions |
105 | to access the configuration space of devices. | 148 | to access the configuration space of devices. |
106 | 149 | ||
107 | The enumeration process is implemented according to the enumeration algorithm | 150 | 4.2 Automatic Start of Enumeration and Discovery |
108 | outlined in the RapidIO Interconnect Specification: Annex I [1]. | 151 | ------------------------------------------------ |
152 | |||
153 | Automatic enumeration/discovery start method is applicable only to built-in | ||
154 | enumeration/discovery RapidIO configuration selection. To enable automatic | ||
155 | enumeration/discovery start by existing basic enumerator method set use boot | ||
156 | command line parameter "rio-scan.scan=1". | ||
157 | |||
158 | This configuration requires synchronized start of all RapidIO endpoints that | ||
159 | form a network which will be enumerated/discovered. Discovering endpoints have | ||
160 | to be started before an enumeration starts to ensure that all RapidIO | ||
161 | controllers have been initialized and are ready to be discovered. Configuration | ||
162 | parameter CONFIG_RAPIDIO_DISC_TIMEOUT defines time (in seconds) which | ||
163 | a discovering endpoint will wait for enumeration to be completed. | ||
164 | |||
165 | When automatic enumeration/discovery start is selected, basic method's | ||
166 | initialization routine calls rio_init_mports() to perform enumeration or | ||
167 | discovery for all known mport devices. | ||
168 | |||
169 | Depending on RapidIO network size and configuration this automatic | ||
170 | enumeration/discovery start method may be difficult to use due to the | ||
171 | requirement for synchronized start of all endpoints. | ||
172 | |||
173 | 4.3 User-space Start of Enumeration and Discovery | ||
174 | ------------------------------------------------- | ||
175 | |||
176 | User-space start of enumeration and discovery can be used with built-in and | ||
177 | modular build configurations. For user-space controlled start RapidIO subsystem | ||
178 | creates the sysfs write-only attribute file '/sys/bus/rapidio/scan'. To initiate | ||
179 | an enumeration or discovery process on specific mport device, a user needs to | ||
180 | write mport_ID (not RapidIO destination ID) into that file. The mport_ID is a | ||
181 | sequential number (0 ... RIO_MAX_MPORTS) assigned during mport device | ||
182 | registration. For example for machine with single RapidIO controller, mport_ID | ||
183 | for that controller always will be 0. | ||
184 | |||
185 | To initiate RapidIO enumeration/discovery on all available mports a user may | ||
186 | write '-1' (or RIO_MPORT_ANY) into the scan attribute file. | ||
187 | |||
188 | 4.4 Basic Enumeration Method | ||
189 | ---------------------------- | ||
190 | |||
191 | This is an original enumeration/discovery method which is available since | ||
192 | first release of RapidIO subsystem code. The enumeration process is | ||
193 | implemented according to the enumeration algorithm outlined in the RapidIO | ||
194 | Interconnect Specification: Annex I [1]. | ||
195 | |||
196 | This method can be configured as statically linked or loadable module. | ||
197 | The method's single parameter "scan" allows to trigger the enumeration/discovery | ||
198 | process from module initialization routine. | ||
199 | |||
200 | This enumeration/discovery method can be started only once and does not support | ||
201 | unloading if it is built as a module. | ||
109 | 202 | ||
110 | The enumeration process traverses the network using a recursive depth-first | 203 | The enumeration process traverses the network using a recursive depth-first |
111 | algorithm. When a new device is found, the enumerator takes ownership of that | 204 | algorithm. 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, | |||
160 | an agent skips RapidIO discovery and continues with remaining kernel | 253 | an agent skips RapidIO discovery and continues with remaining kernel |
161 | initialization. | 254 | initialization. |
162 | 255 | ||
256 | 4.5 Adding New Enumeration/Discovery Method | ||
257 | ------------------------------------------- | ||
258 | |||
259 | RapidIO subsystem code organization allows addition of new enumeration/discovery | ||
260 | methods as new configuration options without significant impact to to the core | ||
261 | RapidIO code. | ||
262 | |||
263 | A new enumeration/discovery method has to be attached to one or more mport | ||
264 | devices before an enumeration/discovery process can be started. Normally, | ||
265 | method's module initialization routine calls rio_register_scan() to attach | ||
266 | an enumerator to a specified mport device (or devices). The basic enumerator | ||
267 | implementation demonstrates this process. | ||
268 | |||
163 | 5. References | 269 | 5. References |
164 | ------------- | 270 | ------------- |
165 | 271 | ||
diff --git a/Documentation/rapidio/sysfs.txt b/Documentation/rapidio/sysfs.txt index 97f71ce575d6..19878179da4c 100644 --- a/Documentation/rapidio/sysfs.txt +++ b/Documentation/rapidio/sysfs.txt | |||
@@ -88,3 +88,20 @@ that exports additional attributes. | |||
88 | 88 | ||
89 | IDT_GEN2: | 89 | IDT_GEN2: |
90 | errlog - reads contents of device error log until it is empty. | 90 | errlog - reads contents of device error log until it is empty. |
91 | |||
92 | |||
93 | 5. RapidIO Bus Attributes | ||
94 | ------------------------- | ||
95 | |||
96 | RapidIO bus subdirectory /sys/bus/rapidio implements the following bus-specific | ||
97 | attribute: | ||
98 | |||
99 | scan - allows to trigger enumeration discovery process from user space. This | ||
100 | is a write-only attribute. To initiate an enumeration or discovery | ||
101 | process on specific mport device, a user needs to write mport_ID (not | ||
102 | RapidIO destination ID) into this file. The mport_ID is a sequential | ||
103 | number (0 ... RIO_MAX_MPORTS) assigned to the mport device. | ||
104 | For example, for a machine with a single RapidIO controller, mport_ID | ||
105 | for that controller always will be 0. | ||
106 | To initiate RapidIO enumeration/discovery on all available mports | ||
107 | a user must write '-1' (or RIO_MPORT_ANY) into this attribute file. | ||