diff options
Diffstat (limited to 'drivers/ieee1394')
-rw-r--r-- | drivers/ieee1394/csr1212.c | 159 | ||||
-rw-r--r-- | drivers/ieee1394/csr1212.h | 90 | ||||
-rw-r--r-- | drivers/ieee1394/ieee1394_transactions.c | 1 | ||||
-rw-r--r-- | drivers/ieee1394/nodemgr.c | 2 |
4 files changed, 84 insertions, 168 deletions
diff --git a/drivers/ieee1394/csr1212.c b/drivers/ieee1394/csr1212.c index ff5a01ecfcaa..f5867236255b 100644 --- a/drivers/ieee1394/csr1212.c +++ b/drivers/ieee1394/csr1212.c | |||
@@ -33,9 +33,9 @@ | |||
33 | * parameter expect size to be in bytes. | 33 | * parameter expect size to be in bytes. |
34 | */ | 34 | */ |
35 | 35 | ||
36 | #ifndef __KERNEL__ | 36 | #include <linux/errno.h> |
37 | #include <string.h> | 37 | #include <linux/string.h> |
38 | #endif | 38 | #include <asm/byteorder.h> |
39 | 39 | ||
40 | #include "csr1212.h" | 40 | #include "csr1212.h" |
41 | 41 | ||
@@ -100,7 +100,7 @@ static u_int16_t csr1212_crc16(const u_int32_t *buffer, size_t length) | |||
100 | u_int16_t sum, crc = 0; | 100 | u_int16_t sum, crc = 0; |
101 | 101 | ||
102 | for (; length; length--) { | 102 | for (; length; length--) { |
103 | data = CSR1212_BE32_TO_CPU(*buffer); | 103 | data = be32_to_cpu(*buffer); |
104 | buffer++; | 104 | buffer++; |
105 | for (shift = 28; shift >= 0; shift -= 4 ) { | 105 | for (shift = 28; shift >= 0; shift -= 4 ) { |
106 | sum = ((crc >> 12) ^ (data >> shift)) & 0xf; | 106 | sum = ((crc >> 12) ^ (data >> shift)) & 0xf; |
@@ -109,7 +109,7 @@ static u_int16_t csr1212_crc16(const u_int32_t *buffer, size_t length) | |||
109 | crc &= 0xffff; | 109 | crc &= 0xffff; |
110 | } | 110 | } |
111 | 111 | ||
112 | return CSR1212_CPU_TO_BE16(crc); | 112 | return cpu_to_be16(crc); |
113 | } | 113 | } |
114 | 114 | ||
115 | #if 0 | 115 | #if 0 |
@@ -123,7 +123,7 @@ static u_int16_t csr1212_msft_crc16(const u_int32_t *buffer, size_t length) | |||
123 | u_int16_t sum, crc = 0; | 123 | u_int16_t sum, crc = 0; |
124 | 124 | ||
125 | for (; length; length--) { | 125 | for (; length; length--) { |
126 | data = CSR1212_LE32_TO_CPU(*buffer); | 126 | data = le32_to_cpu(*buffer); |
127 | buffer++; | 127 | buffer++; |
128 | for (shift = 28; shift >= 0; shift -= 4 ) { | 128 | for (shift = 28; shift >= 0; shift -= 4 ) { |
129 | sum = ((crc >> 12) ^ (data >> shift)) & 0xf; | 129 | sum = ((crc >> 12) ^ (data >> shift)) & 0xf; |
@@ -132,7 +132,7 @@ static u_int16_t csr1212_msft_crc16(const u_int32_t *buffer, size_t length) | |||
132 | crc &= 0xffff; | 132 | crc &= 0xffff; |
133 | } | 133 | } |
134 | 134 | ||
135 | return CSR1212_CPU_TO_BE16(crc); | 135 | return cpu_to_be16(crc); |
136 | } | 136 | } |
137 | #endif | 137 | #endif |
138 | 138 | ||
@@ -206,15 +206,8 @@ void csr1212_init_local_csr(struct csr1212_csr *csr, | |||
206 | { | 206 | { |
207 | static const int mr_map[] = { 4, 64, 1024, 0 }; | 207 | static const int mr_map[] = { 4, 64, 1024, 0 }; |
208 | 208 | ||
209 | #ifdef __KERNEL__ | ||
210 | BUG_ON(max_rom & ~0x3); | 209 | BUG_ON(max_rom & ~0x3); |
211 | csr->max_rom = mr_map[max_rom]; | 210 | csr->max_rom = mr_map[max_rom]; |
212 | #else | ||
213 | if (max_rom & ~0x3) /* caller supplied invalid argument */ | ||
214 | csr->max_rom = 0; | ||
215 | else | ||
216 | csr->max_rom = mr_map[max_rom]; | ||
217 | #endif | ||
218 | memcpy(csr->bus_info_data, bus_info_data, csr->bus_info_len); | 211 | memcpy(csr->bus_info_data, bus_info_data, csr->bus_info_len); |
219 | } | 212 | } |
220 | 213 | ||
@@ -316,7 +309,7 @@ int csr1212_associate_keyval(struct csr1212_keyval *kv, | |||
316 | struct csr1212_keyval *associate) | 309 | struct csr1212_keyval *associate) |
317 | { | 310 | { |
318 | if (!kv || !associate) | 311 | if (!kv || !associate) |
319 | return CSR1212_EINVAL; | 312 | return -EINVAL; |
320 | 313 | ||
321 | if (kv->key.id == CSR1212_KV_ID_DESCRIPTOR || | 314 | if (kv->key.id == CSR1212_KV_ID_DESCRIPTOR || |
322 | (associate->key.id != CSR1212_KV_ID_DESCRIPTOR && | 315 | (associate->key.id != CSR1212_KV_ID_DESCRIPTOR && |
@@ -324,23 +317,23 @@ int csr1212_associate_keyval(struct csr1212_keyval *kv, | |||
324 | associate->key.id != CSR1212_KV_ID_EXTENDED_KEY && | 317 | associate->key.id != CSR1212_KV_ID_EXTENDED_KEY && |
325 | associate->key.id != CSR1212_KV_ID_EXTENDED_DATA && | 318 | associate->key.id != CSR1212_KV_ID_EXTENDED_DATA && |
326 | associate->key.id < 0x30)) | 319 | associate->key.id < 0x30)) |
327 | return CSR1212_EINVAL; | 320 | return -EINVAL; |
328 | 321 | ||
329 | if (kv->key.id == CSR1212_KV_ID_EXTENDED_KEY_SPECIFIER_ID && | 322 | if (kv->key.id == CSR1212_KV_ID_EXTENDED_KEY_SPECIFIER_ID && |
330 | associate->key.id != CSR1212_KV_ID_EXTENDED_KEY) | 323 | associate->key.id != CSR1212_KV_ID_EXTENDED_KEY) |
331 | return CSR1212_EINVAL; | 324 | return -EINVAL; |
332 | 325 | ||
333 | if (kv->key.id == CSR1212_KV_ID_EXTENDED_KEY && | 326 | if (kv->key.id == CSR1212_KV_ID_EXTENDED_KEY && |
334 | associate->key.id != CSR1212_KV_ID_EXTENDED_DATA) | 327 | associate->key.id != CSR1212_KV_ID_EXTENDED_DATA) |
335 | return CSR1212_EINVAL; | 328 | return -EINVAL; |
336 | 329 | ||
337 | if (associate->key.id == CSR1212_KV_ID_EXTENDED_KEY && | 330 | if (associate->key.id == CSR1212_KV_ID_EXTENDED_KEY && |
338 | kv->key.id != CSR1212_KV_ID_EXTENDED_KEY_SPECIFIER_ID) | 331 | kv->key.id != CSR1212_KV_ID_EXTENDED_KEY_SPECIFIER_ID) |
339 | return CSR1212_EINVAL; | 332 | return -EINVAL; |
340 | 333 | ||
341 | if (associate->key.id == CSR1212_KV_ID_EXTENDED_DATA && | 334 | if (associate->key.id == CSR1212_KV_ID_EXTENDED_DATA && |
342 | kv->key.id != CSR1212_KV_ID_EXTENDED_KEY) | 335 | kv->key.id != CSR1212_KV_ID_EXTENDED_KEY) |
343 | return CSR1212_EINVAL; | 336 | return -EINVAL; |
344 | 337 | ||
345 | if (kv->associate) | 338 | if (kv->associate) |
346 | csr1212_release_keyval(kv->associate); | 339 | csr1212_release_keyval(kv->associate); |
@@ -357,11 +350,11 @@ int csr1212_attach_keyval_to_directory(struct csr1212_keyval *dir, | |||
357 | struct csr1212_dentry *dentry; | 350 | struct csr1212_dentry *dentry; |
358 | 351 | ||
359 | if (!kv || !dir || dir->key.type != CSR1212_KV_TYPE_DIRECTORY) | 352 | if (!kv || !dir || dir->key.type != CSR1212_KV_TYPE_DIRECTORY) |
360 | return CSR1212_EINVAL; | 353 | return -EINVAL; |
361 | 354 | ||
362 | dentry = CSR1212_MALLOC(sizeof(*dentry)); | 355 | dentry = CSR1212_MALLOC(sizeof(*dentry)); |
363 | if (!dentry) | 356 | if (!dentry) |
364 | return CSR1212_ENOMEM; | 357 | return -ENOMEM; |
365 | 358 | ||
366 | dentry->kv = kv; | 359 | dentry->kv = kv; |
367 | 360 | ||
@@ -385,13 +378,13 @@ int csr1212_attach_keyval_to_directory(struct csr1212_keyval *dir, | |||
385 | 378 | ||
386 | #define CSR1212_DESCRIPTOR_LEAF_SET_TYPE(kv, type) \ | 379 | #define CSR1212_DESCRIPTOR_LEAF_SET_TYPE(kv, type) \ |
387 | ((kv)->value.leaf.data[0] = \ | 380 | ((kv)->value.leaf.data[0] = \ |
388 | CSR1212_CPU_TO_BE32(CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID(kv) | \ | 381 | cpu_to_be32(CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID(kv) | \ |
389 | ((type) << CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT))) | 382 | ((type) << CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT))) |
390 | #define CSR1212_DESCRIPTOR_LEAF_SET_SPECIFIER_ID(kv, spec_id) \ | 383 | #define CSR1212_DESCRIPTOR_LEAF_SET_SPECIFIER_ID(kv, spec_id) \ |
391 | ((kv)->value.leaf.data[0] = \ | 384 | ((kv)->value.leaf.data[0] = \ |
392 | CSR1212_CPU_TO_BE32((CSR1212_DESCRIPTOR_LEAF_TYPE(kv) << \ | 385 | cpu_to_be32((CSR1212_DESCRIPTOR_LEAF_TYPE(kv) << \ |
393 | CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT) | \ | 386 | CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT) | \ |
394 | ((spec_id) & CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID_MASK))) | 387 | ((spec_id) & CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID_MASK))) |
395 | 388 | ||
396 | static struct csr1212_keyval * | 389 | static struct csr1212_keyval * |
397 | csr1212_new_descriptor_leaf(u_int8_t dtype, u_int32_t specifier_id, | 390 | csr1212_new_descriptor_leaf(u_int8_t dtype, u_int32_t specifier_id, |
@@ -417,27 +410,26 @@ csr1212_new_descriptor_leaf(u_int8_t dtype, u_int32_t specifier_id, | |||
417 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_SET_WIDTH(kv, width) \ | 410 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_SET_WIDTH(kv, width) \ |
418 | ((kv)->value.leaf.data[1] = \ | 411 | ((kv)->value.leaf.data[1] = \ |
419 | ((kv)->value.leaf.data[1] & \ | 412 | ((kv)->value.leaf.data[1] & \ |
420 | CSR1212_CPU_TO_BE32(~(CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_MASK << \ | 413 | cpu_to_be32(~(CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_MASK << \ |
421 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_SHIFT))) | \ | 414 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_SHIFT))) | \ |
422 | CSR1212_CPU_TO_BE32(((width) & \ | 415 | cpu_to_be32(((width) & CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_MASK) << \ |
423 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_MASK) << \ | 416 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_SHIFT)) |
424 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_SHIFT)) | ||
425 | 417 | ||
426 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_SET_CHAR_SET(kv, char_set) \ | 418 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_SET_CHAR_SET(kv, char_set) \ |
427 | ((kv)->value.leaf.data[1] = \ | 419 | ((kv)->value.leaf.data[1] = \ |
428 | ((kv)->value.leaf.data[1] & \ | 420 | ((kv)->value.leaf.data[1] & \ |
429 | CSR1212_CPU_TO_BE32(~(CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK << \ | 421 | cpu_to_be32(~(CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK << \ |
430 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT))) | \ | 422 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT))) | \ |
431 | CSR1212_CPU_TO_BE32(((char_set) & \ | 423 | cpu_to_be32(((char_set) & \ |
432 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK) << \ | 424 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK) << \ |
433 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT)) | 425 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT)) |
434 | 426 | ||
435 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_SET_LANGUAGE(kv, language) \ | 427 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_SET_LANGUAGE(kv, language) \ |
436 | ((kv)->value.leaf.data[1] = \ | 428 | ((kv)->value.leaf.data[1] = \ |
437 | ((kv)->value.leaf.data[1] & \ | 429 | ((kv)->value.leaf.data[1] & \ |
438 | CSR1212_CPU_TO_BE32(~(CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK))) | \ | 430 | cpu_to_be32(~(CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK))) | \ |
439 | CSR1212_CPU_TO_BE32(((language) & \ | 431 | cpu_to_be32(((language) & \ |
440 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK))) | 432 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK))) |
441 | 433 | ||
442 | static struct csr1212_keyval * | 434 | static struct csr1212_keyval * |
443 | csr1212_new_textual_descriptor_leaf(u_int8_t cwidth, u_int16_t cset, | 435 | csr1212_new_textual_descriptor_leaf(u_int8_t cwidth, u_int16_t cset, |
@@ -622,39 +614,39 @@ static int csr1212_append_new_cache(struct csr1212_csr *csr, size_t romsize) | |||
622 | 614 | ||
623 | if (!csr || !csr->ops || !csr->ops->allocate_addr_range || | 615 | if (!csr || !csr->ops || !csr->ops->allocate_addr_range || |
624 | !csr->ops->release_addr || csr->max_rom < 1) | 616 | !csr->ops->release_addr || csr->max_rom < 1) |
625 | return CSR1212_EINVAL; | 617 | return -EINVAL; |
626 | 618 | ||
627 | /* ROM size must be a multiple of csr->max_rom */ | 619 | /* ROM size must be a multiple of csr->max_rom */ |
628 | romsize = (romsize + (csr->max_rom - 1)) & ~(csr->max_rom - 1); | 620 | romsize = (romsize + (csr->max_rom - 1)) & ~(csr->max_rom - 1); |
629 | 621 | ||
630 | csr_addr = csr->ops->allocate_addr_range(romsize, csr->max_rom, csr->private); | 622 | csr_addr = csr->ops->allocate_addr_range(romsize, csr->max_rom, csr->private); |
631 | if (csr_addr == CSR1212_INVALID_ADDR_SPACE) { | 623 | if (csr_addr == CSR1212_INVALID_ADDR_SPACE) { |
632 | return CSR1212_ENOMEM; | 624 | return -ENOMEM; |
633 | } | 625 | } |
634 | if (csr_addr < CSR1212_REGISTER_SPACE_BASE) { | 626 | if (csr_addr < CSR1212_REGISTER_SPACE_BASE) { |
635 | /* Invalid address returned from allocate_addr_range(). */ | 627 | /* Invalid address returned from allocate_addr_range(). */ |
636 | csr->ops->release_addr(csr_addr, csr->private); | 628 | csr->ops->release_addr(csr_addr, csr->private); |
637 | return CSR1212_ENOMEM; | 629 | return -ENOMEM; |
638 | } | 630 | } |
639 | 631 | ||
640 | cache = csr1212_rom_cache_malloc(csr_addr - CSR1212_REGISTER_SPACE_BASE, romsize); | 632 | cache = csr1212_rom_cache_malloc(csr_addr - CSR1212_REGISTER_SPACE_BASE, romsize); |
641 | if (!cache) { | 633 | if (!cache) { |
642 | csr->ops->release_addr(csr_addr, csr->private); | 634 | csr->ops->release_addr(csr_addr, csr->private); |
643 | return CSR1212_ENOMEM; | 635 | return -ENOMEM; |
644 | } | 636 | } |
645 | 637 | ||
646 | cache->ext_rom = csr1212_new_keyval(CSR1212_KV_TYPE_LEAF, CSR1212_KV_ID_EXTENDED_ROM); | 638 | cache->ext_rom = csr1212_new_keyval(CSR1212_KV_TYPE_LEAF, CSR1212_KV_ID_EXTENDED_ROM); |
647 | if (!cache->ext_rom) { | 639 | if (!cache->ext_rom) { |
648 | csr->ops->release_addr(csr_addr, csr->private); | 640 | csr->ops->release_addr(csr_addr, csr->private); |
649 | CSR1212_FREE(cache); | 641 | CSR1212_FREE(cache); |
650 | return CSR1212_ENOMEM; | 642 | return -ENOMEM; |
651 | } | 643 | } |
652 | 644 | ||
653 | if (csr1212_attach_keyval_to_directory(csr->root_kv, cache->ext_rom) != CSR1212_SUCCESS) { | 645 | if (csr1212_attach_keyval_to_directory(csr->root_kv, cache->ext_rom) != CSR1212_SUCCESS) { |
654 | csr1212_release_keyval(cache->ext_rom); | 646 | csr1212_release_keyval(cache->ext_rom); |
655 | csr->ops->release_addr(csr_addr, csr->private); | 647 | csr->ops->release_addr(csr_addr, csr->private); |
656 | CSR1212_FREE(cache); | 648 | CSR1212_FREE(cache); |
657 | return CSR1212_ENOMEM; | 649 | return -ENOMEM; |
658 | } | 650 | } |
659 | cache->ext_rom->offset = csr_addr - CSR1212_REGISTER_SPACE_BASE; | 651 | cache->ext_rom->offset = csr_addr - CSR1212_REGISTER_SPACE_BASE; |
660 | cache->ext_rom->value.leaf.len = -1; | 652 | cache->ext_rom->value.leaf.len = -1; |
@@ -890,7 +882,7 @@ csr1212_generate_tree_subdir(struct csr1212_keyval *dir, u_int32_t *data_buffer) | |||
890 | value |= (a->key.id & CSR1212_KV_KEY_ID_MASK) << CSR1212_KV_KEY_SHIFT; | 882 | value |= (a->key.id & CSR1212_KV_KEY_ID_MASK) << CSR1212_KV_KEY_SHIFT; |
891 | value |= (a->key.type & CSR1212_KV_KEY_TYPE_MASK) << | 883 | value |= (a->key.type & CSR1212_KV_KEY_TYPE_MASK) << |
892 | (CSR1212_KV_KEY_SHIFT + CSR1212_KV_KEY_TYPE_SHIFT); | 884 | (CSR1212_KV_KEY_SHIFT + CSR1212_KV_KEY_TYPE_SHIFT); |
893 | data_buffer[index] = CSR1212_CPU_TO_BE32(value); | 885 | data_buffer[index] = cpu_to_be32(value); |
894 | index++; | 886 | index++; |
895 | } | 887 | } |
896 | } | 888 | } |
@@ -926,14 +918,14 @@ static void csr1212_fill_cache(struct csr1212_csr_rom_cache *cache) | |||
926 | memcpy(kvi->data, kv->value.leaf.data, | 918 | memcpy(kvi->data, kv->value.leaf.data, |
927 | quads_to_bytes(kv->value.leaf.len)); | 919 | quads_to_bytes(kv->value.leaf.len)); |
928 | 920 | ||
929 | kvi->length = CSR1212_CPU_TO_BE16(kv->value.leaf.len); | 921 | kvi->length = cpu_to_be16(kv->value.leaf.len); |
930 | kvi->crc = csr1212_crc16(kvi->data, kv->value.leaf.len); | 922 | kvi->crc = csr1212_crc16(kvi->data, kv->value.leaf.len); |
931 | break; | 923 | break; |
932 | 924 | ||
933 | case CSR1212_KV_TYPE_DIRECTORY: | 925 | case CSR1212_KV_TYPE_DIRECTORY: |
934 | csr1212_generate_tree_subdir(kv, kvi->data); | 926 | csr1212_generate_tree_subdir(kv, kvi->data); |
935 | 927 | ||
936 | kvi->length = CSR1212_CPU_TO_BE16(kv->value.directory.len); | 928 | kvi->length = cpu_to_be16(kv->value.directory.len); |
937 | kvi->crc = csr1212_crc16(kvi->data, kv->value.directory.len); | 929 | kvi->crc = csr1212_crc16(kvi->data, kv->value.directory.len); |
938 | break; | 930 | break; |
939 | } | 931 | } |
@@ -960,7 +952,7 @@ int csr1212_generate_csr_image(struct csr1212_csr *csr) | |||
960 | int init_offset; | 952 | int init_offset; |
961 | 953 | ||
962 | if (!csr) | 954 | if (!csr) |
963 | return CSR1212_EINVAL; | 955 | return -EINVAL; |
964 | 956 | ||
965 | cache = csr->cache_head; | 957 | cache = csr->cache_head; |
966 | 958 | ||
@@ -1021,7 +1013,7 @@ int csr1212_generate_csr_image(struct csr1212_csr *csr) | |||
1021 | /* Make sure the Extended ROM leaf is a multiple of | 1013 | /* Make sure the Extended ROM leaf is a multiple of |
1022 | * max_rom in size. */ | 1014 | * max_rom in size. */ |
1023 | if (csr->max_rom < 1) | 1015 | if (csr->max_rom < 1) |
1024 | return CSR1212_EINVAL; | 1016 | return -EINVAL; |
1025 | leaf_size = (cache->len + (csr->max_rom - 1)) & | 1017 | leaf_size = (cache->len + (csr->max_rom - 1)) & |
1026 | ~(csr->max_rom - 1); | 1018 | ~(csr->max_rom - 1); |
1027 | 1019 | ||
@@ -1048,11 +1040,10 @@ int csr1212_generate_csr_image(struct csr1212_csr *csr) | |||
1048 | /* Set the length and CRC of the extended ROM. */ | 1040 | /* Set the length and CRC of the extended ROM. */ |
1049 | struct csr1212_keyval_img *kvi = | 1041 | struct csr1212_keyval_img *kvi = |
1050 | (struct csr1212_keyval_img*)cache->data; | 1042 | (struct csr1212_keyval_img*)cache->data; |
1043 | u_int16_t len = bytes_to_quads(cache->len) - 1; | ||
1051 | 1044 | ||
1052 | kvi->length = CSR1212_CPU_TO_BE16(bytes_to_quads(cache->len) - 1); | 1045 | kvi->length = cpu_to_be16(len); |
1053 | kvi->crc = csr1212_crc16(kvi->data, | 1046 | kvi->crc = csr1212_crc16(kvi->data, len); |
1054 | bytes_to_quads(cache->len) - 1); | ||
1055 | |||
1056 | } | 1047 | } |
1057 | } | 1048 | } |
1058 | 1049 | ||
@@ -1072,7 +1063,7 @@ int csr1212_read(struct csr1212_csr *csr, u_int32_t offset, void *buffer, u_int3 | |||
1072 | return CSR1212_SUCCESS; | 1063 | return CSR1212_SUCCESS; |
1073 | } | 1064 | } |
1074 | } | 1065 | } |
1075 | return CSR1212_ENOENT; | 1066 | return -ENOENT; |
1076 | } | 1067 | } |
1077 | 1068 | ||
1078 | 1069 | ||
@@ -1100,9 +1091,9 @@ static int csr1212_parse_bus_info_block(struct csr1212_csr *csr) | |||
1100 | 1091 | ||
1101 | /* check ROM header's info_length */ | 1092 | /* check ROM header's info_length */ |
1102 | if (i == 0 && | 1093 | if (i == 0 && |
1103 | CSR1212_BE32_TO_CPU(csr->cache_head->data[0]) >> 24 != | 1094 | be32_to_cpu(csr->cache_head->data[0]) >> 24 != |
1104 | bytes_to_quads(csr->bus_info_len) - 1) | 1095 | bytes_to_quads(csr->bus_info_len) - 1) |
1105 | return CSR1212_EINVAL; | 1096 | return -EINVAL; |
1106 | } | 1097 | } |
1107 | 1098 | ||
1108 | bi = (struct csr1212_bus_info_block_img*)csr->cache_head->data; | 1099 | bi = (struct csr1212_bus_info_block_img*)csr->cache_head->data; |
@@ -1124,12 +1115,12 @@ static int csr1212_parse_bus_info_block(struct csr1212_csr *csr) | |||
1124 | * CRC algorithm that verifying them is moot. */ | 1115 | * CRC algorithm that verifying them is moot. */ |
1125 | if ((csr1212_crc16(bi->data, bi->crc_length) != bi->crc) && | 1116 | if ((csr1212_crc16(bi->data, bi->crc_length) != bi->crc) && |
1126 | (csr1212_msft_crc16(bi->data, bi->crc_length) != bi->crc)) | 1117 | (csr1212_msft_crc16(bi->data, bi->crc_length) != bi->crc)) |
1127 | return CSR1212_EINVAL; | 1118 | return -EINVAL; |
1128 | #endif | 1119 | #endif |
1129 | 1120 | ||
1130 | cr = CSR1212_MALLOC(sizeof(*cr)); | 1121 | cr = CSR1212_MALLOC(sizeof(*cr)); |
1131 | if (!cr) | 1122 | if (!cr) |
1132 | return CSR1212_ENOMEM; | 1123 | return -ENOMEM; |
1133 | 1124 | ||
1134 | cr->next = NULL; | 1125 | cr->next = NULL; |
1135 | cr->prev = NULL; | 1126 | cr->prev = NULL; |
@@ -1142,11 +1133,11 @@ static int csr1212_parse_bus_info_block(struct csr1212_csr *csr) | |||
1142 | return CSR1212_SUCCESS; | 1133 | return CSR1212_SUCCESS; |
1143 | } | 1134 | } |
1144 | 1135 | ||
1145 | #define CSR1212_KV_KEY(q) (CSR1212_BE32_TO_CPU(q) >> CSR1212_KV_KEY_SHIFT) | 1136 | #define CSR1212_KV_KEY(q) (be32_to_cpu(q) >> CSR1212_KV_KEY_SHIFT) |
1146 | #define CSR1212_KV_KEY_TYPE(q) (CSR1212_KV_KEY(q) >> CSR1212_KV_KEY_TYPE_SHIFT) | 1137 | #define CSR1212_KV_KEY_TYPE(q) (CSR1212_KV_KEY(q) >> CSR1212_KV_KEY_TYPE_SHIFT) |
1147 | #define CSR1212_KV_KEY_ID(q) (CSR1212_KV_KEY(q) & CSR1212_KV_KEY_ID_MASK) | 1138 | #define CSR1212_KV_KEY_ID(q) (CSR1212_KV_KEY(q) & CSR1212_KV_KEY_ID_MASK) |
1148 | #define CSR1212_KV_VAL_MASK 0xffffff | 1139 | #define CSR1212_KV_VAL_MASK 0xffffff |
1149 | #define CSR1212_KV_VAL(q) (CSR1212_BE32_TO_CPU(q) & CSR1212_KV_VAL_MASK) | 1140 | #define CSR1212_KV_VAL(q) (be32_to_cpu(q) & CSR1212_KV_VAL_MASK) |
1150 | 1141 | ||
1151 | static int csr1212_parse_dir_entry(struct csr1212_keyval *dir, | 1142 | static int csr1212_parse_dir_entry(struct csr1212_keyval *dir, |
1152 | csr1212_quad_t ki, | 1143 | csr1212_quad_t ki, |
@@ -1161,7 +1152,7 @@ static int csr1212_parse_dir_entry(struct csr1212_keyval *dir, | |||
1161 | k = csr1212_new_immediate(CSR1212_KV_KEY_ID(ki), | 1152 | k = csr1212_new_immediate(CSR1212_KV_KEY_ID(ki), |
1162 | CSR1212_KV_VAL(ki)); | 1153 | CSR1212_KV_VAL(ki)); |
1163 | if (!k) { | 1154 | if (!k) { |
1164 | ret = CSR1212_ENOMEM; | 1155 | ret = -ENOMEM; |
1165 | goto fail; | 1156 | goto fail; |
1166 | } | 1157 | } |
1167 | 1158 | ||
@@ -1172,7 +1163,7 @@ static int csr1212_parse_dir_entry(struct csr1212_keyval *dir, | |||
1172 | k = csr1212_new_csr_offset(CSR1212_KV_KEY_ID(ki), | 1163 | k = csr1212_new_csr_offset(CSR1212_KV_KEY_ID(ki), |
1173 | CSR1212_KV_VAL(ki)); | 1164 | CSR1212_KV_VAL(ki)); |
1174 | if (!k) { | 1165 | if (!k) { |
1175 | ret = CSR1212_ENOMEM; | 1166 | ret = -ENOMEM; |
1176 | goto fail; | 1167 | goto fail; |
1177 | } | 1168 | } |
1178 | k->refcnt = 0; /* Don't keep local reference when parsing. */ | 1169 | k->refcnt = 0; /* Don't keep local reference when parsing. */ |
@@ -1185,7 +1176,7 @@ static int csr1212_parse_dir_entry(struct csr1212_keyval *dir, | |||
1185 | /* Uh-oh. Can't have a relative offset of 0 for Leaves | 1176 | /* Uh-oh. Can't have a relative offset of 0 for Leaves |
1186 | * or Directories. The Config ROM image is most likely | 1177 | * or Directories. The Config ROM image is most likely |
1187 | * messed up, so we'll just abort here. */ | 1178 | * messed up, so we'll just abort here. */ |
1188 | ret = CSR1212_EIO; | 1179 | ret = -EIO; |
1189 | goto fail; | 1180 | goto fail; |
1190 | } | 1181 | } |
1191 | 1182 | ||
@@ -1200,7 +1191,7 @@ static int csr1212_parse_dir_entry(struct csr1212_keyval *dir, | |||
1200 | k = csr1212_new_leaf(CSR1212_KV_KEY_ID(ki), NULL, 0); | 1191 | k = csr1212_new_leaf(CSR1212_KV_KEY_ID(ki), NULL, 0); |
1201 | } | 1192 | } |
1202 | if (!k) { | 1193 | if (!k) { |
1203 | ret = CSR1212_ENOMEM; | 1194 | ret = -ENOMEM; |
1204 | goto fail; | 1195 | goto fail; |
1205 | } | 1196 | } |
1206 | k->refcnt = 0; /* Don't keep local reference when parsing. */ | 1197 | k->refcnt = 0; /* Don't keep local reference when parsing. */ |
@@ -1230,14 +1221,14 @@ int csr1212_parse_keyval(struct csr1212_keyval *kv, | |||
1230 | 1221 | ||
1231 | kvi = (struct csr1212_keyval_img*)&cache->data[bytes_to_quads(kv->offset - | 1222 | kvi = (struct csr1212_keyval_img*)&cache->data[bytes_to_quads(kv->offset - |
1232 | cache->offset)]; | 1223 | cache->offset)]; |
1233 | kvi_len = CSR1212_BE16_TO_CPU(kvi->length); | 1224 | kvi_len = be16_to_cpu(kvi->length); |
1234 | 1225 | ||
1235 | #if 0 | 1226 | #if 0 |
1236 | /* Apparently there are too many differnt wrong implementations of the | 1227 | /* Apparently there are too many differnt wrong implementations of the |
1237 | * CRC algorithm that verifying them is moot. */ | 1228 | * CRC algorithm that verifying them is moot. */ |
1238 | if ((csr1212_crc16(kvi->data, kvi_len) != kvi->crc) && | 1229 | if ((csr1212_crc16(kvi->data, kvi_len) != kvi->crc) && |
1239 | (csr1212_msft_crc16(kvi->data, kvi_len) != kvi->crc)) { | 1230 | (csr1212_msft_crc16(kvi->data, kvi_len) != kvi->crc)) { |
1240 | ret = CSR1212_EINVAL; | 1231 | ret = -EINVAL; |
1241 | goto fail; | 1232 | goto fail; |
1242 | } | 1233 | } |
1243 | #endif | 1234 | #endif |
@@ -1263,7 +1254,7 @@ int csr1212_parse_keyval(struct csr1212_keyval *kv, | |||
1263 | if (kv->key.id != CSR1212_KV_ID_EXTENDED_ROM) { | 1254 | if (kv->key.id != CSR1212_KV_ID_EXTENDED_ROM) { |
1264 | kv->value.leaf.data = CSR1212_MALLOC(quads_to_bytes(kvi_len)); | 1255 | kv->value.leaf.data = CSR1212_MALLOC(quads_to_bytes(kvi_len)); |
1265 | if (!kv->value.leaf.data) { | 1256 | if (!kv->value.leaf.data) { |
1266 | ret = CSR1212_ENOMEM; | 1257 | ret = -ENOMEM; |
1267 | goto fail; | 1258 | goto fail; |
1268 | } | 1259 | } |
1269 | 1260 | ||
@@ -1290,7 +1281,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1290 | u_int16_t kv_len = 0; | 1281 | u_int16_t kv_len = 0; |
1291 | 1282 | ||
1292 | if (!csr || !kv || csr->max_rom < 1) | 1283 | if (!csr || !kv || csr->max_rom < 1) |
1293 | return CSR1212_EINVAL; | 1284 | return -EINVAL; |
1294 | 1285 | ||
1295 | /* First find which cache the data should be in (or go in if not read | 1286 | /* First find which cache the data should be in (or go in if not read |
1296 | * yet). */ | 1287 | * yet). */ |
@@ -1306,22 +1297,22 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1306 | 1297 | ||
1307 | /* Only create a new cache for Extended ROM leaves. */ | 1298 | /* Only create a new cache for Extended ROM leaves. */ |
1308 | if (kv->key.id != CSR1212_KV_ID_EXTENDED_ROM) | 1299 | if (kv->key.id != CSR1212_KV_ID_EXTENDED_ROM) |
1309 | return CSR1212_EINVAL; | 1300 | return -EINVAL; |
1310 | 1301 | ||
1311 | if (csr->ops->bus_read(csr, | 1302 | if (csr->ops->bus_read(csr, |
1312 | CSR1212_REGISTER_SPACE_BASE + kv->offset, | 1303 | CSR1212_REGISTER_SPACE_BASE + kv->offset, |
1313 | sizeof(csr1212_quad_t), &q, csr->private)) { | 1304 | sizeof(csr1212_quad_t), &q, csr->private)) { |
1314 | return CSR1212_EIO; | 1305 | return -EIO; |
1315 | } | 1306 | } |
1316 | 1307 | ||
1317 | kv->value.leaf.len = CSR1212_BE32_TO_CPU(q) >> 16; | 1308 | kv->value.leaf.len = be32_to_cpu(q) >> 16; |
1318 | 1309 | ||
1319 | cache_size = (quads_to_bytes(kv->value.leaf.len + 1) + | 1310 | cache_size = (quads_to_bytes(kv->value.leaf.len + 1) + |
1320 | (csr->max_rom - 1)) & ~(csr->max_rom - 1); | 1311 | (csr->max_rom - 1)) & ~(csr->max_rom - 1); |
1321 | 1312 | ||
1322 | cache = csr1212_rom_cache_malloc(kv->offset, cache_size); | 1313 | cache = csr1212_rom_cache_malloc(kv->offset, cache_size); |
1323 | if (!cache) | 1314 | if (!cache) |
1324 | return CSR1212_ENOMEM; | 1315 | return -ENOMEM; |
1325 | 1316 | ||
1326 | kv->value.leaf.data = &cache->data[1]; | 1317 | kv->value.leaf.data = &cache->data[1]; |
1327 | csr->cache_tail->next = cache; | 1318 | csr->cache_tail->next = cache; |
@@ -1331,7 +1322,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1331 | cache->filled_head = | 1322 | cache->filled_head = |
1332 | CSR1212_MALLOC(sizeof(*cache->filled_head)); | 1323 | CSR1212_MALLOC(sizeof(*cache->filled_head)); |
1333 | if (!cache->filled_head) { | 1324 | if (!cache->filled_head) { |
1334 | return CSR1212_ENOMEM; | 1325 | return -ENOMEM; |
1335 | } | 1326 | } |
1336 | 1327 | ||
1337 | cache->filled_head->offset_start = 0; | 1328 | cache->filled_head->offset_start = 0; |
@@ -1353,7 +1344,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1353 | if (cache_index < cr->offset_start) { | 1344 | if (cache_index < cr->offset_start) { |
1354 | newcr = CSR1212_MALLOC(sizeof(*newcr)); | 1345 | newcr = CSR1212_MALLOC(sizeof(*newcr)); |
1355 | if (!newcr) | 1346 | if (!newcr) |
1356 | return CSR1212_ENOMEM; | 1347 | return -ENOMEM; |
1357 | 1348 | ||
1358 | newcr->offset_start = cache_index & ~(csr->max_rom - 1); | 1349 | newcr->offset_start = cache_index & ~(csr->max_rom - 1); |
1359 | newcr->offset_end = newcr->offset_start; | 1350 | newcr->offset_end = newcr->offset_start; |
@@ -1366,8 +1357,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1366 | (cache_index < cr->offset_end)) { | 1357 | (cache_index < cr->offset_end)) { |
1367 | kvi = (struct csr1212_keyval_img*) | 1358 | kvi = (struct csr1212_keyval_img*) |
1368 | (&cache->data[bytes_to_quads(cache_index)]); | 1359 | (&cache->data[bytes_to_quads(cache_index)]); |
1369 | kv_len = quads_to_bytes(CSR1212_BE16_TO_CPU(kvi->length) + | 1360 | kv_len = quads_to_bytes(be16_to_cpu(kvi->length) + 1); |
1370 | 1); | ||
1371 | break; | 1361 | break; |
1372 | } else if (cache_index == cr->offset_end) | 1362 | } else if (cache_index == cr->offset_end) |
1373 | break; | 1363 | break; |
@@ -1377,7 +1367,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1377 | cr = cache->filled_tail; | 1367 | cr = cache->filled_tail; |
1378 | newcr = CSR1212_MALLOC(sizeof(*newcr)); | 1368 | newcr = CSR1212_MALLOC(sizeof(*newcr)); |
1379 | if (!newcr) | 1369 | if (!newcr) |
1380 | return CSR1212_ENOMEM; | 1370 | return -ENOMEM; |
1381 | 1371 | ||
1382 | newcr->offset_start = cache_index & ~(csr->max_rom - 1); | 1372 | newcr->offset_start = cache_index & ~(csr->max_rom - 1); |
1383 | newcr->offset_end = newcr->offset_start; | 1373 | newcr->offset_end = newcr->offset_start; |
@@ -1399,7 +1389,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1399 | csr->private)) { | 1389 | csr->private)) { |
1400 | if (csr->max_rom == 4) | 1390 | if (csr->max_rom == 4) |
1401 | /* We've got problems! */ | 1391 | /* We've got problems! */ |
1402 | return CSR1212_EIO; | 1392 | return -EIO; |
1403 | 1393 | ||
1404 | /* Apperently the max_rom value was a lie, set it to | 1394 | /* Apperently the max_rom value was a lie, set it to |
1405 | * do quadlet reads and try again. */ | 1395 | * do quadlet reads and try again. */ |
@@ -1413,8 +1403,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1413 | if (!kvi && (cr->offset_end > cache_index)) { | 1403 | if (!kvi && (cr->offset_end > cache_index)) { |
1414 | kvi = (struct csr1212_keyval_img*) | 1404 | kvi = (struct csr1212_keyval_img*) |
1415 | (&cache->data[bytes_to_quads(cache_index)]); | 1405 | (&cache->data[bytes_to_quads(cache_index)]); |
1416 | kv_len = quads_to_bytes(CSR1212_BE16_TO_CPU(kvi->length) + | 1406 | kv_len = quads_to_bytes(be16_to_cpu(kvi->length) + 1); |
1417 | 1); | ||
1418 | } | 1407 | } |
1419 | 1408 | ||
1420 | if ((kv_len + (kv->offset - cache->offset)) > cache->size) { | 1409 | if ((kv_len + (kv->offset - cache->offset)) > cache->size) { |
@@ -1422,7 +1411,7 @@ int _csr1212_read_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv) | |||
1422 | * beyond the ConfigROM image region and thus beyond the | 1411 | * beyond the ConfigROM image region and thus beyond the |
1423 | * end of our cache region. Therefore, we abort now | 1412 | * end of our cache region. Therefore, we abort now |
1424 | * rather than seg faulting later. */ | 1413 | * rather than seg faulting later. */ |
1425 | return CSR1212_EIO; | 1414 | return -EIO; |
1426 | } | 1415 | } |
1427 | 1416 | ||
1428 | ncr = cr->next; | 1417 | ncr = cr->next; |
@@ -1451,7 +1440,7 @@ int csr1212_parse_csr(struct csr1212_csr *csr) | |||
1451 | int ret; | 1440 | int ret; |
1452 | 1441 | ||
1453 | if (!csr || !csr->ops || !csr->ops->bus_read) | 1442 | if (!csr || !csr->ops || !csr->ops->bus_read) |
1454 | return CSR1212_EINVAL; | 1443 | return -EINVAL; |
1455 | 1444 | ||
1456 | ret = csr1212_parse_bus_info_block(csr); | 1445 | ret = csr1212_parse_bus_info_block(csr); |
1457 | if (ret != CSR1212_SUCCESS) | 1446 | if (ret != CSR1212_SUCCESS) |
@@ -1463,7 +1452,7 @@ int csr1212_parse_csr(struct csr1212_csr *csr) | |||
1463 | int i = csr->ops->get_max_rom(csr->bus_info_data, | 1452 | int i = csr->ops->get_max_rom(csr->bus_info_data, |
1464 | csr->private); | 1453 | csr->private); |
1465 | if (i & ~0x3) | 1454 | if (i & ~0x3) |
1466 | return CSR1212_EINVAL; | 1455 | return -EINVAL; |
1467 | csr->max_rom = mr_map[i]; | 1456 | csr->max_rom = mr_map[i]; |
1468 | } | 1457 | } |
1469 | 1458 | ||
diff --git a/drivers/ieee1394/csr1212.h b/drivers/ieee1394/csr1212.h index 86f23d6bba86..f42e12e58ae7 100644 --- a/drivers/ieee1394/csr1212.h +++ b/drivers/ieee1394/csr1212.h | |||
@@ -30,87 +30,13 @@ | |||
30 | #ifndef __CSR1212_H__ | 30 | #ifndef __CSR1212_H__ |
31 | #define __CSR1212_H__ | 31 | #define __CSR1212_H__ |
32 | 32 | ||
33 | |||
34 | /* Compatibility layer */ | ||
35 | #ifdef __KERNEL__ | ||
36 | |||
37 | #include <linux/types.h> | 33 | #include <linux/types.h> |
38 | #include <linux/slab.h> | ||
39 | #include <linux/interrupt.h> | ||
40 | #include <linux/vmalloc.h> | 34 | #include <linux/vmalloc.h> |
41 | #include <asm/pgalloc.h> | ||
42 | 35 | ||
43 | #define CSR1212_MALLOC(size) vmalloc((size)) | 36 | #define CSR1212_MALLOC(size) vmalloc((size)) |
44 | #define CSR1212_FREE(ptr) vfree(ptr) | 37 | #define CSR1212_FREE(ptr) vfree(ptr) |
45 | #define CSR1212_BE16_TO_CPU(quad) be16_to_cpu(quad) | ||
46 | #define CSR1212_CPU_TO_BE16(quad) cpu_to_be16(quad) | ||
47 | #define CSR1212_BE32_TO_CPU(quad) be32_to_cpu(quad) | ||
48 | #define CSR1212_CPU_TO_BE32(quad) cpu_to_be32(quad) | ||
49 | #define CSR1212_BE64_TO_CPU(quad) be64_to_cpu(quad) | ||
50 | #define CSR1212_CPU_TO_BE64(quad) cpu_to_be64(quad) | ||
51 | |||
52 | #define CSR1212_LE16_TO_CPU(quad) le16_to_cpu(quad) | ||
53 | #define CSR1212_CPU_TO_LE16(quad) cpu_to_le16(quad) | ||
54 | #define CSR1212_LE32_TO_CPU(quad) le32_to_cpu(quad) | ||
55 | #define CSR1212_CPU_TO_LE32(quad) cpu_to_le32(quad) | ||
56 | #define CSR1212_LE64_TO_CPU(quad) le64_to_cpu(quad) | ||
57 | #define CSR1212_CPU_TO_LE64(quad) cpu_to_le64(quad) | ||
58 | |||
59 | #include <linux/errno.h> | ||
60 | #define CSR1212_SUCCESS (0) | ||
61 | #define CSR1212_EINVAL (-EINVAL) | ||
62 | #define CSR1212_ENOMEM (-ENOMEM) | ||
63 | #define CSR1212_ENOENT (-ENOENT) | ||
64 | #define CSR1212_EIO (-EIO) | ||
65 | #define CSR1212_EBUSY (-EBUSY) | ||
66 | |||
67 | #else /* Userspace */ | ||
68 | |||
69 | #include <sys/types.h> | ||
70 | #include <malloc.h> | ||
71 | #define CSR1212_MALLOC(size) malloc(size) | ||
72 | #define CSR1212_FREE(ptr) free(ptr) | ||
73 | #include <endian.h> | ||
74 | #if __BYTE_ORDER == __LITTLE_ENDIAN | ||
75 | #include <byteswap.h> | ||
76 | #define CSR1212_BE16_TO_CPU(quad) bswap_16(quad) | ||
77 | #define CSR1212_CPU_TO_BE16(quad) bswap_16(quad) | ||
78 | #define CSR1212_BE32_TO_CPU(quad) bswap_32(quad) | ||
79 | #define CSR1212_CPU_TO_BE32(quad) bswap_32(quad) | ||
80 | #define CSR1212_BE64_TO_CPU(quad) bswap_64(quad) | ||
81 | #define CSR1212_CPU_TO_BE64(quad) bswap_64(quad) | ||
82 | |||
83 | #define CSR1212_LE16_TO_CPU(quad) (quad) | ||
84 | #define CSR1212_CPU_TO_LE16(quad) (quad) | ||
85 | #define CSR1212_LE32_TO_CPU(quad) (quad) | ||
86 | #define CSR1212_CPU_TO_LE32(quad) (quad) | ||
87 | #define CSR1212_LE64_TO_CPU(quad) (quad) | ||
88 | #define CSR1212_CPU_TO_LE64(quad) (quad) | ||
89 | #else | ||
90 | #define CSR1212_BE16_TO_CPU(quad) (quad) | ||
91 | #define CSR1212_CPU_TO_BE16(quad) (quad) | ||
92 | #define CSR1212_BE32_TO_CPU(quad) (quad) | ||
93 | #define CSR1212_CPU_TO_BE32(quad) (quad) | ||
94 | #define CSR1212_BE64_TO_CPU(quad) (quad) | ||
95 | #define CSR1212_CPU_TO_BE64(quad) (quad) | ||
96 | |||
97 | #define CSR1212_LE16_TO_CPU(quad) bswap_16(quad) | ||
98 | #define CSR1212_CPU_TO_LE16(quad) bswap_16(quad) | ||
99 | #define CSR1212_LE32_TO_CPU(quad) bswap_32(quad) | ||
100 | #define CSR1212_CPU_TO_LE32(quad) bswap_32(quad) | ||
101 | #define CSR1212_LE64_TO_CPU(quad) bswap_64(quad) | ||
102 | #define CSR1212_CPU_TO_LE64(quad) bswap_64(quad) | ||
103 | #endif | ||
104 | |||
105 | #include <errno.h> | ||
106 | #define CSR1212_SUCCESS (0) | ||
107 | #define CSR1212_EINVAL (EINVAL) | ||
108 | #define CSR1212_ENOMEM (ENOMEM) | ||
109 | #define CSR1212_ENOENT (ENOENT) | ||
110 | #define CSR1212_EIO (EIO) | ||
111 | #define CSR1212_EBUSY (EBUSY) | ||
112 | 38 | ||
113 | #endif | 39 | #define CSR1212_SUCCESS (0) |
114 | 40 | ||
115 | 41 | ||
116 | /* CSR 1212 key types */ | 42 | /* CSR 1212 key types */ |
@@ -302,9 +228,9 @@ struct csr1212_bus_ops { | |||
302 | #define CSR1212_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u_int32_t)) | 228 | #define CSR1212_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u_int32_t)) |
303 | 229 | ||
304 | #define CSR1212_DESCRIPTOR_LEAF_TYPE(kv) \ | 230 | #define CSR1212_DESCRIPTOR_LEAF_TYPE(kv) \ |
305 | (CSR1212_BE32_TO_CPU((kv)->value.leaf.data[0]) >> CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT) | 231 | (be32_to_cpu((kv)->value.leaf.data[0]) >> CSR1212_DESCRIPTOR_LEAF_TYPE_SHIFT) |
306 | #define CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID(kv) \ | 232 | #define CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID(kv) \ |
307 | (CSR1212_BE32_TO_CPU((kv)->value.leaf.data[0]) & \ | 233 | (be32_to_cpu((kv)->value.leaf.data[0]) & \ |
308 | CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID_MASK) | 234 | CSR1212_DESCRIPTOR_LEAF_SPECIFIER_ID_MASK) |
309 | 235 | ||
310 | 236 | ||
@@ -317,14 +243,14 @@ struct csr1212_bus_ops { | |||
317 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u_int32_t)) | 243 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_OVERHEAD (1 * sizeof(u_int32_t)) |
318 | 244 | ||
319 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH(kv) \ | 245 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH(kv) \ |
320 | (CSR1212_BE32_TO_CPU((kv)->value.leaf.data[1]) >> \ | 246 | (be32_to_cpu((kv)->value.leaf.data[1]) >> \ |
321 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_SHIFT) | 247 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_WIDTH_SHIFT) |
322 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET(kv) \ | 248 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET(kv) \ |
323 | ((CSR1212_BE32_TO_CPU((kv)->value.leaf.data[1]) >> \ | 249 | ((be32_to_cpu((kv)->value.leaf.data[1]) >> \ |
324 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT) & \ | 250 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_SHIFT) & \ |
325 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK) | 251 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_CHAR_SET_MASK) |
326 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE(kv) \ | 252 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE(kv) \ |
327 | (CSR1212_BE32_TO_CPU((kv)->value.leaf.data[1]) & \ | 253 | (be32_to_cpu((kv)->value.leaf.data[1]) & \ |
328 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK) | 254 | CSR1212_TEXTUAL_DESCRIPTOR_LEAF_LANGUAGE_MASK) |
329 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_DATA(kv) \ | 255 | #define CSR1212_TEXTUAL_DESCRIPTOR_LEAF_DATA(kv) \ |
330 | (&((kv)->value.leaf.data[2])) | 256 | (&((kv)->value.leaf.data[2])) |
diff --git a/drivers/ieee1394/ieee1394_transactions.c b/drivers/ieee1394/ieee1394_transactions.c index 6f07cd8835a3..d1a0d3cb97d0 100644 --- a/drivers/ieee1394/ieee1394_transactions.c +++ b/drivers/ieee1394/ieee1394_transactions.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/bitops.h> | 12 | #include <linux/bitops.h> |
13 | #include <linux/hardirq.h> | ||
13 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
14 | #include <linux/wait.h> | 15 | #include <linux/wait.h> |
15 | 16 | ||
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index 629a9d88a0da..faaa5c94fb07 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c | |||
@@ -115,7 +115,7 @@ static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length, | |||
115 | 115 | ||
116 | static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) | 116 | static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) |
117 | { | 117 | { |
118 | return (CSR1212_BE32_TO_CPU(bus_info_data[2]) >> 8) & 0x3; | 118 | return (be32_to_cpu(bus_info_data[2]) >> 8) & 0x3; |
119 | } | 119 | } |
120 | 120 | ||
121 | static struct csr1212_bus_ops nodemgr_csr_ops = { | 121 | static struct csr1212_bus_ops nodemgr_csr_ops = { |