aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/core-transaction.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-07-30 12:32:39 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-07-30 12:32:39 -0400
commit148b729b9f51a78c1a024369bdcdc592f01103d4 (patch)
tree0fa25d5dcff62b67545deebbebed11967753ce94 /drivers/firewire/core-transaction.c
parent9ec97169e7d6afe2f8206d694d1411fb3bb49853 (diff)
parente3cbd92002a30aecae8cb8b31a5e1916eb270a14 (diff)
Merge tag 'firewire-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394
Pull firewire updates from Stefan Richter: - Small fixes and optimizations. - A new sysfs attribute to tell local and remote nodes apart. Useful to set special permissions/ ownership of local nodes' /dev/fw*, to start daemons on them (for diagnostics, management, AV targets, VersaPHY initiator or targets...), to pick up their GUID to use it as GUID of an SBP2 target instance, and of course for informational purposes. * tag 'firewire-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394: firewire: core: document is_local sysfs attribute firewire: core: add is_local sysfs device attribute firewire: ohci: initialize multiChanMode bits after reset firewire: core: fix multichannel IR with buffers larger than 2 GB firewire: ohci: sanity-check MMIO resource firewire: ohci: lazy bus time initialization firewire: core: allocate the low memory region firewire: core: make address handler length 64 bits
Diffstat (limited to 'drivers/firewire/core-transaction.c')
-rw-r--r--drivers/firewire/core-transaction.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-transaction.c
index 780708dc6e25..87d6f2d2f02d 100644
--- a/drivers/firewire/core-transaction.c
+++ b/drivers/firewire/core-transaction.c
@@ -525,9 +525,10 @@ const struct fw_address_region fw_high_memory_region =
525 { .start = 0x000100000000ULL, .end = 0xffffe0000000ULL, }; 525 { .start = 0x000100000000ULL, .end = 0xffffe0000000ULL, };
526EXPORT_SYMBOL(fw_high_memory_region); 526EXPORT_SYMBOL(fw_high_memory_region);
527 527
528#if 0 528static const struct fw_address_region low_memory_region =
529const struct fw_address_region fw_low_memory_region =
530 { .start = 0x000000000000ULL, .end = 0x000100000000ULL, }; 529 { .start = 0x000000000000ULL, .end = 0x000100000000ULL, };
530
531#if 0
531const struct fw_address_region fw_private_region = 532const struct fw_address_region fw_private_region =
532 { .start = 0xffffe0000000ULL, .end = 0xfffff0000000ULL, }; 533 { .start = 0xffffe0000000ULL, .end = 0xfffff0000000ULL, };
533const struct fw_address_region fw_csr_region = 534const struct fw_address_region fw_csr_region =
@@ -1198,6 +1199,23 @@ static struct fw_address_handler registers = {
1198 .address_callback = handle_registers, 1199 .address_callback = handle_registers,
1199}; 1200};
1200 1201
1202static void handle_low_memory(struct fw_card *card, struct fw_request *request,
1203 int tcode, int destination, int source, int generation,
1204 unsigned long long offset, void *payload, size_t length,
1205 void *callback_data)
1206{
1207 /*
1208 * This catches requests not handled by the physical DMA unit,
1209 * i.e., wrong transaction types or unauthorized source nodes.
1210 */
1211 fw_send_response(card, request, RCODE_TYPE_ERROR);
1212}
1213
1214static struct fw_address_handler low_memory = {
1215 .length = 0x000100000000ULL,
1216 .address_callback = handle_low_memory,
1217};
1218
1201MODULE_AUTHOR("Kristian Hoegsberg <krh@bitplanet.net>"); 1219MODULE_AUTHOR("Kristian Hoegsberg <krh@bitplanet.net>");
1202MODULE_DESCRIPTION("Core IEEE1394 transaction logic"); 1220MODULE_DESCRIPTION("Core IEEE1394 transaction logic");
1203MODULE_LICENSE("GPL"); 1221MODULE_LICENSE("GPL");
@@ -1259,6 +1277,7 @@ static int __init fw_core_init(void)
1259 1277
1260 fw_core_add_address_handler(&topology_map, &topology_map_region); 1278 fw_core_add_address_handler(&topology_map, &topology_map_region);
1261 fw_core_add_address_handler(&registers, &registers_region); 1279 fw_core_add_address_handler(&registers, &registers_region);
1280 fw_core_add_address_handler(&low_memory, &low_memory_region);
1262 fw_core_add_descriptor(&vendor_id_descriptor); 1281 fw_core_add_descriptor(&vendor_id_descriptor);
1263 fw_core_add_descriptor(&model_id_descriptor); 1282 fw_core_add_descriptor(&model_id_descriptor);
1264 1283