|
|
| version 1.1, 2004/03/19 03:36:52 | version 1.3, 2005/03/05 11:58:02 |
|---|---|
| Line 1 | Line 1 |
| #if defined(SUPPORT_IDEIO) | #if defined(SUPPORT_IDEIO) |
| // sense key | |
| enum { | |
| ATAPI_SK_NO_SENSE = 0x00, | |
| ATAPI_SK_RECOVERED_ERROR = 0x01, | |
| ATAPI_SK_NOT_READY = 0x02, | |
| ATAPI_SK_MEDIUM_ERROR = 0x03, | |
| ATAPI_SK_HARDWARE_ERROR = 0x04, | |
| ATAPI_SK_ILLEGAL_REQUEST = 0x05, | |
| ATAPI_SK_UNIT_ATTENTIOn = 0x06, | |
| ATAPI_SK_DATA_PROTECT = 0x07, | |
| ATAPI_SK_ABORTED_COMMAND = 0x0b, | |
| ATAPI_SK_MISCOMPARE = 0x0e, | |
| ATAPI_SK_MAX | |
| }; | |
| #define ATAPI_SENSE_KEY_SHIFT 4 | |
| #define ATAPI_SENSE_KEY_MASK 0xf0 | |
| #define ATAPI_SET_SENSE_KEY(drv, sensekey) \ | |
| do { \ | |
| (drv)->error &= ~ATAPI_SENSE_KEY_MASK; \ | |
| (drv)->error |= (sensekey) << ATAPI_SENSE_KEY_SHIFT; \ | |
| (drv)->sk = (sensekey); \ | |
| } while (/*CONSTCOND*/ 0) | |
| // additional sense code (ASC) & ASC Qualifier (ASCQ) | |
| enum { | |
| ATAPI_ASC_NO_ADDITIONAL_SENSE_INFORMATION = 0x0000, | |
| ATAPI_ASC_PARAMETER_LIST_LENGTH_ERROR = 0x001a, | |
| ATAPI_ASC_INVALID_COMMAND_OPERATION_CODE = 0x0020, | |
| ATAPI_ASC_INVALID_FIELD_IN_CDB = 0x0024, | |
| ATAPI_ASC_NOT_READY_TO_READY_TRANSITION = 0x0028, | |
| ATAPI_ASC_POWER_ON_RESET_OR_BUS_DEVICE_RESET_OCCURRED = 0x0029, | |
| ATAPI_ASC_SAVING_PARAMETERS_NOT_SUPPORTED = 0x0039, | |
| ATAPI_ASC_MEDIUM_NOT_PRESENT = 0x003a, | |
| ATAPI_ASC_MEDIUM_NOT_PRESENT_TRAY_CLOSED = 0x013a, | |
| ATAPI_ASC_MEDIUM_NOT_PRESENT_TRAY_OPEN = 0x023a, | |
| ATAPI_ASC_MAX | |
| }; | |
| #ifdef __cplusplus | #ifdef __cplusplus |
| extern "C" { | extern "C" { |
| #endif | #endif |
| void atapicmd_a0(IDEDRV drv); | void atapicmd_a0(IDEDRV drv); |
| void atapi_dataread(IDEDRV drv); | |
| #ifdef __cplusplus | #ifdef __cplusplus |
| } | } |
| #endif | #endif |
| #endif | #endif /* SUPPORT_IDEIO */ |