aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/fw-sbp2.c
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-06-10 15:31:36 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-07-09 18:07:43 -0400
commitf1397490017e337446c6a8b0562b584679a604a6 (patch)
tree073c65b0fe78e02b529285ec1bffe5a5c7612e69 /drivers/firewire/fw-sbp2.c
parent24d40125f1f59a6de9d9e6e046676bd60532596c (diff)
firewire: support S100B...S400B and link slower than PHY
Use a speed probe to determine the speed over 1394b buses and of nodes which report a link speed less than their PHY speed. Log the effective maximum speed of newly created nodes in dmesg. Also, read the config ROM (except bus info block) at the maximum speed rather than S100. This isn't a real optimization though because we still only use quadlet read requests for the entire ROM. The patch also adds support for S1600 and S3200, although such hardware does not exist yet. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Diffstat (limited to 'drivers/firewire/fw-sbp2.c')
-rw-r--r--drivers/firewire/fw-sbp2.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index 16e942f72e48..851c2da060d2 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -346,8 +346,7 @@ sbp2_send_orb(struct sbp2_orb *orb, struct fw_unit *unit,
346 spin_unlock_irqrestore(&device->card->lock, flags); 346 spin_unlock_irqrestore(&device->card->lock, flags);
347 347
348 fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST, 348 fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST,
349 node_id, generation, 349 node_id, generation, device->max_speed, offset,
350 device->node->max_speed, offset,
351 &orb->pointer, sizeof(orb->pointer), 350 &orb->pointer, sizeof(orb->pointer),
352 complete_transaction, orb); 351 complete_transaction, orb);
353} 352}
@@ -1018,8 +1017,8 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
1018 * if we set this to max_speed + 7, we get the right value. 1017 * if we set this to max_speed + 7, we get the right value.
1019 */ 1018 */
1020 orb->request.misc = 1019 orb->request.misc =
1021 COMMAND_ORB_MAX_PAYLOAD(device->node->max_speed + 7) | 1020 COMMAND_ORB_MAX_PAYLOAD(device->max_speed + 7) |
1022 COMMAND_ORB_SPEED(device->node->max_speed) | 1021 COMMAND_ORB_SPEED(device->max_speed) |
1023 COMMAND_ORB_NOTIFY; 1022 COMMAND_ORB_NOTIFY;
1024 1023
1025 if (cmd->sc_data_direction == DMA_FROM_DEVICE) 1024 if (cmd->sc_data_direction == DMA_FROM_DEVICE)