* redistribute, and modify it as specified in the file "V3VEE_LICENSE".
*/
+#ifndef __DEVICES_ATAPI_H__
+#define __DEVICES_ATAPI_H__
+
#define ATAPI_PACKET_SIZE 12
#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
* however the device can change that value
/* Disabled until command packet DMA is fixed */
drive_id->dma_ultra = 0x2020; // Ultra_DMA_Mode_5_Selected | Ultra_DMA_Mode_5_Supported;
}
+
+#endif