xref: /OK3568_Linux_fs/u-boot/drivers/tpm/tpm_internal.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2015 Google, Inc
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef __tpm_internal_h
8*4882a593Smuzhiyun #define __tpm_internal_h
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun enum {
11*4882a593Smuzhiyun 	TPM_MAX_ORDINAL			= 243,
12*4882a593Smuzhiyun 	TPM_MAX_PROTECTED_ORDINAL	= 12,
13*4882a593Smuzhiyun 	TPM_PROTECTED_ORDINAL_MASK	= 0xff,
14*4882a593Smuzhiyun 	TPM_CMD_COUNT_BYTE		= 2,
15*4882a593Smuzhiyun 	TPM_CMD_ORDINAL_BYTE		= 6,
16*4882a593Smuzhiyun };
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /*
19*4882a593Smuzhiyun  * Array with one entry per ordinal defining the maximum amount
20*4882a593Smuzhiyun  * of time the chip could take to return the result.  The ordinal
21*4882a593Smuzhiyun  * designation of short, medium or long is defined in a table in
22*4882a593Smuzhiyun  * TCG Specification TPM Main Part 2 TPM Structures Section 17. The
23*4882a593Smuzhiyun  * values of the SHORT, MEDIUM, and LONG durations are retrieved
24*4882a593Smuzhiyun  * from the chip during initialization with a call to tpm_get_timeouts.
25*4882a593Smuzhiyun  */
26*4882a593Smuzhiyun static const u8 tpm_protected_ordinal_duration[TPM_MAX_PROTECTED_ORDINAL] = {
27*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 0 */
28*4882a593Smuzhiyun 	TPM_UNDEFINED,
29*4882a593Smuzhiyun 	TPM_UNDEFINED,
30*4882a593Smuzhiyun 	TPM_UNDEFINED,
31*4882a593Smuzhiyun 	TPM_UNDEFINED,
32*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 5 */
33*4882a593Smuzhiyun 	TPM_UNDEFINED,
34*4882a593Smuzhiyun 	TPM_UNDEFINED,
35*4882a593Smuzhiyun 	TPM_UNDEFINED,
36*4882a593Smuzhiyun 	TPM_UNDEFINED,
37*4882a593Smuzhiyun 	TPM_SHORT,		/* 10 */
38*4882a593Smuzhiyun 	TPM_SHORT,
39*4882a593Smuzhiyun };
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun static const u8 tpm_ordinal_duration[TPM_MAX_ORDINAL] = {
42*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 0 */
43*4882a593Smuzhiyun 	TPM_UNDEFINED,
44*4882a593Smuzhiyun 	TPM_UNDEFINED,
45*4882a593Smuzhiyun 	TPM_UNDEFINED,
46*4882a593Smuzhiyun 	TPM_UNDEFINED,
47*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 5 */
48*4882a593Smuzhiyun 	TPM_UNDEFINED,
49*4882a593Smuzhiyun 	TPM_UNDEFINED,
50*4882a593Smuzhiyun 	TPM_UNDEFINED,
51*4882a593Smuzhiyun 	TPM_UNDEFINED,
52*4882a593Smuzhiyun 	TPM_SHORT,		/* 10 */
53*4882a593Smuzhiyun 	TPM_SHORT,
54*4882a593Smuzhiyun 	TPM_MEDIUM,
55*4882a593Smuzhiyun 	TPM_LONG,
56*4882a593Smuzhiyun 	TPM_LONG,
57*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 15 */
58*4882a593Smuzhiyun 	TPM_SHORT,
59*4882a593Smuzhiyun 	TPM_SHORT,
60*4882a593Smuzhiyun 	TPM_MEDIUM,
61*4882a593Smuzhiyun 	TPM_LONG,
62*4882a593Smuzhiyun 	TPM_SHORT,		/* 20 */
63*4882a593Smuzhiyun 	TPM_SHORT,
64*4882a593Smuzhiyun 	TPM_MEDIUM,
65*4882a593Smuzhiyun 	TPM_MEDIUM,
66*4882a593Smuzhiyun 	TPM_MEDIUM,
67*4882a593Smuzhiyun 	TPM_SHORT,		/* 25 */
68*4882a593Smuzhiyun 	TPM_SHORT,
69*4882a593Smuzhiyun 	TPM_MEDIUM,
70*4882a593Smuzhiyun 	TPM_SHORT,
71*4882a593Smuzhiyun 	TPM_SHORT,
72*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 30 */
73*4882a593Smuzhiyun 	TPM_LONG,
74*4882a593Smuzhiyun 	TPM_MEDIUM,
75*4882a593Smuzhiyun 	TPM_SHORT,
76*4882a593Smuzhiyun 	TPM_SHORT,
77*4882a593Smuzhiyun 	TPM_SHORT,		/* 35 */
78*4882a593Smuzhiyun 	TPM_MEDIUM,
79*4882a593Smuzhiyun 	TPM_MEDIUM,
80*4882a593Smuzhiyun 	TPM_UNDEFINED,
81*4882a593Smuzhiyun 	TPM_UNDEFINED,
82*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 40 */
83*4882a593Smuzhiyun 	TPM_LONG,
84*4882a593Smuzhiyun 	TPM_MEDIUM,
85*4882a593Smuzhiyun 	TPM_SHORT,
86*4882a593Smuzhiyun 	TPM_SHORT,
87*4882a593Smuzhiyun 	TPM_SHORT,		/* 45 */
88*4882a593Smuzhiyun 	TPM_SHORT,
89*4882a593Smuzhiyun 	TPM_SHORT,
90*4882a593Smuzhiyun 	TPM_SHORT,
91*4882a593Smuzhiyun 	TPM_LONG,
92*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 50 */
93*4882a593Smuzhiyun 	TPM_MEDIUM,
94*4882a593Smuzhiyun 	TPM_UNDEFINED,
95*4882a593Smuzhiyun 	TPM_UNDEFINED,
96*4882a593Smuzhiyun 	TPM_UNDEFINED,
97*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 55 */
98*4882a593Smuzhiyun 	TPM_UNDEFINED,
99*4882a593Smuzhiyun 	TPM_UNDEFINED,
100*4882a593Smuzhiyun 	TPM_UNDEFINED,
101*4882a593Smuzhiyun 	TPM_UNDEFINED,
102*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 60 */
103*4882a593Smuzhiyun 	TPM_MEDIUM,
104*4882a593Smuzhiyun 	TPM_MEDIUM,
105*4882a593Smuzhiyun 	TPM_SHORT,
106*4882a593Smuzhiyun 	TPM_SHORT,
107*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 65 */
108*4882a593Smuzhiyun 	TPM_UNDEFINED,
109*4882a593Smuzhiyun 	TPM_UNDEFINED,
110*4882a593Smuzhiyun 	TPM_UNDEFINED,
111*4882a593Smuzhiyun 	TPM_UNDEFINED,
112*4882a593Smuzhiyun 	TPM_SHORT,		/* 70 */
113*4882a593Smuzhiyun 	TPM_SHORT,
114*4882a593Smuzhiyun 	TPM_UNDEFINED,
115*4882a593Smuzhiyun 	TPM_UNDEFINED,
116*4882a593Smuzhiyun 	TPM_UNDEFINED,
117*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 75 */
118*4882a593Smuzhiyun 	TPM_UNDEFINED,
119*4882a593Smuzhiyun 	TPM_UNDEFINED,
120*4882a593Smuzhiyun 	TPM_UNDEFINED,
121*4882a593Smuzhiyun 	TPM_UNDEFINED,
122*4882a593Smuzhiyun 	TPM_LONG,		/* 80 */
123*4882a593Smuzhiyun 	TPM_UNDEFINED,
124*4882a593Smuzhiyun 	TPM_MEDIUM,
125*4882a593Smuzhiyun 	TPM_LONG,
126*4882a593Smuzhiyun 	TPM_SHORT,
127*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 85 */
128*4882a593Smuzhiyun 	TPM_UNDEFINED,
129*4882a593Smuzhiyun 	TPM_UNDEFINED,
130*4882a593Smuzhiyun 	TPM_UNDEFINED,
131*4882a593Smuzhiyun 	TPM_UNDEFINED,
132*4882a593Smuzhiyun 	TPM_SHORT,		/* 90 */
133*4882a593Smuzhiyun 	TPM_SHORT,
134*4882a593Smuzhiyun 	TPM_SHORT,
135*4882a593Smuzhiyun 	TPM_SHORT,
136*4882a593Smuzhiyun 	TPM_SHORT,
137*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 95 */
138*4882a593Smuzhiyun 	TPM_UNDEFINED,
139*4882a593Smuzhiyun 	TPM_UNDEFINED,
140*4882a593Smuzhiyun 	TPM_UNDEFINED,
141*4882a593Smuzhiyun 	TPM_UNDEFINED,
142*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 100 */
143*4882a593Smuzhiyun 	TPM_SHORT,
144*4882a593Smuzhiyun 	TPM_SHORT,
145*4882a593Smuzhiyun 	TPM_UNDEFINED,
146*4882a593Smuzhiyun 	TPM_UNDEFINED,
147*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 105 */
148*4882a593Smuzhiyun 	TPM_UNDEFINED,
149*4882a593Smuzhiyun 	TPM_UNDEFINED,
150*4882a593Smuzhiyun 	TPM_UNDEFINED,
151*4882a593Smuzhiyun 	TPM_UNDEFINED,
152*4882a593Smuzhiyun 	TPM_SHORT,		/* 110 */
153*4882a593Smuzhiyun 	TPM_SHORT,
154*4882a593Smuzhiyun 	TPM_SHORT,
155*4882a593Smuzhiyun 	TPM_SHORT,
156*4882a593Smuzhiyun 	TPM_SHORT,
157*4882a593Smuzhiyun 	TPM_SHORT,		/* 115 */
158*4882a593Smuzhiyun 	TPM_SHORT,
159*4882a593Smuzhiyun 	TPM_SHORT,
160*4882a593Smuzhiyun 	TPM_UNDEFINED,
161*4882a593Smuzhiyun 	TPM_UNDEFINED,
162*4882a593Smuzhiyun 	TPM_LONG,		/* 120 */
163*4882a593Smuzhiyun 	TPM_LONG,
164*4882a593Smuzhiyun 	TPM_MEDIUM,
165*4882a593Smuzhiyun 	TPM_UNDEFINED,
166*4882a593Smuzhiyun 	TPM_SHORT,
167*4882a593Smuzhiyun 	TPM_SHORT,		/* 125 */
168*4882a593Smuzhiyun 	TPM_SHORT,
169*4882a593Smuzhiyun 	TPM_LONG,
170*4882a593Smuzhiyun 	TPM_SHORT,
171*4882a593Smuzhiyun 	TPM_SHORT,
172*4882a593Smuzhiyun 	TPM_SHORT,		/* 130 */
173*4882a593Smuzhiyun 	TPM_MEDIUM,
174*4882a593Smuzhiyun 	TPM_UNDEFINED,
175*4882a593Smuzhiyun 	TPM_SHORT,
176*4882a593Smuzhiyun 	TPM_MEDIUM,
177*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 135 */
178*4882a593Smuzhiyun 	TPM_UNDEFINED,
179*4882a593Smuzhiyun 	TPM_UNDEFINED,
180*4882a593Smuzhiyun 	TPM_UNDEFINED,
181*4882a593Smuzhiyun 	TPM_UNDEFINED,
182*4882a593Smuzhiyun 	TPM_SHORT,		/* 140 */
183*4882a593Smuzhiyun 	TPM_SHORT,
184*4882a593Smuzhiyun 	TPM_UNDEFINED,
185*4882a593Smuzhiyun 	TPM_UNDEFINED,
186*4882a593Smuzhiyun 	TPM_UNDEFINED,
187*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 145 */
188*4882a593Smuzhiyun 	TPM_UNDEFINED,
189*4882a593Smuzhiyun 	TPM_UNDEFINED,
190*4882a593Smuzhiyun 	TPM_UNDEFINED,
191*4882a593Smuzhiyun 	TPM_UNDEFINED,
192*4882a593Smuzhiyun 	TPM_SHORT,		/* 150 */
193*4882a593Smuzhiyun 	TPM_MEDIUM,
194*4882a593Smuzhiyun 	TPM_MEDIUM,
195*4882a593Smuzhiyun 	TPM_SHORT,
196*4882a593Smuzhiyun 	TPM_SHORT,
197*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 155 */
198*4882a593Smuzhiyun 	TPM_UNDEFINED,
199*4882a593Smuzhiyun 	TPM_UNDEFINED,
200*4882a593Smuzhiyun 	TPM_UNDEFINED,
201*4882a593Smuzhiyun 	TPM_UNDEFINED,
202*4882a593Smuzhiyun 	TPM_SHORT,		/* 160 */
203*4882a593Smuzhiyun 	TPM_SHORT,
204*4882a593Smuzhiyun 	TPM_SHORT,
205*4882a593Smuzhiyun 	TPM_SHORT,
206*4882a593Smuzhiyun 	TPM_UNDEFINED,
207*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 165 */
208*4882a593Smuzhiyun 	TPM_UNDEFINED,
209*4882a593Smuzhiyun 	TPM_UNDEFINED,
210*4882a593Smuzhiyun 	TPM_UNDEFINED,
211*4882a593Smuzhiyun 	TPM_UNDEFINED,
212*4882a593Smuzhiyun 	TPM_LONG,		/* 170 */
213*4882a593Smuzhiyun 	TPM_UNDEFINED,
214*4882a593Smuzhiyun 	TPM_UNDEFINED,
215*4882a593Smuzhiyun 	TPM_UNDEFINED,
216*4882a593Smuzhiyun 	TPM_UNDEFINED,
217*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 175 */
218*4882a593Smuzhiyun 	TPM_UNDEFINED,
219*4882a593Smuzhiyun 	TPM_UNDEFINED,
220*4882a593Smuzhiyun 	TPM_UNDEFINED,
221*4882a593Smuzhiyun 	TPM_UNDEFINED,
222*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 180 */
223*4882a593Smuzhiyun 	TPM_SHORT,
224*4882a593Smuzhiyun 	TPM_MEDIUM,
225*4882a593Smuzhiyun 	TPM_MEDIUM,
226*4882a593Smuzhiyun 	TPM_MEDIUM,
227*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 185 */
228*4882a593Smuzhiyun 	TPM_SHORT,
229*4882a593Smuzhiyun 	TPM_UNDEFINED,
230*4882a593Smuzhiyun 	TPM_UNDEFINED,
231*4882a593Smuzhiyun 	TPM_UNDEFINED,
232*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 190 */
233*4882a593Smuzhiyun 	TPM_UNDEFINED,
234*4882a593Smuzhiyun 	TPM_UNDEFINED,
235*4882a593Smuzhiyun 	TPM_UNDEFINED,
236*4882a593Smuzhiyun 	TPM_UNDEFINED,
237*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 195 */
238*4882a593Smuzhiyun 	TPM_UNDEFINED,
239*4882a593Smuzhiyun 	TPM_UNDEFINED,
240*4882a593Smuzhiyun 	TPM_UNDEFINED,
241*4882a593Smuzhiyun 	TPM_UNDEFINED,
242*4882a593Smuzhiyun 	TPM_SHORT,		/* 200 */
243*4882a593Smuzhiyun 	TPM_UNDEFINED,
244*4882a593Smuzhiyun 	TPM_UNDEFINED,
245*4882a593Smuzhiyun 	TPM_UNDEFINED,
246*4882a593Smuzhiyun 	TPM_SHORT,
247*4882a593Smuzhiyun 	TPM_SHORT,		/* 205 */
248*4882a593Smuzhiyun 	TPM_SHORT,
249*4882a593Smuzhiyun 	TPM_SHORT,
250*4882a593Smuzhiyun 	TPM_SHORT,
251*4882a593Smuzhiyun 	TPM_SHORT,
252*4882a593Smuzhiyun 	TPM_MEDIUM,		/* 210 */
253*4882a593Smuzhiyun 	TPM_UNDEFINED,
254*4882a593Smuzhiyun 	TPM_MEDIUM,
255*4882a593Smuzhiyun 	TPM_MEDIUM,
256*4882a593Smuzhiyun 	TPM_MEDIUM,
257*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 215 */
258*4882a593Smuzhiyun 	TPM_MEDIUM,
259*4882a593Smuzhiyun 	TPM_UNDEFINED,
260*4882a593Smuzhiyun 	TPM_UNDEFINED,
261*4882a593Smuzhiyun 	TPM_SHORT,
262*4882a593Smuzhiyun 	TPM_SHORT,		/* 220 */
263*4882a593Smuzhiyun 	TPM_SHORT,
264*4882a593Smuzhiyun 	TPM_SHORT,
265*4882a593Smuzhiyun 	TPM_SHORT,
266*4882a593Smuzhiyun 	TPM_SHORT,
267*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 225 */
268*4882a593Smuzhiyun 	TPM_UNDEFINED,
269*4882a593Smuzhiyun 	TPM_UNDEFINED,
270*4882a593Smuzhiyun 	TPM_UNDEFINED,
271*4882a593Smuzhiyun 	TPM_UNDEFINED,
272*4882a593Smuzhiyun 	TPM_SHORT,		/* 230 */
273*4882a593Smuzhiyun 	TPM_LONG,
274*4882a593Smuzhiyun 	TPM_MEDIUM,
275*4882a593Smuzhiyun 	TPM_UNDEFINED,
276*4882a593Smuzhiyun 	TPM_UNDEFINED,
277*4882a593Smuzhiyun 	TPM_UNDEFINED,		/* 235 */
278*4882a593Smuzhiyun 	TPM_UNDEFINED,
279*4882a593Smuzhiyun 	TPM_UNDEFINED,
280*4882a593Smuzhiyun 	TPM_UNDEFINED,
281*4882a593Smuzhiyun 	TPM_UNDEFINED,
282*4882a593Smuzhiyun 	TPM_SHORT,		/* 240 */
283*4882a593Smuzhiyun 	TPM_UNDEFINED,
284*4882a593Smuzhiyun 	TPM_MEDIUM,
285*4882a593Smuzhiyun };
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun #endif
288