1 /* 2 * Copyright 2017, Alexander Coers. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _HIGHPOINT_ATA_H 6 #define _HIGHPOINT_ATA_H 7 8 #include <SupportDefs.h> 9 10 11 enum { 12 ATA_MWORD_DMA0 = 0x00, 13 ATA_MWORD_DMA1 = 0x01, 14 ATA_MWORD_DMA2 = 0x02, 15 ATA_ULTRA_DMA0 = 0x10, 16 ATA_ULTRA_DMA1 = 0x11, 17 ATA_ULTRA_DMA2 = 0x12, 18 ATA_ULTRA_DMA3 = 0x13, 19 ATA_ULTRA_DMA4 = 0x14, 20 ATA_ULTRA_DMA5 = 0x15, 21 ATA_ULTRA_DMA6 = 0x16 22 }; 23 24 enum { 25 CFG_HPT366_OLD, 26 CFG_HPT366, 27 CFG_HPT370, 28 CFG_HPT372, 29 CFG_HPT374, 30 CFG_HPTUnknown // no supported option found 31 }; 32 33 #define ATA_HIGHPOINT_ID 0x1103 34 35 #define ATA_HPT366 0x0004 36 #define ATA_HPT372 0x0005 37 #define ATA_HPT302 0x0006 38 #define ATA_HPT371 0x0007 39 #define ATA_HPT374 0x0008 40 41 struct HPT_controller_info { 42 uint16 deviceID; 43 uint8 revisionID; 44 uint8 function; 45 bool configuredDMA; // is DMA already configured 46 int configOption; // some HPT devices need different settings 47 uint8 maxDMA; // see enum 48 }; 49 50 51 #endif // _HIGHPOINT_ATA_H 52