From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54213) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCVBC-0007lu-HV for qemu-devel@nongnu.org; Fri, 14 Sep 2012 08:39:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TCVB2-0004q0-3L for qemu-devel@nongnu.org; Fri, 14 Sep 2012 08:39:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:10942) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCVB1-0004pw-Qr for qemu-devel@nongnu.org; Fri, 14 Sep 2012 08:39:20 -0400 From: Kevin Wolf Date: Fri, 14 Sep 2012 14:39:03 +0200 Message-Id: <1347626352-6023-3-git-send-email-kwolf@redhat.com> In-Reply-To: <1347626352-6023-1-git-send-email-kwolf@redhat.com> References: <1347626352-6023-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 02/11] ATAPI: STARTSTOPUNIT only eject/load media if powercondition is 0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org From: Ronnie Sahlberg 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 Signed-off-by: Kevin Wolf --- hw/ide/atapi.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c index f7f714c..685cbaa 100644 --- a/hw/ide/atapi.c +++ b/hw/ide/atapi.c @@ -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) { -- 1.7.6.5