diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-06-10 15:31:36 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-07-09 18:07:43 -0400 |
commit | f1397490017e337446c6a8b0562b584679a604a6 (patch) | |
tree | 073c65b0fe78e02b529285ec1bffe5a5c7612e69 /drivers/firewire/fw-sbp2.c | |
parent | 24d40125f1f59a6de9d9e6e046676bd60532596c (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.c | 7 |
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) |