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
11enum {
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
24enum {
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
41struct 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