]> Git Repo - qemu.git/commitdiff
ATAPI: STARTSTOPUNIT only eject/load media if powercondition is 0
authorRonnie Sahlberg <[email protected]>
Tue, 31 Jul 2012 01:28:26 +0000 (11:28 +1000)
committerKevin Wolf <[email protected]>
Wed, 12 Sep 2012 13:50:09 +0000 (15:50 +0200)
The START STOP UNIT command will only eject/load media if
power condition is zero.

If power condition is !0 then LOEJ and START will be ignored.

From MMC (sbc contains similar wordings too)
  The Power Conditions field requests the block device to be placed
  in the power condition defined in
  Table 558. If this field has a value other than 0h then the Start
  and LoEj bits shall be ignored.

Signed-off-by: Ronnie Sahlberg <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
hw/ide/atapi.c

index f7f714c726361cb692d7ff6e9fd87eb940d877ab..685cbaa889e73951560275cc1ba8329d95685d7f 100644 (file)
@@ -875,6 +875,12 @@ static void cmd_start_stop_unit(IDEState *s, uint8_t* buf)
     int sense;
     bool start = buf[4] & 1;
     bool loej = buf[4] & 2;     /* load on start, eject on !start */
+    int pwrcnd = buf[4] & 0xf0;
+
+    if (pwrcnd) {
+        /* eject/load only happens for power condition == 0 */
+        return;
+    }
 
     if (loej) {
         if (!start && !s->tray_open && s->tray_locked) {
This page took 0.029528 seconds and 4 git commands to generate.