diff options
-rw-r--r-- | drivers/firewire/fw-device-cdev.c | 2 | ||||
-rw-r--r-- | drivers/firewire/fw-device.c | 4 | ||||
-rw-r--r-- | drivers/firewire/fw-ohci.c | 21 | ||||
-rw-r--r-- | drivers/firewire/fw-sbp2.c | 8 | ||||
-rw-r--r-- | drivers/firewire/fw-topology.c | 2 | ||||
-rw-r--r-- | drivers/firewire/fw-transaction.c | 6 |
6 files changed, 23 insertions, 20 deletions
diff --git a/drivers/firewire/fw-device-cdev.c b/drivers/firewire/fw-device-cdev.c index 5ffc58c6624c..1b9e5f7c0129 100644 --- a/drivers/firewire/fw-device-cdev.c +++ b/drivers/firewire/fw-device-cdev.c | |||
@@ -238,7 +238,7 @@ static ssize_t ioctl_send_request(struct client *client, void __user *arg) | |||
238 | 238 | ||
239 | fw_send_request(device->card, &response->transaction, | 239 | fw_send_request(device->card, &response->transaction, |
240 | request.tcode, | 240 | request.tcode, |
241 | device->node->node_id | LOCAL_BUS, | 241 | device->node->node_id, |
242 | device->card->generation, | 242 | device->card->generation, |
243 | device->node->max_speed, | 243 | device->node->max_speed, |
244 | request.offset, | 244 | request.offset, |
diff --git a/drivers/firewire/fw-device.c b/drivers/firewire/fw-device.c index f1b0e75fd91e..4fb5587252a9 100644 --- a/drivers/firewire/fw-device.c +++ b/drivers/firewire/fw-device.c | |||
@@ -257,7 +257,7 @@ static int read_rom(struct fw_device *device, int index, u32 * data) | |||
257 | 257 | ||
258 | offset = 0xfffff0000400ULL + index * 4; | 258 | offset = 0xfffff0000400ULL + index * 4; |
259 | fw_send_request(device->card, &t, TCODE_READ_QUADLET_REQUEST, | 259 | fw_send_request(device->card, &t, TCODE_READ_QUADLET_REQUEST, |
260 | device->node_id | LOCAL_BUS, | 260 | device->node_id, |
261 | device->generation, SCODE_100, | 261 | device->generation, SCODE_100, |
262 | offset, NULL, 4, complete_transaction, &callback_data); | 262 | offset, NULL, 4, complete_transaction, &callback_data); |
263 | 263 | ||
@@ -447,7 +447,7 @@ static void fw_device_init(struct work_struct *work) | |||
447 | device->config_rom_retries++; | 447 | device->config_rom_retries++; |
448 | schedule_delayed_work(&device->work, RETRY_DELAY); | 448 | schedule_delayed_work(&device->work, RETRY_DELAY); |
449 | } else { | 449 | } else { |
450 | fw_notify("giving up on config rom for node id %d\n", | 450 | fw_notify("giving up on config rom for node id %x\n", |
451 | device->node_id); | 451 | device->node_id); |
452 | fw_device_release(&device->device); | 452 | fw_device_release(&device->device); |
453 | } | 453 | } |
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c index ba10203725c1..d6f0644b05d4 100644 --- a/drivers/firewire/fw-ohci.c +++ b/drivers/firewire/fw-ohci.c | |||
@@ -828,10 +828,10 @@ ohci_enable_phys_dma(struct fw_card *card, int node_id, int generation) | |||
828 | { | 828 | { |
829 | struct fw_ohci *ohci = fw_ohci(card); | 829 | struct fw_ohci *ohci = fw_ohci(card); |
830 | unsigned long flags; | 830 | unsigned long flags; |
831 | int retval = 0; | 831 | int n, retval = 0; |
832 | 832 | ||
833 | /* FIXME: make sure this bitmask is cleared when we clear the | 833 | /* FIXME: Make sure this bitmask is cleared when we clear the busReset |
834 | * busReset interrupt bit. */ | 834 | * interrupt bit. Clear physReqResourceAllBuses on bus reset. */ |
835 | 835 | ||
836 | spin_lock_irqsave(&ohci->lock, flags); | 836 | spin_lock_irqsave(&ohci->lock, flags); |
837 | 837 | ||
@@ -840,12 +840,15 @@ ohci_enable_phys_dma(struct fw_card *card, int node_id, int generation) | |||
840 | goto out; | 840 | goto out; |
841 | } | 841 | } |
842 | 842 | ||
843 | if (node_id < 32) { | 843 | /* NOTE, if the node ID contains a non-local bus ID, physical DMA is |
844 | reg_write(ohci, OHCI1394_PhyReqFilterLoSet, 1 << node_id); | 844 | * enabled for _all_ nodes on remote buses. */ |
845 | } else { | 845 | |
846 | reg_write(ohci, OHCI1394_PhyReqFilterHiSet, | 846 | n = (node_id & 0xffc0) == LOCAL_BUS ? node_id & 0x3f : 63; |
847 | 1 << (node_id - 32)); | 847 | if (n < 32) |
848 | } | 848 | reg_write(ohci, OHCI1394_PhyReqFilterLoSet, 1 << n); |
849 | else | ||
850 | reg_write(ohci, OHCI1394_PhyReqFilterHiSet, 1 << (n - 32)); | ||
851 | |||
849 | flush_writes(ohci); | 852 | flush_writes(ohci); |
850 | out: | 853 | out: |
851 | spin_unlock_irqrestore(&ohci->lock, flags); | 854 | spin_unlock_irqrestore(&ohci->lock, flags); |
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index f5c46822b7d8..4e42b73f1e3e 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c | |||
@@ -328,7 +328,7 @@ sbp2_send_orb(struct sbp2_orb *orb, struct fw_unit *unit, | |||
328 | spin_unlock_irqrestore(&device->card->lock, flags); | 328 | spin_unlock_irqrestore(&device->card->lock, flags); |
329 | 329 | ||
330 | fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST, | 330 | fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST, |
331 | node_id | LOCAL_BUS, generation, | 331 | node_id, generation, |
332 | device->node->max_speed, offset, | 332 | device->node->max_speed, offset, |
333 | &orb->pointer, sizeof orb->pointer, | 333 | &orb->pointer, sizeof orb->pointer, |
334 | complete_transaction, orb); | 334 | complete_transaction, orb); |
@@ -485,7 +485,7 @@ static int sbp2_agent_reset(struct fw_unit *unit) | |||
485 | return -ENOMEM; | 485 | return -ENOMEM; |
486 | 486 | ||
487 | fw_send_request(device->card, t, TCODE_WRITE_QUADLET_REQUEST, | 487 | fw_send_request(device->card, t, TCODE_WRITE_QUADLET_REQUEST, |
488 | sd->node_id | LOCAL_BUS, sd->generation, SCODE_400, | 488 | sd->node_id, sd->generation, SCODE_400, |
489 | sd->command_block_agent_address + SBP2_AGENT_RESET, | 489 | sd->command_block_agent_address + SBP2_AGENT_RESET, |
490 | &zero, sizeof zero, complete_agent_reset_write, t); | 490 | &zero, sizeof zero, complete_agent_reset_write, t); |
491 | 491 | ||
@@ -586,7 +586,7 @@ static int sbp2_probe(struct device *dev) | |||
586 | 586 | ||
587 | sd->generation = generation; | 587 | sd->generation = generation; |
588 | sd->node_id = node_id; | 588 | sd->node_id = node_id; |
589 | sd->address_high = (LOCAL_BUS | local_node_id) << 16; | 589 | sd->address_high = local_node_id << 16; |
590 | 590 | ||
591 | /* Get command block agent offset and login id. */ | 591 | /* Get command block agent offset and login id. */ |
592 | sd->command_block_agent_address = | 592 | sd->command_block_agent_address = |
@@ -663,7 +663,7 @@ static void sbp2_reconnect(struct work_struct *work) | |||
663 | 663 | ||
664 | sd->generation = generation; | 664 | sd->generation = generation; |
665 | sd->node_id = node_id; | 665 | sd->node_id = node_id; |
666 | sd->address_high = (LOCAL_BUS | local_node_id) << 16; | 666 | sd->address_high = local_node_id << 16; |
667 | } | 667 | } |
668 | 668 | ||
669 | static void sbp2_update(struct fw_unit *unit) | 669 | static void sbp2_update(struct fw_unit *unit) |
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c index 1938f36cfaa3..684d87d99775 100644 --- a/drivers/firewire/fw-topology.c +++ b/drivers/firewire/fw-topology.c | |||
@@ -102,7 +102,7 @@ static struct fw_node *fw_node_create(u32 sid, int port_count, int color) | |||
102 | return NULL; | 102 | return NULL; |
103 | 103 | ||
104 | node->color = color; | 104 | node->color = color; |
105 | node->node_id = self_id_phy_id(sid); | 105 | node->node_id = LOCAL_BUS | self_id_phy_id(sid); |
106 | node->link_on = self_id_link_on(sid); | 106 | node->link_on = self_id_link_on(sid); |
107 | node->phy_speed = self_id_phy_speed(sid); | 107 | node->phy_speed = self_id_phy_speed(sid); |
108 | node->port_count = port_count; | 108 | node->port_count = port_count; |
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c index 4c1275f9a3b4..439a3e3ee2f0 100644 --- a/drivers/firewire/fw-transaction.c +++ b/drivers/firewire/fw-transaction.c | |||
@@ -56,7 +56,7 @@ | |||
56 | #define header_get_extended_tcode(q) (((q) >> 0) & 0xffff) | 56 | #define header_get_extended_tcode(q) (((q) >> 0) & 0xffff) |
57 | 57 | ||
58 | #define phy_config_gap_count(gap_count) (((gap_count) << 16) | (1 << 22)) | 58 | #define phy_config_gap_count(gap_count) (((gap_count) << 16) | (1 << 22)) |
59 | #define phy_config_root_id(node_id) (((node_id) << 24) | (1 << 23)) | 59 | #define phy_config_root_id(node_id) ((((node_id) & 0x3f) << 24) | (1 << 23)) |
60 | #define phy_identifier(id) ((id) << 30) | 60 | #define phy_identifier(id) ((id) << 30) |
61 | 61 | ||
62 | static void | 62 | static void |
@@ -123,7 +123,7 @@ fw_fill_packet(struct fw_packet *packet, int tcode, int tlabel, | |||
123 | header_retry(RETRY_X) | | 123 | header_retry(RETRY_X) | |
124 | header_tlabel(tlabel) | | 124 | header_tlabel(tlabel) | |
125 | header_tcode(tcode) | | 125 | header_tcode(tcode) | |
126 | header_destination(node_id | LOCAL_BUS); | 126 | header_destination(node_id); |
127 | packet->header[1] = | 127 | packet->header[1] = |
128 | header_offset_high(offset >> 32) | header_source(0); | 128 | header_offset_high(offset >> 32) | header_source(0); |
129 | packet->header[2] = | 129 | packet->header[2] = |
@@ -190,7 +190,7 @@ fw_fill_packet(struct fw_packet *packet, int tcode, int tlabel, | |||
190 | * @param tcode the tcode for this transaction. Do not use | 190 | * @param tcode the tcode for this transaction. Do not use |
191 | * TCODE_LOCK_REQUEST directly, insted use TCODE_LOCK_MASK_SWAP | 191 | * TCODE_LOCK_REQUEST directly, insted use TCODE_LOCK_MASK_SWAP |
192 | * etc. to specify tcode and ext_tcode. | 192 | * etc. to specify tcode and ext_tcode. |
193 | * @param node_id the node_id of the destination node | 193 | * @param node_id the destination node ID (bus ID and PHY ID concatenated) |
194 | * @param generation the generation for which node_id is valid | 194 | * @param generation the generation for which node_id is valid |
195 | * @param speed the speed to use for sending the request | 195 | * @param speed the speed to use for sending the request |
196 | * @param offset the 48 bit offset on the destination node | 196 | * @param offset the 48 bit offset on the destination node |