Date: Tue, 23 Jan 2007 21:20:08 +0100 (CET) From: Stefan Richter Subject: 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 Index: linux-2.6.20-rc5/drivers/firewire/fw-sbp2.c =================================================================== --- linux-2.6.20-rc5.orig/drivers/firewire/fw-sbp2.c +++ linux-2.6.20-rc5/drivers/firewire/fw-sbp2.c @@ -968,11 +968,27 @@ static int sbp2_scsi_queuecommand(struct 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_dr .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,