|
@@ -1124,6 +1124,8 @@ sd_spinup_disk(struct scsi_disk *sdkp)
|
|
|
cmd[1] = 1; /* Return immediately */
|
|
|
memset((void *) &cmd[2], 0, 8);
|
|
|
cmd[4] = 1; /* Start spin cycle */
|
|
|
+ if (sdkp->device->start_stop_pwr_cond)
|
|
|
+ cmd[4] |= 1 << 4;
|
|
|
scsi_execute_req(sdkp->device, cmd, DMA_NONE,
|
|
|
NULL, 0, &sshdr,
|
|
|
SD_TIMEOUT, SD_MAX_RETRIES);
|
|
@@ -1790,6 +1792,9 @@ static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
|
|
|
if (start)
|
|
|
cmd[4] |= 1; /* START */
|
|
|
|
|
|
+ if (sdp->start_stop_pwr_cond)
|
|
|
+ cmd[4] |= start ? 1 << 4 : 3 << 4; /* Active or Standby */
|
|
|
+
|
|
|
if (!scsi_device_online(sdp))
|
|
|
return -ENODEV;
|
|
|
|