summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/scsi/adapters/pmcs/ata.h
blob: f503d856ff825ec55a3b459a3e38ce121ac412ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */
/*
 * Misc ATA definitions
 */
#ifndef	_ATA_H
#define	_ATA_H
#ifdef	__cplusplus
extern "C" {
#endif

#include "ata8-acs.h"
#include "atapi7v3.h"

/*
 * IDENTIFY Data
 */
typedef struct {
	uint16_t	word0;
	uint16_t	word1;
	uint16_t	word2;
	uint16_t	word3;
	uint16_t	word4;
	uint16_t	word5;
	uint16_t	word6;
	uint16_t	word7;
	uint16_t	word8;
	uint16_t	word9;
	uint16_t	serial_number[10];
	uint16_t	word20;
	uint16_t	word21;
	uint16_t	word22;
	uint16_t	firmware_revision[4];
	uint16_t	model_number[20];
	uint16_t	word47;
	uint16_t	word48;
	uint16_t	word49;
	uint16_t	word50;
	uint16_t	word51;
	uint16_t	word52;
	uint16_t	word53;
	uint16_t	word54;
	uint16_t	word55;
	uint16_t	word56;
	uint16_t	word57;
	uint16_t	word58;
	uint16_t	word59;
	uint16_t	word60;
	uint16_t	word61;
	uint16_t	word62;
	uint16_t	word63;
	uint16_t	word64;
	uint16_t	word65;
	uint16_t	word66;
	uint16_t	word67;
	uint16_t	word68;
	uint16_t	word69;
	uint16_t	word70;
	uint16_t	word71;
	uint16_t	word72;
	uint16_t	word73;
	uint16_t	word74;
	uint16_t	word75;
	uint16_t	word76;
	uint16_t	word77;
	uint16_t	word78;
	uint16_t	word79;
	uint16_t	word80;
	uint16_t	word81;
	uint16_t	word82;
	uint16_t	word83;
	uint16_t	word84;
	uint16_t	word85;
	uint16_t	word86;
	uint16_t	word87;
	uint16_t	word88;
	uint16_t	word89;
	uint16_t	word90;
	uint16_t	word91;
	uint16_t	word92;
	uint16_t	word93;
	uint16_t	word94;
	uint16_t	word95;
	uint16_t	word96;
	uint16_t	word97;
	uint16_t	word98;
	uint16_t	word99;
	uint16_t	word100;
	uint16_t	word101;
	uint16_t	word102;
	uint16_t	word103;
	uint16_t	word104;
	uint16_t	word105;
	uint16_t	word106;
	uint16_t	word107;
	uint16_t	word108;
	uint16_t	word109;
	uint16_t	word110;
	uint16_t	word111;
	uint16_t	word112;
	uint16_t	word113;
	uint16_t	word114;
	uint16_t	word115;
	uint16_t	word116;
	uint16_t	word117;
	uint16_t	word118;
	uint16_t	word119;
	uint16_t	word120;
	uint16_t	word121;
	uint16_t	word122;
	uint16_t	word123;
	uint16_t	word124;
	uint16_t	word125;
	uint16_t	word126;
	uint16_t	word127;
	uint16_t	word128;
	uint16_t	word129;
	uint16_t	word130;
	uint16_t	word131;
	uint16_t	word132;
	uint16_t	word133;
	uint16_t	word134;
	uint16_t	word135;
	uint16_t	word136;
	uint16_t	word137;
	uint16_t	word138;
	uint16_t	word139;
	uint16_t	word140;
	uint16_t	word141;
	uint16_t	word142;
	uint16_t	word143;
	uint16_t	word144;
	uint16_t	word145;
	uint16_t	word146;
	uint16_t	word147;
	uint16_t	word148;
	uint16_t	word149;
	uint16_t	word150;
	uint16_t	word151;
	uint16_t	word152;
	uint16_t	word153;
	uint16_t	word154;
	uint16_t	word155;
	uint16_t	word156;
	uint16_t	word157;
	uint16_t	word158;
	uint16_t	word159;
	uint16_t	word160;
	uint16_t	word161;
	uint16_t	word162;
	uint16_t	word163;
	uint16_t	word164;
	uint16_t	word165;
	uint16_t	word166;
	uint16_t	word167;
	uint16_t	word168;
	uint16_t	word169;
	uint16_t	word170;
	uint16_t	word171;
	uint16_t	word172;
	uint16_t	word173;
	uint16_t	word174;
	uint16_t	word175;
	uint16_t	word176;
	uint16_t	word177;
	uint16_t	word178;
	uint16_t	word179;
	uint16_t	word180;
	uint16_t	word181;
	uint16_t	word182;
	uint16_t	word183;
	uint16_t	word184;
	uint16_t	word185;
	uint16_t	word186;
	uint16_t	word187;
	uint16_t	word188;
	uint16_t	word189;
	uint16_t	word190;
	uint16_t	word191;
	uint16_t	word192;
	uint16_t	word193;
	uint16_t	word194;
	uint16_t	word195;
	uint16_t	word196;
	uint16_t	word197;
	uint16_t	word198;
	uint16_t	word199;
	uint16_t	word200;
	uint16_t	word201;
	uint16_t	word202;
	uint16_t	word203;
	uint16_t	word204;
	uint16_t	word205;
	uint16_t	word206;
	uint16_t	word207;
	uint16_t	word208;
	uint16_t	word209;
	uint16_t	word210;
	uint16_t	word211;
	uint16_t	word212;
	uint16_t	word213;
	uint16_t	word214;
	uint16_t	word215;
	uint16_t	word216;
	uint16_t	word217;
	uint16_t	word218;
	uint16_t	word219;
	uint16_t	word220;
	uint16_t	word221;
	uint16_t	word222;
	uint16_t	word223;
	uint16_t	word224;
	uint16_t	word225;
	uint16_t	word226;
	uint16_t	word227;
	uint16_t	word228;
	uint16_t	word229;
	uint16_t	word230;
	uint16_t	word231;
	uint16_t	word232;
	uint16_t	word233;
	uint16_t	word234;
	uint16_t	word235;
	uint16_t	word236;
	uint16_t	word237;
	uint16_t	word238;
	uint16_t	word239;
	uint16_t	word240;
	uint16_t	word241;
	uint16_t	word242;
	uint16_t	word243;
	uint16_t	word244;
	uint16_t	word245;
	uint16_t	word246;
	uint16_t	word247;
	uint16_t	word248;
	uint16_t	word249;
	uint16_t	word250;
	uint16_t	word251;
	uint16_t	word252;
	uint16_t	word253;
	uint16_t	word254;
	uint16_t	word255;
} ata_identify_t;

#define	LBA_CAPACITY(ati)						\
	((LE_16(ati->word83) & (1 << 10)) == 0)?			\
	(LE_16(ati->word60) | ((LE_16(ati->word61)) << 16)) :		\
	((LE_16(ati->word100)) | ((LE_16(ati->word101)) << 16) |	\
	(((uint64_t)LE_16(ati->word102)) << 32) |			\
	(((uint64_t)LE_16(ati->word103)) << 48))


#ifdef	__cplusplus
}
#endif
#endif	/* _ATA_H */