diff options
author | Zhang Wei <wei.zhang@freescale.com> | 2008-04-18 16:33:41 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-29 05:40:28 -0400 |
commit | ad1e9380b17addf112f89ce5a57d4d0bee129b7a (patch) | |
tree | 41bb74c91533f0a2f4a7bfbfb1036ba250cbf50b /include/linux | |
parent | 5a7b60ed8892756b137496b629f2e7c689fe6d8d (diff) |
[RAPIDIO] Add RapidIO multi mport support
The original RapidIO driver suppose there is only one mpc85xx RIO controller
in system. So, some data structures are defined as mpc85xx_rio global, such
as 'regs_win', 'dbell_ring', 'msg_tx_ring'. Now, I changed them to mport's
private members. And you can define multi RIO OF-nodes in dts file for multi
RapidIO controller in one processor, such as PCI/PCI-Ex host controllers in
Freescale's silicon. And the mport operation function declaration should be
changed to know which RapidIO controller is target.
Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/rio.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/include/linux/rio.h b/include/linux/rio.h index 68e3f6853fa6..258c453f43f6 100644 --- a/include/linux/rio.h +++ b/include/linux/rio.h | |||
@@ -163,6 +163,7 @@ struct rio_dbell { | |||
163 | * @id: Port ID, unique among all ports | 163 | * @id: Port ID, unique among all ports |
164 | * @index: Port index, unique among all port interfaces of the same type | 164 | * @index: Port index, unique among all port interfaces of the same type |
165 | * @name: Port name string | 165 | * @name: Port name string |
166 | * @priv: Master port private data | ||
166 | */ | 167 | */ |
167 | struct rio_mport { | 168 | struct rio_mport { |
168 | struct list_head dbells; /* list of doorbell events */ | 169 | struct list_head dbells; /* list of doorbell events */ |
@@ -178,6 +179,7 @@ struct rio_mport { | |||
178 | unsigned char index; /* port index, unique among all port | 179 | unsigned char index; /* port index, unique among all port |
179 | interfaces of the same type */ | 180 | interfaces of the same type */ |
180 | unsigned char name[40]; | 181 | unsigned char name[40]; |
182 | void *priv; /* Master port private data */ | ||
181 | }; | 183 | }; |
182 | 184 | ||
183 | /** | 185 | /** |
@@ -229,13 +231,15 @@ struct rio_switch { | |||
229 | * @dsend: Callback to send a doorbell message. | 231 | * @dsend: Callback to send a doorbell message. |
230 | */ | 232 | */ |
231 | struct rio_ops { | 233 | struct rio_ops { |
232 | int (*lcread) (int index, u32 offset, int len, u32 * data); | 234 | int (*lcread) (struct rio_mport *mport, int index, u32 offset, int len, |
233 | int (*lcwrite) (int index, u32 offset, int len, u32 data); | 235 | u32 *data); |
234 | int (*cread) (int index, u16 destid, u8 hopcount, u32 offset, int len, | 236 | int (*lcwrite) (struct rio_mport *mport, int index, u32 offset, int len, |
235 | u32 * data); | 237 | u32 data); |
236 | int (*cwrite) (int index, u16 destid, u8 hopcount, u32 offset, int len, | 238 | int (*cread) (struct rio_mport *mport, int index, u16 destid, |
237 | u32 data); | 239 | u8 hopcount, u32 offset, int len, u32 *data); |
238 | int (*dsend) (int index, u16 destid, u16 data); | 240 | int (*cwrite) (struct rio_mport *mport, int index, u16 destid, |
241 | u8 hopcount, u32 offset, int len, u32 data); | ||
242 | int (*dsend) (struct rio_mport *mport, int index, u16 destid, u16 data); | ||
239 | }; | 243 | }; |
240 | 244 | ||
241 | #define RIO_RESOURCE_MEM 0x00000100 | 245 | #define RIO_RESOURCE_MEM 0x00000100 |