#include "atapi-types.h"
-/* ACS-2 T13/2015-D Table B.2 Command codes */
-#define ATAPI_NOP 0x00
-#define CFA_REQ_EXT_ERROR_CODE 0x03
-#define ATAPI_DSM 0x06
-#define ATAPI_DEVICE_RESET 0x08
-#define ATAPI_RECAL 0x10
-#define ATAPI_READ 0x20
-#define ATAPI_READ_ONCE 0x21
-#define ATAPI_READ_EXT 0x24
-#define ATAPI_READDMA_EXT 0x25
-#define ATAPI_READDMA_QUEUED_EXT 0x26
-#define ATAPI_READ_NATIVE_MAX_EXT 0x27
-#define ATAPI_MULTREAD_EXT 0x29
-#define ATAPI_WRITE 0x30
-#define ATAPI_WRITE_ONCE 0x31
-#define ATAPI_WRITE_EXT 0x34
-#define ATAPI_WRITEDMA_EXT 0x35
-#define ATAPI_WRITEDMA_QUEUED_EXT 0x36
-#define ATAPI_SET_MAX_EXT 0x37
-#define ATAPI_SET_MAX_EXT 0x37
-#define CFA_WRITE_SECT_WO_ERASE 0x38
-#define ATAPI_MULTWRITE_EXT 0x39
-#define ATAPI_WRITE_VERIFY 0x3C
-#define ATAPI_VERIFY 0x40
-#define ATAPI_VERIFY_ONCE 0x41
-#define ATAPI_VERIFY_EXT 0x42
-#define ATAPI_SEEK 0x70
-#define CFA_TRANSLATE_SECTOR 0x87
-#define ATAPI_DIAGNOSE 0x90
-#define ATAPI_SPECIFY 0x91
-#define ATAPI_DOWNLOAD_MICROCODE 0x92
-#define ATAPI_STANDBYNOW2 0x94
-#define ATAPI_IDLEIMMEDIATE2 0x95
-#define ATAPI_STANDBY2 0x96
-#define ATAPI_SETIDLE2 0x97
-#define ATAPI_CHECKPOWERMODE2 0x98
-#define ATAPI_SLEEPNOW2 0x99
-#define ATAPI_PACKETCMD 0xA0
-#define ATAPI_PIDENTIFY 0xA1
-#define ATAPI_QUEUED_SERVICE 0xA2
-#define ATAPI_SMART 0xB0
-#define CFA_ACCESS_METADATA_STORAGE 0xB8
-#define CFA_ERASE_SECTORS 0xC0
-#define ATAPI_MULTREAD 0xC4
-#define ATAPI_MULTWRITE 0xC5
-#define ATAPI_SETMULT 0xC6
-#define ATAPI_READDMA 0xC8
-#define ATAPI_READDMA_ONCE 0xC9
-#define ATAPI_WRITEDMA 0xCA
-#define ATAPI_WRITEDMA_ONCE 0xCB
-#define ATAPI_WRITEDMA_QUEUED 0xCC
-#define CFA_WRITE_MULTI_WO_ERASE 0xCD
-#define ATAPI_GETMEDIASTATUS 0xDA
-#define ATAPI_DOORLOCK 0xDE
-#define ATAPI_DOORUNLOCK 0xDF
-#define ATAPI_STANDBYNOW1 0xE0
-#define ATAPI_IDLEIMMEDIATE 0xE1
-#define ATAPI_STANDBY 0xE2
-#define ATAPI_SETIDLE1 0xE3
-#define ATAPI_READ_BUFFER 0xE4
-#define ATAPI_CHECKPOWERMODE1 0xE5
-#define ATAPI_SLEEPNOW1 0xE6
-#define ATAPI_FLUSH_CACHE 0xE7
-#define ATAPI_WRITE_BUFFER 0xE8
-#define ATAPI_FLUSH_CACHE_EXT 0xEA
-#define ATAPI_IDENTIFY 0xEC
-#define ATAPI_MEDIAEJECT 0xED
-#define ATAPI_SETFEATURES 0xEF
-#define IBM_SENSE_CONDITION 0xF0
-#define ATAPI_SECURITY_SET_PASS 0xF1
-#define ATAPI_SECURITY_UNLOCK 0xF2
-#define ATAPI_SECURITY_ERASE_PREPARE 0xF3
-#define ATAPI_SECURITY_ERASE_UNIT 0xF4
-#define ATAPI_SECURITY_FREEZE_LOCK 0xF5
-#define CFA_WEAR_LEVEL 0xF5
-#define ATAPI_SECURITY_DISABLE 0xF6
/* ATAPI sucks...
* The OS will write to the cylinder register the number of bytes it wants to read
static void atapi_req_sense(struct ide_internal * ide, struct ide_channel * channel) {
struct ide_drive * drive = get_selected_drive(channel);
+ drive->cd_state.sense.read_len=0xa;
+
memcpy(drive->data_buf, drive->cd_state.sense.buf, sizeof(drive->cd_state.sense.buf));
- atapi_setup_cmd_resp(ide, channel, 18);
+ atapi_setup_cmd_resp(ide, channel, sizeof(drive->cd_state.sense.buf));
}