From cfb01381f4ffcd05aefe76c74911ba6bc996e8ba Mon Sep 17 00:00:00 2001 From: Stefan Richter Date: Tue, 23 Jan 2007 21:20:08 +0100 Subject: [PATCH] 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 --- drivers/firewire/fw-sbp2.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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,