xref: /haiku/src/add-ons/kernel/busses/ata/highpoint_ide_pci/highpoint_ata.h (revision 5797d59f94541e1d3c4c0e4b0373a46c09f43edf)
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