提交 ce560dcf 编写于 作者: R Ronnie Sahlberg 提交者: Kevin Wolf

ATAPI: STARTSTOPUNIT only eject/load media if powercondition is 0

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: NRonnie Sahlberg <ronniesahlberg@gmail.com>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
上级 1f7a48de
......@@ -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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册