diff options
Diffstat (limited to 'sys/contrib/dev/hptmv/atapi.h')
-rw-r--r-- | sys/contrib/dev/hptmv/atapi.h | 556 |
1 files changed, 0 insertions, 556 deletions
diff --git a/sys/contrib/dev/hptmv/atapi.h b/sys/contrib/dev/hptmv/atapi.h deleted file mode 100644 index a46c114..0000000 --- a/sys/contrib/dev/hptmv/atapi.h +++ /dev/null @@ -1,556 +0,0 @@ -/* - * Copyright (c) 2003-2004 HighPoint Technologies, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _ATAPI_H_ -#define _ATAPI_H_ - -#pragma pack(1) - -/*************************************************************************** - * IDE IO Register File - ***************************************************************************/ - -/* - * IDE IO Port definition - */ -typedef struct _IDE_REGISTERS_1 { - USHORT Data; /* RW: Data port feature register */ - UCHAR BlockCount; /* RW: Sector count */ - UCHAR BlockNumber; /* RW: Sector number & LBA 0-7 */ - UCHAR CylinderLow; /* RW: Cylinder low & LBA 8-15 */ - UCHAR CylinderHigh; /* RW: Cylinder hign & LBA 16-23 */ - UCHAR DriveSelect; /* RW: Drive/head & LBA 24-27 */ - UCHAR Command; /* RO: Status WR:Command */ -} IDE_REGISTERS_1, *PIDE_REGISTERS_1; - - -/* - * IDE status definitions - */ -#define IDE_STATUS_ERROR 0x01 /* Error Occurred in Execution */ -#define IDE_STATUS_INDEX 0x02 /* is vendor specific */ -#define IDE_STATUS_CORRECTED_ERROR 0x04 /* Corrected Data */ -#define IDE_STATUS_DRQ 0x08 /* Ready to transfer data */ -#define IDE_STATUS_DSC 0x10 /* not defined in ATA-2 */ -#define IDE_STATUS_DWF 0x20 /* Device Fault has been detected */ -#define IDE_STATUS_DRDY 0x40 /* Device Ready to accept command */ -#define IDE_STATUS_IDLE 0x50 /* Device is OK */ -#define IDE_STATUS_BUSY 0x80 /* Device Busy, must wait */ - - -#define IDE_ERROR_BAD_BLOCK 0x80 /* Reserved now */ -#define IDE_ERROR_DATA_ERROR 0x40 /* Uncorreectable Data Error */ -#define IDE_ERROR_MEDIA_CHANGE 0x20 /* Media Changed */ -#define IDE_ERROR_ID_NOT_FOUND 0x10 /* ID Not Found */ -#define IDE_ERROR_MEDIA_CHANGE_REQ 0x08 /* Media Change Requested */ -#define IDE_ERROR_COMMAND_ABORTED 0x04 /* Aborted Command */ -#define IDE_ERROR_TRACK0_NOT_FOUND 0x02 /* Track 0 Not Found */ -#define IDE_ERROR_ADDRESS_NOT_FOUND 0x01 /* Address Mark Not Found */ - - -#define LBA_MODE 0x40 - -/* - * IDE command definitions - */ - -#define IDE_COMMAND_RECALIBRATE 0x10 /* Recalibrate */ -#define IDE_COMMAND_READ 0x20 /* Read Sectors with retry */ -#define IDE_COMMAND_WRITE 0x30 /* Write Sectors with retry */ -#define IDE_COMMAND_VERIFY 0x40 /* Read Verify Sectors with Retry */ -#define IDE_COMMAND_SEEK 0x70 /* Seek */ -#define IDE_COMMAND_SET_DRIVE_PARAMETER 0x91 /* Initialize Device Parmeters */ -#define IDE_COMMAND_GET_MEDIA_STATUS 0xDA -#define IDE_COMMAND_DOOR_LOCK 0xDE /* Door Lock */ -#define IDE_COMMAND_DOOR_UNLOCK 0xDF /* Door Unlock */ -#define IDE_COMMAND_ENABLE_MEDIA_STATUS 0xEF /* Set Features */ -#define IDE_COMMAND_IDENTIFY 0xEC /* Identify Device */ -#define IDE_COMMAND_MEDIA_EJECT 0xED -#define IDE_COMMAND_SET_FEATURES 0xEF /* IDE set features command */ - -#define IDE_COMMAND_FLUSH_CACHE 0xE7 -#define IDE_COMMAND_STANDBY_IMMEDIATE 0xE0 - -#ifndef NOT_SUPPORT_MULTIPLE -#define IDE_COMMAND_READ_MULTIPLE 0xC4 /* Read Multiple */ -#define IDE_COMMAND_WRITE_MULTIPLE 0xC5 /* Write Multiple */ -#define IDE_COMMAND_SET_MULTIPLE 0xC6 /* Set Multiple Mode */ -#endif - -#ifndef NOT_SUPPORT_DMA -#define IDE_COMMAND_DMA_READ 0xc8 /* IDE DMA read command */ -#define IDE_COMMAND_DMA_WRITE 0xca /* IDE DMA write command */ -#endif - -#define IDE_COMMAND_READ_DMA_QUEUE 0xc7 /* IDE read DMA queue command */ -#define IDE_COMMAND_WRITE_DMA_QUEUE 0xcc /* IDE write DMA queue command */ -#define IDE_COMMAND_SERVICE 0xA2 /* IDE service command command */ -#define IDE_COMMAND_NOP 0x00 /* IDE NOP command */ -#define IDE_STATUS_SRV 0x10 -#define IDE_RELEASE_BUS 4 - -/*#define IDE_COMMAND_FLUSH_CACHE_EXT */ -#define IDE_COMMAND_READ_DMA_EXT 0x25 -#define IDE_COMMAND_READ_QUEUE_EXT 0x26 -#define IDE_COMMAND_READ_MULTIPLE_EXT 0x29 -#define IDE_COMMAND_READ_MAX_ADDR 0x27 -#define IDE_COMMAND_READ_EXT 0x24 -#define IDE_COMMAND_VERIFY_EXT 0x42 -#define IDE_COMMAND_SET_MULTIPLE_EXT 0x37 -#define IDE_COMMAND_WRITE_DMA_EXT 0x35 -#define IDE_COMMAND_WRITE_QUEUE_EXT 0x36 -#define IDE_COMMAND_WRITE_EXT 0x34 -#define IDE_COMMAND_WRITE_MULTIPLE_EXT 0x39 - -/* - * IDE_COMMAND_SET_FEATURES - */ -#define FT_USE_ULTRA 0x40 /* Set feature for Ultra DMA */ -#define FT_USE_MWDMA 0x20 /* Set feature for MW DMA */ -#define FT_USE_SWDMA 0x10 /* Set feature for SW DMA */ -#define FT_USE_PIO 0x8 /* Set feature for PIO */ -#define FT_DISABLE_IORDY 0x10 /* Set feature for disabling IORDY */ - -/* - * S.M.A.R.T. commands - */ -#define IDE_COMMAND_SMART 0xB0 -#define SMART_READ_VALUES 0xd0 -#define SMART_READ_THRESHOLDS 0xd1 -#define SMART_AUTOSAVE 0xd2 -#define SMART_SAVE 0xd3 -#define SMART_IMMEDIATE_OFFLINE 0xd4 -#define SMART_READ_LOG_SECTOR 0xd5 -#define SMART_WRITE_LOG_SECTOR 0xd6 -#define SMART_ENABLE 0xd8 -#define SMART_DISABLE 0xd9 -#define SMART_STATUS 0xda -#define SMART_AUTO_OFFLINE 0xdb - - /*************************************************************************** - * IDE Control Register File - ***************************************************************************/ - -typedef struct _IDE_REGISTERS_2 { - UCHAR AlternateStatus; /* RW: device control port */ -} IDE_REGISTERS_2, *PIDE_REGISTERS_2; - - -/* - * IDE drive control definitions - */ -#define IDE_DC_DISABLE_INTERRUPTS 0x02 -#define IDE_DC_RESET_CONTROLLER 0x04 -#define IDE_DC_REENABLE_CONTROLLER 0x00 - -/*************************************************************************** - * MSNS: Removable device - ***************************************************************************/ -/* - * Media syatus - */ -#define MSNS_NO_MEDIA 2 -#define MSNS_MEDIA_CHANGE_REQUEST 8 -#define MSNS_MIDIA_CHANGE 0x20 -#define MSNS_WRITE_PROTECT 0x40 -#define MSNS_READ_PROTECT 0x80 - -/*************************************************************************** - * ATAPI IO Register File - ***************************************************************************/ - -/* - * ATAPI register definition - */ - -typedef struct _ATAPI_REGISTERS_1 { - USHORT Data; - UCHAR InterruptReason; /* Atapi Phase Port */ - UCHAR Unused1; - UCHAR ByteCountLow; /* Byte Count LSB */ - UCHAR ByteCountHigh; /* Byte Count MSB */ - UCHAR DriveSelect; - UCHAR Command; -} ATAPI_REGISTERS_1, *PATAPI_REGISTERS_1; - -/* - * Atapi Error Status - */ -#define IDE_ERROR_END_OF_MEDIA IDE_ERROR_TRACK0_NOT_FOUND -#define IDE_ERROR_ILLEGAL_LENGTH IDE_ERROR_ADDRESS_NOT_FOUND - -/* - * ATAPI interrupt reasons - */ -#define ATAPI_IR_COD 0x01 -#define ATAPI_IR_IO 0x02 - -/* sense key */ -#define ATAPI_SENSE_NO_SENSE 0x00 -#define ATAPI_SENSE_RECOVERED_ERROR 0x01 -#define ATAPI_SENSE_NOT_READY 0x02 -#define ATAPI_SENSE_MEDIUM_ERROR 0x03 -#define ATAPI_SENSE_HARDWARE_ERROR 0x04 -#define ATAPI_SENSE_ILLEGAL_REQUEST 0x05 -#define ATAPI_SENSE_UNIT_ATTENTION 0x06 -#define ATAPI_SENSE_DATA_PROTECT 0x07 -#define ATAPI_SENSE_BLANK_CHECK 0x08 -#define ATAPI_SENSE_UNIQUE 0x09 -#define ATAPI_SENSE_COPY_ABORTED 0x0A -#define ATAPI_SENSE_ABORTED_COMMAND 0x0B -#define ATAPI_SENSE_EQUAL 0x0C -#define ATAPI_SENSE_VOL_OVERFLOW 0x0D -#define ATAPI_SENSE_MISCOMPARE 0x0E -#define ATAPI_SENSE_RESERVED 0x0F - -/* Additional Sense codes */ -#define ATAPI_ASC_NO_SENSE 0x00 -#define ATAPI_ASC_LUN_NOT_READY 0x04 -#define ATAPI_ASC_TRACK_ERROR 0x14 -#define ATAPI_ASC_SEEK_ERROR 0x15 -#define ATAPI_ASC_REC_DATA_NOECC 0x17 -#define ATAPI_ASC_REC_DATA_ECC 0x18 -#define ATAPI_ASC_ILLEGAL_COMMAND 0x20 -#define ATAPI_ASC_ILLEGAL_BLOCK 0x21 -#define ATAPI_ASC_INVALID_CDB 0x24 -#define ATAPI_ASC_INVALID_LUN 0x25 -#define ATAPI_ASC_PROTECT 0x27 -#define ATAPI_ASC_MEDIUM_CHANGED 0x28 -#define ATAPI_ASC_BUS_RESET 0x29 -#define ATAPI_ASC_NO_MEDIA_IN_DEVICE 0x3a -#define ATAPI_ASC_MUSIC_AREA 0xA0 -#define ATAPI_ASC_DATA_AREA 0xA1 -#define ATAPI_ASC_VOLUME_OVERFLOW 0xA7 - -/* - * IDE command definitions ( for ATAPI ) - */ - -#define IDE_COMMAND_ATAPI_RESET 0x08 /* Atapi Software Reset command */ -#define IDE_COMMAND_ATAPI_PACKET 0xA0 /* Atapi Identify command */ -#define IDE_COMMAND_ATAPI_IDENTIFY 0xA1 /* Atapi Packet Command */ - - -/* - * ATAPI command definitions - */ - -#define ATAPI_TEST_UNIT_READY 0x00 -#define ATAPI_REZERO_UNIT 0x01 -#define ATAPI_REQUEST_SENSE 0x03 -#define ATAPI_FORMAT_UNIT6 0x04 -#define ATAPI_FORMAT_UNIT 0x24 -#define ATAPI_INQUIRY 0x12 -#define ATAPI_MODE_SELECT 0x15 -#define ATAPI_MODE_SENSE 0x1A -#define ATAPI_START_STOP_UNIT 0x1B -#define ATAPI_LOAD_UNLOAD 0x1B -#define ATAPI_MEDIUM_REMOVAL 0x1E -#define ATAPI_READ_CAPACITY 0x25 -#define ATAPI_READ 0x28 -#define ATAPI_WRITE 0x2A -#define ATAPI_SEEK 0x2B -#define ATAPI_VERIFY 0x2F -#define ATAPI_READ_DATA_BUFF 0x3C -#define ATAPI_READ_SUB_CHANNEL 0x42 -#define ATAPI_READ_TOC 0x43 -#define ATAPI_READ_HEADER 0x44 -#define ATAPI_GET_CONFIGURATION 0x46 -#define ATAPI_PLAY_AUDIO_MSF 0x47 -#define ATAPI_GET_EVENT_STATUS_NOTIFICATION 0x4A -#define ATAPI_PAUSE_RESUME 0x4B -#define ATAPI_STOP_PLAY_SCAN 0x4E -#define ATAPI_READ_DISK_INFORMATION 0x51 -#define ATAPI_READ_TRACK_INFORMATION 0x52 -#define ATAPI_MODE_SELECT10 0x55 -#define ATAPI_MODE_SENSE10 0x5A -#define ATAPI_CLOSE_TRACK_SESSION 0x5B -#define ATAPI_READ_BUFFER_CAPACITY 0x5C -#define ATAPI_BLANK_COMMAND 0xA1 /*Provide the ability to erase any part of a CD-RW disc.*/ -#define ATAPI_REPORT_KEY 0xA4 -#define ATAPI_PLAY_AUDIO 0xA5 -#define ATAPI_READ12 0xA8 -#define ATAPI_READ_DVD_STRUCTURE 0xAD -#define ATAPI_READ_CD_MSF 0xB9 -#define ATAPI_SET_CD_SPEED 0xBB -#define ATAPI_MECHANISM_STATUS 0xBD -#define ATAPI_READ_CD 0xBE -#define ATAPI_SET_CDRW_SPEED 0xDA /*WindowsXP need*/ - -#define MODE_DSP_WRITE_PROTECT 0x80 - - -/*************************************************************************** - * ATAPI IO Register File - ***************************************************************************/ - - -typedef struct _ATAPI_REGISTERS_2 { - UCHAR AlternateStatus; -} ATAPI_REGISTERS_2, *PATAPI_REGISTERS_2; - - -/*************************************************************************** - * ATAPI packets - ***************************************************************************/ -typedef struct _ATAPI_SENSE_DATA { -#ifdef __BIG_ENDIAN_BITFIELD - UCHAR Valid:1; - UCHAR ErrorCode:7; - UCHAR SegmentNumber; - UCHAR FileMark:1; - UCHAR EndOfMedia:1; - UCHAR IncorrectLength:1; - UCHAR Reserved:1; - UCHAR SenseKey:4; -#else - UCHAR ErrorCode:7; - UCHAR Valid:1; - UCHAR SegmentNumber; - UCHAR SenseKey:4; - UCHAR Reserved:1; - UCHAR IncorrectLength:1; - UCHAR EndOfMedia:1; - UCHAR FileMark:1; -#endif - UCHAR Information[4]; - UCHAR AdditionalSenseLength; - UCHAR CommandSpecificInformation[4]; - UCHAR AdditionalSenseCode; - UCHAR AdditionalSenseCodeQualifier; - UCHAR FieldReplaceableUnitCode; - UCHAR SenseKeySpecific[3]; -} ATAPI_SENSE_DATA, *PATAPI_SENSE_DATA; - -/* - * IDENTIFY data - */ -typedef struct _IDENTIFY_DATA { - USHORT GeneralConfiguration; /* 00 00 */ - USHORT NumberOfCylinders; /* 02 1 */ - USHORT Reserved1; /* 04 2 */ - USHORT NumberOfHeads; /* 06 3 */ - USHORT UnformattedBytesPerTrack; /* 08 4 */ - USHORT UnformattedBytesPerSector; /* 0A 5 */ - USHORT SectorsPerTrack; /* 0C 6 */ - USHORT VendorUnique1[3]; /* 0E 7-9 */ - USHORT SerialNumber[10]; /* 14 10-19 */ - USHORT BufferType; /* 28 20 */ - USHORT BufferSectorSize; /* 2A 21 */ - USHORT NumberOfEccBytes; /* 2C 22 */ - USHORT FirmwareRevision[4]; /* 2E 23-26 */ - USHORT ModelNumber[20]; /* 36 27-46 */ - UCHAR MaximumBlockTransfer; /* 5E 47 */ - UCHAR VendorUnique2; /* 5F */ - USHORT DoubleWordIo; /* 60 48 */ - USHORT Capabilities; /* 62 49 */ - USHORT Reserved2; /* 64 50 */ - UCHAR VendorUnique3; /* 66 51 */ - UCHAR PioCycleTimingMode; /* 67 */ - UCHAR VendorUnique4; /* 68 52 */ - UCHAR DmaCycleTimingMode; /* 69 */ - USHORT TranslationFieldsValid; /* 6A 53 */ - USHORT NumberOfCurrentCylinders; /* 6C 54 */ - USHORT NumberOfCurrentHeads; /* 6E 55 */ - USHORT CurrentSectorsPerTrack; /* 70 56 */ - ULONG CurrentSectorCapacity; /* 72 57-58 */ - USHORT CurrentMultiSectorSetting; /* 76 59 */ - ULONG UserAddressableSectors; /* 78 60-61 */ - UCHAR SingleWordDMASupport; /* 7C 62 */ - UCHAR SingleWordDMAActive; /* 7D */ - UCHAR MultiWordDMASupport; /* 7E 63 */ - UCHAR MultiWordDMAActive; /* 7F */ - UCHAR AdvancedPIOModes; /* 80 64 */ - UCHAR Reserved4; /* 81 */ - USHORT MinimumMWXferCycleTime; /* 82 65 */ - USHORT RecommendedMWXferCycleTime; /* 84 66 */ - USHORT MinimumPIOCycleTime; /* 86 67 */ - USHORT MinimumPIOCycleTimeIORDY; /* 88 68 */ - USHORT Reserved5[2]; /* 8A 69-70 */ - USHORT ReleaseTimeOverlapped; /* 8E 71 */ - USHORT ReleaseTimeServiceCommand; /* 90 72 */ - USHORT MajorRevision; /* 92 73 */ - USHORT MinorRevision; /* 94 74 */ - USHORT MaxQueueDepth; /* 96 75 */ - USHORT SataCapability; /* 76 */ - USHORT Reserved6[9]; /* 98 77-85 */ - USHORT CommandSupport; /* 86 */ - USHORT CommandEnable; /* 87 */ - USHORT UtralDmaMode; /* 88 */ - USHORT Reserved7[11]; /* 89-99 */ - ULONG Lba48BitLow; /* 101-100 */ - ULONG Lba48BitHigh; /* 103-102 */ - USHORT Reserved8[23]; /* 104-126 */ - USHORT SpecialFunctionsEnabled; /* 127 */ - USHORT Reserved9[128]; /* 128-255 */ - -} IDENTIFY_DATA, *PIDENTIFY_DATA; - -typedef struct _CONFIGURATION_IDENTIFY_DATA { - USHORT Revision; - USHORT MWDMAModeSupported; - USHORT UDMAModeSupported; - ULONG MaximumLbaLow; - ULONG MaximumLbaHigh; - USHORT CommandSupport; - USHORT Reserved[247]; - UCHAR Signature; /* 0xA5 */ - UCHAR CheckSum; -} -CONFIGURATION_IDENTIFY_DATA, *PCONFIGURATION_IDENTIFY_DATA; - -/* */ -/* Identify data without the Reserved4. */ -/* */ -typedef struct _IDENTIFY_DATA2 { - USHORT GeneralConfiguration; /* 00 00 */ - USHORT NumberOfCylinders; /* 02 1 */ - USHORT Reserved1; /* 04 2 */ - USHORT NumberOfHeads; /* 06 3 */ - USHORT UnformattedBytesPerTrack; /* 08 4 */ - USHORT UnformattedBytesPerSector; /* 0A 5 */ - USHORT SectorsPerTrack; /* 0C 6 */ - USHORT VendorUnique1[3]; /* 0E 7-9 */ - USHORT SerialNumber[10]; /* 14 10-19 */ - USHORT BufferType; /* 28 20 */ - USHORT BufferSectorSize; /* 2A 21 */ - USHORT NumberOfEccBytes; /* 2C 22 */ - USHORT FirmwareRevision[4]; /* 2E 23-26 */ - USHORT ModelNumber[20]; /* 36 27-46 */ - UCHAR MaximumBlockTransfer; /* 5E 47 */ - UCHAR VendorUnique2; /* 5F */ - USHORT DoubleWordIo; /* 60 48 */ - USHORT Capabilities; /* 62 49 */ - USHORT Reserved2; /* 64 50 */ - UCHAR VendorUnique3; /* 66 51 */ - UCHAR PioCycleTimingMode; /* 67 */ - UCHAR VendorUnique4; /* 68 52 */ - UCHAR DmaCycleTimingMode; /* 69 */ - USHORT TranslationFieldsValid; /* 6A 53 */ - USHORT NumberOfCurrentCylinders; /* 6C 54 */ - USHORT NumberOfCurrentHeads; /* 6E 55 */ - USHORT CurrentSectorsPerTrack; /* 70 56 */ - ULONG CurrentSectorCapacity; /* 72 57-58 */ - USHORT CurrentMultiSectorSetting; /* 59 */ - ULONG UserAddressableSectors; /* 60-61 */ - UCHAR SingleWordDMASupport; /* 62 */ - UCHAR SingleWordDMAActive; - UCHAR MultiWordDMASupport; /* 63 */ - UCHAR MultiWordDMAActive; - UCHAR AdvancedPIOModes; /* 64 */ - UCHAR Reserved4; - USHORT MinimumMWXferCycleTime; /* 65 */ - USHORT RecommendedMWXferCycleTime; /* 66 */ - USHORT MinimumPIOCycleTime; /* 67 */ - USHORT MinimumPIOCycleTimeIORDY; /* 68 */ - USHORT Reserved5[2]; /* 69-70 */ - USHORT ReleaseTimeOverlapped; /* 71 */ - USHORT ReleaseTimeServiceCommand; /* 72 */ - USHORT MajorRevision; /* 73 */ - USHORT MinorRevision; /* 74 */ -/* USHORT Reserved6[14]; // 75-88 */ -} IDENTIFY_DATA2, *PIDENTIFY_DATA2; - -#define IDENTIFY_DATA_SIZE sizeof(IDENTIFY_DATA2) - -/* */ -/* IDENTIFY DMA timing cycle modes. */ -/* */ - -#define IDENTIFY_DMA_CYCLES_MODE_0 0x00 -#define IDENTIFY_DMA_CYCLES_MODE_1 0x01 -#define IDENTIFY_DMA_CYCLES_MODE_2 0x02 - -/* - * Mode definitions - */ -typedef enum _DISK_MODE -{ - IDE_PIO_0 = 0, - IDE_PIO_1, - IDE_PIO_2, - IDE_PIO_3, - IDE_PIO_4, - IDE_MWDMA_0, - IDE_MWDMA_1, - IDE_MWDMA_2, - IDE_UDMA_0, - IDE_UDMA_1, - IDE_UDMA_2, - IDE_UDMA_3, - IDE_UDMA_4, - IDE_UDMA_5, - IDE_UDMA_6, - IDE_UDMA_7, -} DISK_MODE; - -/*************************************************************************** - * IDE Macro - ***************************************************************************/ -#ifndef MAX_LBA_T -#define MAX_LBA_T ((LBA_T)-1) -#endif - -#define SECTOR_TO_BYTE_SHIFT 9 -#define SECTOR_TO_BYTE(x) ((ULONG)(x) << SECTOR_TO_BYTE_SHIFT) - -#define mGetStatus(IOPort2) (UCHAR)InPort(&IOPort2->AlternateStatus) -#define mUnitControl(IOPort2, Value) OutPort(&IOPort2->AlternateStatus,(UCHAR)(Value)) - -#define mGetErrorCode(IOPort) (UCHAR)InPort((PUCHAR)&IOPort->Data+1) -#define mSetFeaturePort(IOPort,x) OutPort((PUCHAR)&IOPort->Data+1, x) -#define mSetBlockCount(IOPort,x) OutPort(&IOPort->BlockCount, x) -#define mGetBlockCount(IOPort) (UCHAR)InPort(&IOPort->BlockCount) -#define mGetInterruptReason(IOPort) (UCHAR)InPort(&IOPort->BlockCount) -#define mSetBlockNumber(IOPort,x) OutPort(&IOPort->BlockNumber, x) -#define mGetBlockNumber(IOPort) (UCHAR)InPort((PUCHAR)&IOPort->BlockNumber) -#define mGetByteLow(IOPort) (UCHAR)InPort(&IOPort->CylinderLow) -#define mSetCylinderLow(IOPort,x) OutPort(&IOPort->CylinderLow, x) -#define mGetByteHigh(IOPort) (UCHAR)InPort(&IOPort->CylinderHigh) -#define mSetCylinderHigh(IOPort,x) OutPort(&IOPort->CylinderHigh, x) -#define mGetBaseStatus(IOPort) (UCHAR)InPort(&IOPort->Command) -#ifdef SUPPORT_HPT601 -#define mSelectUnit(IOPort,UnitId) do {\ - OutPort(&IOPort->DriveSelect, (UCHAR)(UnitId));\ - OutPort(&IOPort->DriveSelect, (UCHAR)(UnitId));\ - } while (0) -#else -#define mSelectUnit(IOPort,UnitId) OutPort(&IOPort->DriveSelect, (UCHAR)(UnitId)) -#endif -#define mGetUnitNumber(IOPort) InPort(&IOPort->DriveSelect) -#define mIssueCommand(IOPort,Cmd) OutPort(&IOPort->Command, (UCHAR)(Cmd)) - -/* - * WDC old disk, don't care right now - */ -#define WDC_MW1_FIX_FLAG_OFFSET 129 -#define WDC_MW1_FIX_FLAG_VALUE 0x00005555 - -#pragma pack() -#endif - - - |