Re: Clean patch to fix not working spindown over Firewire

Tino Keitel
2008-05-09T20:16:00Z

[-- Attachment #1: Type: text/plain, Size: 373 bytes --]

On Wed, Apr 30, 2008 at 15:36:36 +0200, Stefan Richter wrote:

[...]

> PS:
> If it works for all RBC devices (it should according to the spec...) &&
> your ICY Box exposes itself as RBC device (it should do so), then we
> don't need any changes to struct scsi_device and to sbp2/ firewire-sbp2.

Do you mean something like in the attached (untested) patch?

Regards,
Tino

[-- Attachment #2: start_stop_unit_set_power_condition_v3.diff --]
[-- Type: text/x-diff, Size: 566 bytes --]

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 01cefbb..6b927f6 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1787,8 +1787,13 @@ static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
struct scsi_device *sdp = sdkp->device;
int res;

- if (start)
+ if (start) {
cmd[4] |= 1; /* START */
+ /* active power condition */
+ cmd[4] |= (sdp->type == TYPE_RBC) ? (1 << 4) : 0;
+ } else
+ /* standby power condition */
+ cmd[4] |= (sdp->type == TYPE_RBC) ? (3 << 4) : 0 ;

if (!scsi_device_online(sdp))
return -ENODEV;