From: Jack Lange Date: Fri, 10 Oct 2008 22:20:35 +0000 (-0500) Subject: added new identify sub command (merged from CVS) X-Git-Tag: 1.0^2~58 X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=2e8d07d2d209b4fdb15d92d42a4a01f6f1ef9be8;p=palacios-OLD.git added new identify sub command (merged from CVS) --- diff --git a/palacios/src/devices/ramdisk.c b/palacios/src/devices/ramdisk.c index 2d862fe..b8bbd80 100644 --- a/palacios/src/devices/ramdisk.c +++ b/palacios/src/devices/ramdisk.c @@ -843,6 +843,44 @@ static int write_cmd_port(ushort_t port, void * src, uint_t length, struct vm_de value); switch (value) { + case 0xec: // IDENTIFY DEVICE + { + if (drive->device_type == IDE_NONE) { + PrintError("\t\tError: disk ata%d-%d not present, aborting\n", + get_channel_no(ramdisk, channel), + get_drive_no(channel, drive)); + rd_command_aborted(dev, channel, value); + break; + } else if (drive->device_type == IDE_CDROM) { + controller->head_no = 0; + controller->sector_count = 1; + controller->sector_no = 1; + controller->cylinder_no = 0xeb14; + rd_command_aborted(dev, channel, 0xec); + } else { + PrintError("\t\tError: Want to identify HDD!!\n"); + /* + SELECTED_CONTROLLER(channel).current_command = value; + SELECTED_CONTROLLER(channel).error_register = 0; + + // See ATA/ATAPI-4, 8.12 + SELECTED_CONTROLLER(channel).status.busy = 0; + SELECTED_CONTROLLER(channel).status.drive_ready = 1; + SELECTED_CONTROLLER(channel).status.write_fault = 0; + SELECTED_CONTROLLER(channel).status.drq = 1; + SELECTED_CONTROLLER(channel).status.err = 0; + + SELECTED_CONTROLLER(channel).status.seek_complete = 1; + SELECTED_CONTROLLER(channel).status.corrected_data = 0; + + SELECTED_CONTROLLER(channel).buffer_index = 0; + raise_interrupt(channel); + identify_drive(channel); + */ + } + + break; + } // ATAPI commands case 0xa1: // IDENTIFY PACKET DEVICE {