We need to say "hello!" to our ATAPI friends
in a slightly different manner.
Signed-off-by: John Snow <jsnow@redhat.com>
Message-id:
1452282920-21550-4-git-send-email-jsnow@redhat.com
va_list ap;
uint16_t buff[256];
uint8_t port;
va_list ap;
uint16_t buff[256];
uint8_t port;
if (cli) {
va_start(ap, cli);
if (cli) {
va_start(ap, cli);
/* Initialize test device */
port = ahci_port_select(ahci);
ahci_port_clear(ahci, port);
/* Initialize test device */
port = ahci_port_select(ahci);
ahci_port_clear(ahci, port);
- ahci_io(ahci, port, CMD_IDENTIFY, &buff, sizeof(buff), 0);
+ if (is_atapi(ahci, port)) {
+ hello = CMD_PACKET_ID;
+ } else {
+ hello = CMD_IDENTIFY;
+ }
+ ahci_io(ahci, port, hello, &buff, sizeof(buff), 0);
qfree(ahci->parent, addr);
}
qfree(ahci->parent, addr);
}
+bool is_atapi(AHCIQState *ahci, uint8_t port)
+{
+ return ahci_px_rreg(ahci, port, AHCI_PX_SIG) == AHCI_SIGNATURE_CDROM;
+}
+
/**
* Locate, verify, and return a handle to the AHCI device.
*/
/**
* Locate, verify, and return a handle to the AHCI device.
*/
/* Command Misc */
uint8_t ahci_command_slot(AHCICommand *cmd);
/* Command Misc */
uint8_t ahci_command_slot(AHCICommand *cmd);
+bool is_atapi(AHCIQState *ahci, uint8_t port);