diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-01-23 21:20:08 +0100 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-03-09 22:02:44 +0100 |
commit | cfb01381f4ffcd05aefe76c74911ba6bc996e8ba (patch) | |
tree | 52fa2302bd3fb3584772cf252d10b18d2fe5744e /drivers/firewire/fw-sbp2.c | |
parent | firewire: consistent usage of node_id (diff) | |
download | linux-cfb01381f4ffcd05aefe76c74911ba6bc996e8ba.tar.xz linux-cfb01381f4ffcd05aefe76c74911ba6bc996e8ba.zip |
firewire: fw-sbp2: set command set related device flags
Copied from sbp2:
- enable spin-up by START STOP UNIT for all devices
- enable INQUIRY (36) workaround on demand
- prefer READ/ WRITE (10) over (6) for all devices
- prefer MODE SENSE (10) for MMC devices
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/fw-sbp2.c')
-rw-r--r-- | drivers/firewire/fw-sbp2.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index 4e42b73f1e3e..54cad3a5dfb8 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c @@ -968,11 +968,27 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done) return 0; } +static int sbp2_scsi_slave_alloc(struct scsi_device *sdev) +{ + struct fw_unit *unit = (struct fw_unit *)sdev->host->hostdata[0]; + struct sbp2_device *sd = unit->device.driver_data; + + sdev->allow_restart = 1; + + if (sd->workarounds & SBP2_WORKAROUND_INQUIRY_36) + sdev->inquiry_len = 36; + return 0; +} + static int sbp2_scsi_slave_configure(struct scsi_device *sdev) { struct fw_unit *unit = (struct fw_unit *)sdev->host->hostdata[0]; struct sbp2_device *sd = unit->device.driver_data; + sdev->use_10_for_rw = 1; + + if (sdev->type == TYPE_ROM) + sdev->use_10_for_ms = 1; if (sdev->type == TYPE_DISK && sd->workarounds & SBP2_WORKAROUND_MODE_SENSE_8) sdev->skip_ms_page_8 = 1; @@ -1004,6 +1020,7 @@ static struct scsi_host_template scsi_driver_template = { .name = "SBP-2 IEEE-1394", .proc_name = (char *)sbp2_driver_name, .queuecommand = sbp2_scsi_queuecommand, + .slave_alloc = sbp2_scsi_slave_alloc, .slave_configure = sbp2_scsi_slave_configure, .eh_abort_handler = sbp2_scsi_abort, .this_id = -1, |