diff options
Diffstat (limited to 'drivers/ieee1394/csr1212.h')
-rw-r--r-- | drivers/ieee1394/csr1212.h | 62 |
1 files changed, 29 insertions, 33 deletions
diff --git a/drivers/ieee1394/csr1212.h b/drivers/ieee1394/csr1212.h index f42e12e58ae7..aa9e924fd189 100644 --- a/drivers/ieee1394/csr1212.h +++ b/drivers/ieee1394/csr1212.h | |||
@@ -114,19 +114,17 @@ | |||
114 | 114 | ||
115 | /* Config ROM image structures */ | 115 | /* Config ROM image structures */ |
116 | struct csr1212_bus_info_block_img { | 116 | struct csr1212_bus_info_block_img { |
117 | u_int8_t length; | 117 | u8 length; |
118 | u_int8_t crc_length; | 118 | u8 crc_length; |
119 | u_int16_t crc; | 119 | u16 crc; |
120 | 120 | ||
121 | /* Must be last */ | 121 | /* Must be last */ |
122 | u_int32_t data[0]; /* older gcc can't handle [] which is standard */ | 122 | u32 data[0]; /* older gcc can't handle [] which is standard */ |
123 | }; | 123 | }; |
124 | 124 | ||
125 | typedef u_int32_t csr1212_quad_t; | ||
126 | |||
127 | struct csr1212_leaf { | 125 | struct csr1212_leaf { |
128 | int len; | 126 | int len; |
129 | u_int32_t *data; | 127 | u32 *data; |
130 | }; | 128 | }; |
131 | 129 | ||
132 | struct csr1212_dentry { | 130 | struct csr1212_dentry { |
@@ -141,12 +139,12 @@ struct csr1212_directory { | |||
141 | 139 | ||
142 | struct csr1212_keyval { | 140 | struct csr1212_keyval { |
143 | struct { | 141 | struct { |
144 | u_int8_t type; | 142 | u8 type; |
145 | u_int8_t id; | 143 | u8 id; |
146 | } key; | 144 | } key; |
147 | union { | 145 | union { |
148 | u_int32_t immediate; | 146 | u32 immediate; |
149 | u_int32_t csr_offset; | 147 | u32 csr_offset; |
150 | struct csr1212_leaf leaf; | 148 | struct csr1212_leaf leaf; |
151 | struct csr1212_directory directory; | 149 | struct csr1212_directory directory; |
152 | } value; | 150 | } value; |
@@ -155,15 +153,15 @@ struct csr1212_keyval { | |||
155 | 153 | ||
156 | /* used in generating and/or parsing CSR image */ | 154 | /* used in generating and/or parsing CSR image */ |
157 | struct csr1212_keyval *next, *prev; /* flat list of CSR elements */ | 155 | struct csr1212_keyval *next, *prev; /* flat list of CSR elements */ |
158 | u_int32_t offset; /* position in CSR from 0xffff f000 0000 */ | 156 | u32 offset; /* position in CSR from 0xffff f000 0000 */ |
159 | u_int8_t valid; /* flag indicating keyval has valid data*/ | 157 | u8 valid; /* flag indicating keyval has valid data*/ |
160 | }; | 158 | }; |
161 | 159 | ||
162 | 160 | ||
163 | struct csr1212_cache_region { | 161 | struct csr1212_cache_region { |
164 | struct csr1212_cache_region *next, *prev; | 162 | struct csr1212_cache_region *next, *prev; |
165 | u_int32_t offset_start; /* inclusive */ | 163 | u32 offset_start; /* inclusive */ |
166 | u_int32_t offset_end; /* exclusive */ | 164 | u32 offset_end; /* exclusive */ |
167 | }; | 165 | }; |
168 | 166 | ||
169 | struct csr1212_csr_rom_cache { | 167 | struct csr1212_csr_rom_cache { |
@@ -171,18 +169,18 @@ struct csr1212_csr_rom_cache { | |||
171 | struct csr1212_cache_region *filled_head, *filled_tail; | 169 | struct csr1212_cache_region *filled_head, *filled_tail; |
172 | struct csr1212_keyval *layout_head, *layout_tail; | 170 | struct csr1212_keyval *layout_head, *layout_tail; |
173 | size_t size; | 171 | size_t size; |
174 | u_int32_t offset; | 172 | u32 offset; |
175 | struct csr1212_keyval *ext_rom; | 173 | struct csr1212_keyval *ext_rom; |
176 | size_t len; | 174 | size_t len; |
177 | 175 | ||
178 | /* Must be last */ | 176 | /* Must be last */ |
179 | u_int32_t data[0]; /* older gcc can't handle [] which is standard */ | 177 | u32 data[0]; /* older gcc can't handle [] which is standard */ |
180 | }; | 178 | }; |
181 | 179 | ||
182 | struct csr1212_csr { | 180 | struct csr1212_csr { |
183 | size_t bus_info_len; /* bus info block length in bytes */ | 181 | size_t bus_info_len; /* bus info block length in bytes */ |
184 | size_t crc_len; /* crc length in bytes */ | 182 | size_t crc_len; /* crc length in bytes */ |
185 | u_int32_t *bus_info_data; /* bus info data incl bus name and EUI */ | 183 | u32 *bus_info_data; /* bus info data incl bus name and EUI */ |
186 | 184 | ||
187 | void *private; /* private, bus specific data */ | 185 | void *private; /* private, bus specific data */ |
188 | struct csr1212_bus_ops *ops; | 186 | struct csr1212_bus_ops *ops; |
@@ -200,32 +198,30 @@ struct csr1212_bus_ops { | |||
200 | * from remote nodes when parsing a Config ROM (i.e., read Config ROM | 198 | * from remote nodes when parsing a Config ROM (i.e., read Config ROM |
201 | * entries located in the Units Space. Must return 0 on success | 199 | * entries located in the Units Space. Must return 0 on success |
202 | * anything else indicates an error. */ | 200 | * anything else indicates an error. */ |
203 | int (*bus_read) (struct csr1212_csr *csr, u_int64_t addr, | 201 | int (*bus_read) (struct csr1212_csr *csr, u64 addr, |
204 | u_int16_t length, void *buffer, void *private); | 202 | u16 length, void *buffer, void *private); |
205 | 203 | ||
206 | /* This function is used by csr1212 to allocate a region in units space | 204 | /* This function is used by csr1212 to allocate a region in units space |
207 | * in the event that Config ROM entries don't all fit in the predefined | 205 | * in the event that Config ROM entries don't all fit in the predefined |
208 | * 1K region. The void *private parameter is private member of struct | 206 | * 1K region. The void *private parameter is private member of struct |
209 | * csr1212_csr. */ | 207 | * csr1212_csr. */ |
210 | u_int64_t (*allocate_addr_range) (u_int64_t size, u_int32_t alignment, | 208 | u64 (*allocate_addr_range) (u64 size, u32 alignment, void *private); |
211 | void *private); | ||
212 | |||
213 | 209 | ||
214 | /* This function is used by csr1212 to release a region in units space | 210 | /* This function is used by csr1212 to release a region in units space |
215 | * that is no longer needed. */ | 211 | * that is no longer needed. */ |
216 | void (*release_addr) (u_int64_t addr, void *private); | 212 | void (*release_addr) (u64 addr, void *private); |
217 | 213 | ||
218 | /* This function is used by csr1212 to determine the max read request | 214 | /* This function is used by csr1212 to determine the max read request |
219 | * supported by a remote node when reading the ConfigROM space. Must | 215 | * supported by a remote node when reading the ConfigROM space. Must |
220 | * return 0, 1, or 2 per IEEE 1212. */ | 216 | * return 0, 1, or 2 per IEEE 1212. */ |
221 | int (*get_max_rom) (u_int32_t *bus_info, void *private); | 217 | int (*get_max_rom) (u32 *bus_info, void *private); |
222 | }; | 218 | }; |
223 | 219 | ||
224 | 220 | ||
225 | /* Descriptor Leaf manipulation macros */ | 221 | /* Descriptor Leaf manipulation macros */ |
226 | #define CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT 24 | 222 | #define CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT 24 |
227 | #define CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID_MASK 0xffffff | 223 | #define CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID_MASK 0xffffff |
228 | #define CSR1212_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u_int32_t)) | 224 | #define CSR1212_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u32)) |
229 | 225 | ||
230 | #define CSR1212_DESCRIPTOR_LEAF_TYPE(kv) \ | 226 | #define CSR1212_DESCRIPTOR_LEAF_TYPE(kv) \ |
231 | (be32_to_cpu((kv)->value.leaf.data[0]) >> CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT) | 227 | (be32_to_cpu((kv)->value.leaf.data[0]) >> CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT) |
@@ -240,7 +236,7 @@ struct csr1212_bus_ops { | |||
240 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT 16 | 236 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT 16 |
241 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK 0xfff /* after shift */ | 237 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK 0xfff /* after shift */ |
242 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK 0xffff | 238 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK 0xffff |
243 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u_int32_t)) | 239 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u32)) |
244 | 240 | ||
245 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH(kv) \ | 241 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH(kv) \ |
246 | (be32_to_cpu((kv)->value.leaf.data[1]) >> \ | 242 | (be32_to_cpu((kv)->value.leaf.data[1]) >> \ |
@@ -264,7 +260,7 @@ extern struct csr1212_csr *csr1212_create_csr(struct csr1212_bus_ops *ops, | |||
264 | size_t bus_info_size, | 260 | size_t bus_info_size, |
265 | void *private); | 261 | void *private); |
266 | extern void csr1212_init_local_csr(struct csr1212_csr *csr, | 262 | extern void csr1212_init_local_csr(struct csr1212_csr *csr, |
267 | const u_int32_t *bus_info_data, int max_rom); | 263 | const u32 *bus_info_data, int max_rom); |
268 | 264 | ||
269 | 265 | ||
270 | /* Destroy a Configuration ROM tree and release all memory taken by the tree. */ | 266 | /* Destroy a Configuration ROM tree and release all memory taken by the tree. */ |
@@ -275,8 +271,8 @@ extern void csr1212_destroy_csr(struct csr1212_csr *csr); | |||
275 | * a Configuration ROM tree. Code that creates new keyvals with these functions | 271 | * a Configuration ROM tree. Code that creates new keyvals with these functions |
276 | * must release those keyvals with csr1212_release_keyval() when they are no | 272 | * must release those keyvals with csr1212_release_keyval() when they are no |
277 | * longer needed. */ | 273 | * longer needed. */ |
278 | extern struct csr1212_keyval *csr1212_new_immediate(u_int8_t key, u_int32_t value); | 274 | extern struct csr1212_keyval *csr1212_new_immediate(u8 key, u32 value); |
279 | extern struct csr1212_keyval *csr1212_new_directory(u_int8_t key); | 275 | extern struct csr1212_keyval *csr1212_new_directory(u8 key); |
280 | extern struct csr1212_keyval *csr1212_new_string_descriptor_leaf(const char *s); | 276 | extern struct csr1212_keyval *csr1212_new_string_descriptor_leaf(const char *s); |
281 | 277 | ||
282 | 278 | ||
@@ -306,8 +302,8 @@ extern int csr1212_generate_csr_image(struct csr1212_csr *csr); | |||
306 | 302 | ||
307 | /* This is a convience function for reading a block of data out of one of the | 303 | /* This is a convience function for reading a block of data out of one of the |
308 | * caches in the csr->cache_head list. */ | 304 | * caches in the csr->cache_head list. */ |
309 | extern int csr1212_read(struct csr1212_csr *csr, u_int32_t offset, void *buffer, | 305 | extern int csr1212_read(struct csr1212_csr *csr, u32 offset, void *buffer, |
310 | u_int32_t len); | 306 | u32 len); |
311 | 307 | ||
312 | 308 | ||
313 | /* The following functions are in place for parsing Configuration ROM images. | 309 | /* The following functions are in place for parsing Configuration ROM images. |
@@ -324,7 +320,7 @@ extern void _csr1212_destroy_keyval(struct csr1212_keyval *kv); | |||
324 | 320 | ||
325 | /* This function allocates a new cache which may be used for either parsing or | 321 | /* This function allocates a new cache which may be used for either parsing or |
326 | * generating sub-sets of Configuration ROM images. */ | 322 | * generating sub-sets of Configuration ROM images. */ |
327 | static inline struct csr1212_csr_rom_cache *csr1212_rom_cache_malloc(u_int32_t offset, | 323 | static inline struct csr1212_csr_rom_cache *csr1212_rom_cache_malloc(u32 offset, |
328 | size_t size) | 324 | size_t size) |
329 | { | 325 | { |
330 | struct csr1212_csr_rom_cache *cache; | 326 | struct csr1212_csr_rom_cache *cache; |