[SCSI] qla2xxx: Validate mid-layer 'underflow' during check-condition handling.
[linux-2.6] / drivers / scsi / aic7xxx / aic79xx_seq.h_shipped
1 /*
2  * DO NOT EDIT - This file is automatically generated
3  *               from the following source files:
4  *
5  * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#120 $
6  * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $
7  */
8 static uint8_t seqprog[] = {
9         0xff, 0x02, 0x06, 0x78,
10         0x00, 0xea, 0x6e, 0x59,
11         0x01, 0xea, 0x04, 0x30,
12         0xff, 0x04, 0x0c, 0x78,
13         0x19, 0xea, 0x6e, 0x59,
14         0x19, 0xea, 0x04, 0x00,
15         0x33, 0xea, 0x68, 0x59,
16         0x33, 0xea, 0x00, 0x00,
17         0x60, 0x3a, 0x3a, 0x68,
18         0x04, 0x4d, 0x35, 0x78,
19         0x01, 0x34, 0xc1, 0x31,
20         0x00, 0x32, 0x21, 0x60,
21         0x01, 0x35, 0xc1, 0x31,
22         0x00, 0x33, 0x21, 0x60,
23         0xfb, 0x4d, 0x9b, 0x0a,
24         0x00, 0xe2, 0x34, 0x40,
25         0x50, 0x4b, 0x3a, 0x68,
26         0xff, 0x31, 0x3b, 0x70,
27         0x02, 0x30, 0x51, 0x31,
28         0xff, 0x8d, 0x2d, 0x70,
29         0x02, 0x8c, 0x51, 0x31,
30         0xff, 0x8d, 0x29, 0x60,
31         0x02, 0x28, 0x19, 0x33,
32         0x02, 0x30, 0x51, 0x32,
33         0xff, 0xea, 0x62, 0x02,
34         0x00, 0xe2, 0x3a, 0x40,
35         0xff, 0x21, 0x3b, 0x70,
36         0x40, 0x4b, 0xb4, 0x69,
37         0x00, 0xe2, 0x72, 0x59,
38         0x40, 0x4b, 0xb4, 0x69,
39         0x20, 0x4b, 0xa0, 0x69,
40         0xfc, 0x42, 0x44, 0x78,
41         0x10, 0x40, 0x44, 0x78,
42         0x00, 0xe2, 0x10, 0x5e,
43         0x20, 0x4d, 0x48, 0x78,
44         0x00, 0xe2, 0x10, 0x5e,
45         0x30, 0x3f, 0xc0, 0x09,
46         0x30, 0xe0, 0x50, 0x60,
47         0x7f, 0x4a, 0x94, 0x08,
48         0x00, 0xe2, 0x52, 0x40,
49         0xc0, 0x4a, 0x94, 0x00,
50         0x00, 0xe2, 0x5e, 0x58,
51         0x00, 0xe2, 0x76, 0x58,
52         0x00, 0xe2, 0x86, 0x58,
53         0x00, 0xe2, 0x06, 0x40,
54         0x33, 0xea, 0x68, 0x59,
55         0x33, 0xea, 0x00, 0x00,
56         0x01, 0x52, 0x84, 0x78,
57         0x02, 0x58, 0x50, 0x31,
58         0xff, 0xea, 0x10, 0x0b,
59         0xff, 0x97, 0x6f, 0x78,
60         0x50, 0x4b, 0x6a, 0x68,
61         0xbf, 0x3a, 0x74, 0x08,
62         0x14, 0xea, 0x6e, 0x59,
63         0x14, 0xea, 0x04, 0x00,
64         0x08, 0x92, 0x25, 0x03,
65         0xff, 0x90, 0x5f, 0x68,
66         0x00, 0xe2, 0x8a, 0x5b,
67         0x00, 0xe2, 0x5e, 0x40,
68         0x00, 0xea, 0x68, 0x59,
69         0x01, 0xea, 0x00, 0x30,
70         0x80, 0xf9, 0x7e, 0x68,
71         0x00, 0xe2, 0x66, 0x59,
72         0x11, 0xea, 0x68, 0x59,
73         0x11, 0xea, 0x00, 0x00,
74         0x80, 0xf9, 0x66, 0x79,
75         0xff, 0xea, 0xd4, 0x0d,
76         0x22, 0xea, 0x68, 0x59,
77         0x22, 0xea, 0x00, 0x00,
78         0x10, 0x16, 0x90, 0x78,
79         0x10, 0x16, 0x2c, 0x00,
80         0x01, 0x0b, 0xae, 0x32,
81         0x18, 0xad, 0x1c, 0x79,
82         0x04, 0xad, 0xdc, 0x68,
83         0x80, 0xad, 0x84, 0x78,
84         0x10, 0xad, 0xaa, 0x78,
85         0xe7, 0xad, 0x5a, 0x09,
86         0x02, 0x8c, 0x59, 0x32,
87         0xff, 0x8d, 0xa1, 0x60,
88         0xff, 0xea, 0x5e, 0x02,
89         0xff, 0x88, 0xa7, 0x78,
90         0x02, 0x30, 0x19, 0x33,
91         0x02, 0xa8, 0x60, 0x36,
92         0x02, 0x28, 0x19, 0x33,
93         0x02, 0xa8, 0x50, 0x36,
94         0xe7, 0xad, 0x5a, 0x09,
95         0x00, 0xe2, 0xb8, 0x58,
96         0xff, 0xea, 0x56, 0x02,
97         0x04, 0x7c, 0x88, 0x32,
98         0x20, 0x16, 0x84, 0x78,
99         0x04, 0x40, 0x89, 0x32,
100         0x80, 0x3d, 0x7b, 0x16,
101         0xff, 0x2d, 0xc7, 0x60,
102         0xff, 0x29, 0xc7, 0x60,
103         0x40, 0x57, 0xd7, 0x78,
104         0xff, 0x55, 0xc7, 0x68,
105         0xff, 0x53, 0xc1, 0x19,
106         0x00, 0x54, 0xd5, 0x19,
107         0x00, 0xe2, 0xd6, 0x50,
108         0x01, 0x52, 0xc1, 0x31,
109         0x00, 0x56, 0xd5, 0x19,
110         0x00, 0xe2, 0xd6, 0x48,
111         0x80, 0x18, 0x84, 0x78,
112         0x02, 0x50, 0x1d, 0x30,
113         0x10, 0xea, 0x18, 0x00,
114         0x60, 0x18, 0x30, 0x00,
115         0x7f, 0x18, 0x30, 0x0c,
116         0x02, 0xea, 0x02, 0x00,
117         0xff, 0xea, 0xac, 0x0a,
118         0x80, 0x18, 0x30, 0x04,
119         0x40, 0xad, 0x84, 0x78,
120         0xe7, 0xad, 0x5a, 0x09,
121         0xff, 0xea, 0xc0, 0x09,
122         0x01, 0x54, 0xa9, 0x1a,
123         0x00, 0x55, 0xab, 0x22,
124         0x01, 0x94, 0x6d, 0x33,
125         0xff, 0xea, 0x20, 0x0b,
126         0x04, 0xac, 0x49, 0x32,
127         0xff, 0xea, 0x5a, 0x03,
128         0xff, 0xea, 0x5e, 0x03,
129         0x01, 0x10, 0xd4, 0x31,
130         0x02, 0xa8, 0x40, 0x31,
131         0x01, 0x92, 0xc1, 0x31,
132         0x3d, 0x93, 0xc5, 0x29,
133         0xfe, 0xe2, 0xc4, 0x09,
134         0x01, 0xea, 0xc6, 0x01,
135         0x02, 0xe2, 0xc8, 0x31,
136         0x02, 0xec, 0x50, 0x31,
137         0x02, 0xa0, 0xda, 0x31,
138         0xff, 0xa9, 0x10, 0x71,
139         0x10, 0xe0, 0x0e, 0x79,
140         0x10, 0x92, 0x0f, 0x79,
141         0x01, 0x4d, 0x9b, 0x02,
142         0x02, 0xa0, 0xc0, 0x32,
143         0x01, 0x93, 0xc5, 0x36,
144         0x02, 0xa0, 0x58, 0x37,
145         0xff, 0x21, 0x19, 0x71,
146         0x02, 0x22, 0x51, 0x31,
147         0x02, 0xa0, 0x5c, 0x33,
148         0x02, 0xa0, 0x44, 0x36,
149         0x02, 0xa0, 0x40, 0x32,
150         0x02, 0xa0, 0x44, 0x36,
151         0x05, 0x4d, 0x21, 0x69,
152         0x40, 0x16, 0x52, 0x69,
153         0xff, 0x2d, 0x57, 0x61,
154         0xff, 0x29, 0x85, 0x70,
155         0x02, 0x28, 0x55, 0x32,
156         0x01, 0xea, 0x5a, 0x01,
157         0x04, 0x44, 0xf9, 0x30,
158         0x01, 0x44, 0xc1, 0x31,
159         0x02, 0x28, 0x51, 0x31,
160         0x02, 0xa8, 0x60, 0x31,
161         0x01, 0xa4, 0x61, 0x31,
162         0x01, 0x3d, 0x61, 0x31,
163         0x01, 0x14, 0xd4, 0x31,
164         0x01, 0x56, 0xad, 0x1a,
165         0xff, 0x54, 0xa9, 0x1a,
166         0xff, 0x55, 0xab, 0x22,
167         0xff, 0x8d, 0x4b, 0x71,
168         0x80, 0xac, 0x4a, 0x71,
169         0x20, 0x16, 0x4a, 0x69,
170         0x00, 0xac, 0xc4, 0x19,
171         0x07, 0xe2, 0x4a, 0xf9,
172         0x02, 0x8c, 0x51, 0x31,
173         0x00, 0xe2, 0x2e, 0x41,
174         0x01, 0xac, 0x08, 0x31,
175         0x09, 0xea, 0x5a, 0x01,
176         0x02, 0x8c, 0x51, 0x32,
177         0xff, 0xea, 0x1a, 0x07,
178         0x04, 0x24, 0xf9, 0x30,
179         0x1d, 0xea, 0x5c, 0x41,
180         0x02, 0x2c, 0x51, 0x31,
181         0x04, 0xa8, 0xf9, 0x30,
182         0x19, 0xea, 0x5c, 0x41,
183         0x06, 0xea, 0x08, 0x81,
184         0x01, 0xe2, 0x5a, 0x35,
185         0x02, 0xf2, 0xf0, 0x31,
186         0xff, 0xea, 0xd4, 0x0d,
187         0x02, 0xf2, 0xf0, 0x31,
188         0x02, 0xf8, 0xe4, 0x35,
189         0x80, 0xea, 0xb2, 0x01,
190         0x01, 0xe2, 0x00, 0x30,
191         0xff, 0xea, 0xb2, 0x0d,
192         0x01, 0xe2, 0x04, 0x30,
193         0x01, 0xea, 0x04, 0x34,
194         0x02, 0x20, 0xbd, 0x30,
195         0x02, 0x20, 0xb9, 0x30,
196         0x02, 0x20, 0x51, 0x31,
197         0x4c, 0x93, 0xd7, 0x28,
198         0x10, 0x92, 0x81, 0x79,
199         0x01, 0x6b, 0xc0, 0x30,
200         0x02, 0x64, 0xc8, 0x00,
201         0x40, 0x3a, 0x74, 0x04,
202         0x00, 0xe2, 0x76, 0x58,
203         0x33, 0xea, 0x68, 0x59,
204         0x33, 0xea, 0x00, 0x00,
205         0x30, 0x3f, 0xc0, 0x09,
206         0x30, 0xe0, 0x82, 0x61,
207         0x20, 0x3f, 0x98, 0x69,
208         0x10, 0x3f, 0x82, 0x79,
209         0x02, 0xea, 0x7e, 0x00,
210         0x00, 0xea, 0x68, 0x59,
211         0x01, 0xea, 0x00, 0x30,
212         0x02, 0x4e, 0x51, 0x35,
213         0x01, 0xea, 0x7e, 0x00,
214         0x11, 0xea, 0x68, 0x59,
215         0x11, 0xea, 0x00, 0x00,
216         0x02, 0x4e, 0x51, 0x35,
217         0xc0, 0x4a, 0x94, 0x00,
218         0x04, 0x41, 0xa6, 0x79,
219         0x08, 0xea, 0x98, 0x00,
220         0x08, 0x57, 0xae, 0x00,
221         0x08, 0x3c, 0x78, 0x00,
222         0xf0, 0x49, 0x74, 0x0a,
223         0x0f, 0x67, 0xc0, 0x09,
224         0x00, 0x3a, 0x75, 0x02,
225         0x20, 0xea, 0x96, 0x00,
226         0x00, 0xe2, 0x28, 0x42,
227         0xc0, 0x4a, 0x94, 0x00,
228         0x40, 0x3a, 0xd2, 0x69,
229         0x02, 0x55, 0x06, 0x68,
230         0x02, 0x56, 0xd2, 0x69,
231         0xff, 0x5b, 0xd2, 0x61,
232         0x02, 0x20, 0x51, 0x31,
233         0x80, 0xea, 0xb2, 0x01,
234         0x44, 0xea, 0x00, 0x00,
235         0x01, 0x33, 0xc0, 0x31,
236         0x33, 0xea, 0x00, 0x00,
237         0xff, 0xea, 0xb2, 0x09,
238         0xff, 0xe0, 0xc0, 0x19,
239         0xff, 0xe0, 0xd4, 0x79,
240         0x02, 0xac, 0x51, 0x31,
241         0x00, 0xe2, 0xca, 0x41,
242         0x02, 0x5e, 0x50, 0x31,
243         0x02, 0xa8, 0xb8, 0x30,
244         0x02, 0x5c, 0x50, 0x31,
245         0xff, 0xad, 0xe5, 0x71,
246         0x02, 0xac, 0x41, 0x31,
247         0x02, 0x22, 0x51, 0x31,
248         0x02, 0xa0, 0x5c, 0x33,
249         0x02, 0xa0, 0x44, 0x32,
250         0x00, 0xe2, 0xf8, 0x41,
251         0x01, 0x4d, 0xf1, 0x79,
252         0x01, 0x62, 0xc1, 0x31,
253         0x00, 0x93, 0xf1, 0x61,
254         0xfe, 0x4d, 0x9b, 0x0a,
255         0x02, 0x60, 0x41, 0x31,
256         0x00, 0xe2, 0xdc, 0x41,
257         0x3d, 0x93, 0xc9, 0x29,
258         0x01, 0xe4, 0xc8, 0x01,
259         0x01, 0xea, 0xca, 0x01,
260         0xff, 0xea, 0xda, 0x01,
261         0x02, 0x20, 0x51, 0x31,
262         0x02, 0xae, 0x41, 0x32,
263         0xff, 0x21, 0x01, 0x62,
264         0xff, 0xea, 0x46, 0x02,
265         0x02, 0x5c, 0x50, 0x31,
266         0x40, 0xea, 0x96, 0x00,
267         0x02, 0x56, 0x20, 0x6e,
268         0x01, 0x55, 0x20, 0x6e,
269         0x10, 0x92, 0x0d, 0x7a,
270         0x10, 0x40, 0x16, 0x6a,
271         0x01, 0x56, 0x16, 0x7a,
272         0xff, 0x97, 0x07, 0x78,
273         0x13, 0xea, 0x6e, 0x59,
274         0x13, 0xea, 0x04, 0x00,
275         0x00, 0xe2, 0x06, 0x40,
276         0xbf, 0x3a, 0x74, 0x08,
277         0x04, 0x41, 0x1c, 0x7a,
278         0x08, 0xea, 0x98, 0x00,
279         0x08, 0x57, 0xae, 0x00,
280         0x01, 0x93, 0x75, 0x32,
281         0x01, 0x94, 0x77, 0x32,
282         0x40, 0xea, 0x72, 0x02,
283         0x08, 0x3c, 0x78, 0x00,
284         0x80, 0xea, 0x6e, 0x02,
285         0x00, 0xe2, 0xf6, 0x5b,
286         0x01, 0x3c, 0xc1, 0x31,
287         0x9f, 0xe0, 0x98, 0x7c,
288         0x80, 0xe0, 0x3c, 0x72,
289         0xa0, 0xe0, 0x78, 0x72,
290         0xc0, 0xe0, 0x6e, 0x72,
291         0xe0, 0xe0, 0xa8, 0x72,
292         0x01, 0xea, 0x6e, 0x59,
293         0x01, 0xea, 0x04, 0x00,
294         0x00, 0xe2, 0x28, 0x42,
295         0x80, 0x39, 0x43, 0x7a,
296         0x03, 0xea, 0x6e, 0x59,
297         0x03, 0xea, 0x04, 0x00,
298         0xee, 0x00, 0x4a, 0x6a,
299         0x05, 0xea, 0xb4, 0x00,
300         0x33, 0xea, 0x68, 0x59,
301         0x33, 0xea, 0x00, 0x00,
302         0x02, 0xa8, 0x9c, 0x32,
303         0x00, 0xe2, 0x88, 0x59,
304         0xef, 0x96, 0xd5, 0x19,
305         0x00, 0xe2, 0x5a, 0x52,
306         0x09, 0x80, 0xe1, 0x30,
307         0x02, 0xea, 0x36, 0x00,
308         0xa8, 0xea, 0x32, 0x00,
309         0x00, 0xe2, 0x60, 0x42,
310         0x01, 0x96, 0xd1, 0x30,
311         0x10, 0x80, 0x89, 0x31,
312         0x20, 0xea, 0x32, 0x00,
313         0xbf, 0x39, 0x73, 0x0a,
314         0x10, 0x4c, 0x6a, 0x6a,
315         0x20, 0x19, 0x62, 0x6a,
316         0x20, 0x19, 0x66, 0x6a,
317         0x02, 0x4d, 0x28, 0x6a,
318         0x40, 0x39, 0x73, 0x02,
319         0x00, 0xe2, 0x28, 0x42,
320         0x80, 0x39, 0xe9, 0x6a,
321         0x01, 0x44, 0x10, 0x33,
322         0x08, 0x92, 0x25, 0x03,
323         0x00, 0xe2, 0x28, 0x42,
324         0x10, 0xea, 0x80, 0x00,
325         0x01, 0x37, 0xc5, 0x31,
326         0x80, 0xe2, 0x94, 0x62,
327         0x10, 0x92, 0xb9, 0x6a,
328         0xc0, 0x94, 0xc5, 0x01,
329         0x40, 0x92, 0x85, 0x6a,
330         0xbf, 0xe2, 0xc4, 0x09,
331         0x20, 0x92, 0x99, 0x7a,
332         0x01, 0xe2, 0x88, 0x30,
333         0x00, 0xe2, 0xf6, 0x5b,
334         0xa0, 0x3c, 0xa1, 0x62,
335         0x23, 0x92, 0x89, 0x08,
336         0x00, 0xe2, 0xf6, 0x5b,
337         0xa0, 0x3c, 0xa1, 0x62,
338         0x00, 0xa8, 0x98, 0x42,
339         0xff, 0xe2, 0x98, 0x62,
340         0x00, 0xe2, 0xb8, 0x42,
341         0x40, 0xea, 0x98, 0x00,
342         0x01, 0xe2, 0x88, 0x30,
343         0x00, 0xe2, 0xf6, 0x5b,
344         0xa0, 0x3c, 0x77, 0x72,
345         0x40, 0xea, 0x98, 0x00,
346         0x01, 0x37, 0x95, 0x32,
347         0x08, 0xea, 0x6e, 0x02,
348         0x00, 0xe2, 0x28, 0x42,
349         0xe0, 0xea, 0x12, 0x5c,
350         0x80, 0xe0, 0xf4, 0x6a,
351         0x04, 0xe0, 0xa6, 0x73,
352         0x02, 0xe0, 0xd8, 0x73,
353         0x00, 0xea, 0x52, 0x73,
354         0x03, 0xe0, 0xe8, 0x73,
355         0x23, 0xe0, 0xca, 0x72,
356         0x08, 0xe0, 0xf0, 0x72,
357         0x00, 0xe2, 0xf6, 0x5b,
358         0x07, 0xea, 0x6e, 0x59,
359         0x07, 0xea, 0x04, 0x00,
360         0x08, 0x48, 0x29, 0x72,
361         0x04, 0x48, 0xc7, 0x62,
362         0x01, 0x49, 0x89, 0x30,
363         0x00, 0xe2, 0xb8, 0x42,
364         0x01, 0x44, 0xd4, 0x31,
365         0x00, 0xe2, 0xb8, 0x42,
366         0x01, 0x00, 0x6c, 0x32,
367         0x33, 0xea, 0x68, 0x59,
368         0x33, 0xea, 0x00, 0x00,
369         0x4c, 0x3a, 0xc1, 0x28,
370         0x01, 0x64, 0xc0, 0x31,
371         0x00, 0x36, 0x69, 0x59,
372         0x01, 0x36, 0x01, 0x30,
373         0x01, 0xe0, 0xee, 0x7a,
374         0xa0, 0xea, 0x08, 0x5c,
375         0x01, 0xa0, 0xee, 0x62,
376         0x01, 0x84, 0xe3, 0x7a,
377         0x01, 0x95, 0xf1, 0x6a,
378         0x05, 0xea, 0x6e, 0x59,
379         0x05, 0xea, 0x04, 0x00,
380         0x00, 0xe2, 0xf0, 0x42,
381         0x03, 0xea, 0x6e, 0x59,
382         0x03, 0xea, 0x04, 0x00,
383         0x00, 0xe2, 0xf0, 0x42,
384         0x07, 0xea, 0x1a, 0x5c,
385         0x01, 0x44, 0xd4, 0x31,
386         0x00, 0xe2, 0x28, 0x42,
387         0x3f, 0xe0, 0x76, 0x0a,
388         0xc0, 0x3a, 0xc1, 0x09,
389         0x00, 0x3b, 0x51, 0x01,
390         0xff, 0xea, 0x52, 0x09,
391         0x30, 0x3a, 0xc5, 0x09,
392         0x3d, 0xe2, 0xc4, 0x29,
393         0xb8, 0xe2, 0xc4, 0x19,
394         0x01, 0xea, 0xc6, 0x01,
395         0x02, 0xe2, 0xc8, 0x31,
396         0x02, 0xec, 0x40, 0x31,
397         0xff, 0xa1, 0x10, 0x73,
398         0x02, 0xe8, 0xda, 0x31,
399         0x02, 0xa0, 0x50, 0x31,
400         0x00, 0xe2, 0x32, 0x43,
401         0x80, 0x39, 0x73, 0x02,
402         0x01, 0x44, 0xd4, 0x31,
403         0x00, 0xe2, 0xf6, 0x5b,
404         0x01, 0x39, 0x73, 0x02,
405         0xe0, 0x3c, 0x4d, 0x63,
406         0x02, 0x39, 0x73, 0x02,
407         0x20, 0x46, 0x46, 0x63,
408         0xff, 0xea, 0x52, 0x09,
409         0xa8, 0xea, 0x08, 0x5c,
410         0x04, 0x92, 0x2d, 0x7b,
411         0x01, 0x3a, 0xc1, 0x31,
412         0x00, 0x93, 0x2d, 0x63,
413         0x01, 0x3b, 0xc1, 0x31,
414         0x00, 0x94, 0x37, 0x73,
415         0x01, 0xa9, 0x52, 0x11,
416         0xff, 0xa9, 0x22, 0x6b,
417         0x00, 0xe2, 0x46, 0x43,
418         0x10, 0x39, 0x73, 0x02,
419         0x04, 0x92, 0x47, 0x7b,
420         0xfb, 0x92, 0x25, 0x0b,
421         0xff, 0xea, 0x72, 0x0a,
422         0x01, 0xa4, 0x41, 0x6b,
423         0x02, 0xa8, 0x9c, 0x32,
424         0x00, 0xe2, 0x88, 0x59,
425         0x10, 0x92, 0xf1, 0x7a,
426         0xff, 0xea, 0x1a, 0x5c,
427         0x00, 0xe2, 0xf0, 0x42,
428         0x04, 0xea, 0x6e, 0x59,
429         0x04, 0xea, 0x04, 0x00,
430         0x00, 0xe2, 0xf0, 0x42,
431         0x04, 0xea, 0x6e, 0x59,
432         0x04, 0xea, 0x04, 0x00,
433         0x00, 0xe2, 0x28, 0x42,
434         0x08, 0x92, 0xe9, 0x7a,
435         0xc0, 0x39, 0x5d, 0x7b,
436         0x80, 0x39, 0xe9, 0x6a,
437         0xff, 0x88, 0x5d, 0x6b,
438         0x40, 0x39, 0xe9, 0x6a,
439         0x10, 0x92, 0x63, 0x7b,
440         0x0a, 0xea, 0x6e, 0x59,
441         0x0a, 0xea, 0x04, 0x00,
442         0x00, 0xe2, 0x82, 0x5b,
443         0x00, 0xe2, 0xc2, 0x43,
444         0x50, 0x4b, 0x6a, 0x6b,
445         0xbf, 0x3a, 0x74, 0x08,
446         0x01, 0xe0, 0xf4, 0x31,
447         0xff, 0xea, 0xc0, 0x09,
448         0x01, 0x32, 0x65, 0x1a,
449         0x00, 0x33, 0x67, 0x22,
450         0x04, 0x4d, 0x9b, 0x02,
451         0x01, 0xfa, 0xc0, 0x35,
452         0x02, 0xa8, 0x90, 0x32,
453         0x02, 0xea, 0xb4, 0x00,
454         0x33, 0xea, 0x68, 0x59,
455         0x33, 0xea, 0x00, 0x00,
456         0x02, 0x48, 0x51, 0x31,
457         0xff, 0x90, 0x85, 0x68,
458         0xff, 0x88, 0x8f, 0x6b,
459         0x01, 0xa4, 0x8b, 0x6b,
460         0x02, 0xa4, 0x93, 0x6b,
461         0x01, 0x84, 0x93, 0x7b,
462         0x02, 0x28, 0x19, 0x33,
463         0x02, 0xa8, 0x50, 0x36,
464         0xff, 0x88, 0x93, 0x73,
465         0x00, 0xe2, 0x66, 0x5b,
466         0x02, 0xa8, 0x20, 0x33,
467         0x04, 0xa4, 0x49, 0x03,
468         0xff, 0xea, 0x1a, 0x03,
469         0xff, 0x2d, 0x9f, 0x63,
470         0x02, 0xa8, 0x58, 0x32,
471         0x02, 0xa8, 0x5c, 0x36,
472         0x02, 0xa8, 0x40, 0x31,
473         0x02, 0x2e, 0x51, 0x31,
474         0x02, 0xa0, 0x18, 0x33,
475         0x02, 0xa0, 0x5c, 0x36,
476         0xc0, 0x39, 0xe9, 0x6a,
477         0x04, 0x92, 0x25, 0x03,
478         0x20, 0x92, 0xc3, 0x6b,
479         0x02, 0xa8, 0x40, 0x31,
480         0xc0, 0x3a, 0xc1, 0x09,
481         0x00, 0x3b, 0x51, 0x01,
482         0xff, 0xea, 0x52, 0x09,
483         0x30, 0x3a, 0xc5, 0x09,
484         0x3d, 0xe2, 0xc4, 0x29,
485         0xb8, 0xe2, 0xc4, 0x19,
486         0x01, 0xea, 0xc6, 0x01,
487         0x02, 0xe2, 0xc8, 0x31,
488         0x02, 0xa0, 0xda, 0x31,
489         0x02, 0xa0, 0x50, 0x31,
490         0xf7, 0x57, 0xae, 0x08,
491         0x08, 0xea, 0x98, 0x00,
492         0x01, 0x44, 0xd4, 0x31,
493         0xee, 0x00, 0xcc, 0x6b,
494         0x02, 0xea, 0xb4, 0x00,
495         0xc0, 0xea, 0x72, 0x02,
496         0x09, 0x4c, 0xce, 0x7b,
497         0x01, 0xea, 0x78, 0x02,
498         0x08, 0x4c, 0x06, 0x68,
499         0x0b, 0xea, 0x6e, 0x59,
500         0x0b, 0xea, 0x04, 0x00,
501         0x01, 0x44, 0xd4, 0x31,
502         0x20, 0x39, 0x29, 0x7a,
503         0x00, 0xe2, 0xe0, 0x5b,
504         0x00, 0xe2, 0x28, 0x42,
505         0x01, 0x84, 0xe5, 0x7b,
506         0x01, 0xa4, 0x49, 0x07,
507         0x08, 0x60, 0x30, 0x33,
508         0x08, 0x80, 0x41, 0x37,
509         0xdf, 0x39, 0x73, 0x0a,
510         0xee, 0x00, 0xf2, 0x6b,
511         0x05, 0xea, 0xb4, 0x00,
512         0x33, 0xea, 0x68, 0x59,
513         0x33, 0xea, 0x00, 0x00,
514         0x00, 0xe2, 0x88, 0x59,
515         0x00, 0xe2, 0xf0, 0x42,
516         0xff, 0x42, 0x02, 0x6c,
517         0x01, 0x41, 0xf6, 0x6b,
518         0x02, 0x41, 0xf6, 0x7b,
519         0xff, 0x42, 0x02, 0x6c,
520         0x01, 0x41, 0xf6, 0x6b,
521         0x02, 0x41, 0xf6, 0x7b,
522         0xff, 0x42, 0x02, 0x7c,
523         0x04, 0x4c, 0xf6, 0x6b,
524         0xe0, 0x41, 0x78, 0x0e,
525         0x01, 0x44, 0xd4, 0x31,
526         0xff, 0x42, 0x0a, 0x7c,
527         0x04, 0x4c, 0x0a, 0x6c,
528         0xe0, 0x41, 0x78, 0x0a,
529         0xe0, 0x3c, 0x29, 0x62,
530         0xff, 0xea, 0xca, 0x09,
531         0x01, 0xe2, 0xc8, 0x31,
532         0x01, 0x46, 0xda, 0x35,
533         0x01, 0x44, 0xd4, 0x35,
534         0x10, 0xea, 0x80, 0x00,
535         0x01, 0xe2, 0x6e, 0x36,
536         0x04, 0xa6, 0x22, 0x7c,
537         0xff, 0xea, 0x5a, 0x09,
538         0xff, 0xea, 0x4c, 0x0d,
539         0x01, 0xa6, 0x4e, 0x6c,
540         0x10, 0xad, 0x84, 0x78,
541         0x80, 0xad, 0x46, 0x6c,
542         0x08, 0xad, 0x84, 0x68,
543         0x20, 0x19, 0x3a, 0x7c,
544         0x80, 0xea, 0xb2, 0x01,
545         0x11, 0x00, 0x00, 0x10,
546         0x02, 0xa6, 0x36, 0x7c,
547         0xff, 0xea, 0xb2, 0x0d,
548         0x11, 0x00, 0x00, 0x10,
549         0xff, 0xea, 0xb2, 0x09,
550         0x04, 0x84, 0xf9, 0x30,
551         0x00, 0xea, 0x08, 0x81,
552         0xff, 0xea, 0xd4, 0x09,
553         0x02, 0x84, 0xf9, 0x88,
554         0x0d, 0xea, 0x5a, 0x01,
555         0x04, 0xa6, 0x4c, 0x05,
556         0x04, 0xa6, 0x84, 0x78,
557         0xff, 0xea, 0x5a, 0x09,
558         0x03, 0x84, 0x59, 0x89,
559         0x03, 0xea, 0x4c, 0x01,
560         0x80, 0x1a, 0x84, 0x78,
561         0x08, 0x19, 0x84, 0x78,
562         0x08, 0xb0, 0xe0, 0x30,
563         0x04, 0xb0, 0xe0, 0x30,
564         0x03, 0xb0, 0xf0, 0x30,
565         0x01, 0xb0, 0x06, 0x33,
566         0x7f, 0x83, 0xe9, 0x08,
567         0x04, 0xac, 0x58, 0x19,
568         0xff, 0xea, 0xc0, 0x09,
569         0x04, 0x84, 0x09, 0x9b,
570         0x00, 0x85, 0x0b, 0x23,
571         0x00, 0x86, 0x0d, 0x23,
572         0x00, 0x87, 0x0f, 0x23,
573         0x01, 0x84, 0xc5, 0x31,
574         0x80, 0x83, 0x71, 0x7c,
575         0x02, 0xe2, 0xc4, 0x01,
576         0xff, 0xea, 0x4c, 0x09,
577         0x01, 0xe2, 0x36, 0x30,
578         0xc8, 0x19, 0x32, 0x00,
579         0x88, 0x19, 0x32, 0x00,
580         0x01, 0xac, 0xd4, 0x99,
581         0x00, 0xe2, 0x84, 0x50,
582         0xfe, 0xa6, 0x4c, 0x0d,
583         0x0b, 0x98, 0xe1, 0x30,
584         0xfd, 0xa4, 0x49, 0x09,
585         0x80, 0xa3, 0x85, 0x7c,
586         0x02, 0xa4, 0x48, 0x01,
587         0x01, 0xa4, 0x36, 0x30,
588         0xa8, 0xea, 0x32, 0x00,
589         0xfd, 0xa4, 0x49, 0x0b,
590         0x05, 0xa3, 0x07, 0x33,
591         0x80, 0x83, 0x91, 0x6c,
592         0x02, 0xea, 0x4c, 0x05,
593         0xff, 0xea, 0x4c, 0x0d,
594         0x00, 0xe2, 0x60, 0x59,
595         0x02, 0xa6, 0x24, 0x6c,
596         0x80, 0xf9, 0xf2, 0x05,
597         0xc0, 0x39, 0x9f, 0x7c,
598         0x03, 0xea, 0x6e, 0x59,
599         0x03, 0xea, 0x04, 0x00,
600         0x20, 0x39, 0xc3, 0x7c,
601         0x01, 0x84, 0xa9, 0x6c,
602         0x06, 0xea, 0x6e, 0x59,
603         0x06, 0xea, 0x04, 0x00,
604         0x00, 0xe2, 0xc6, 0x44,
605         0x01, 0x00, 0x6c, 0x32,
606         0xee, 0x00, 0xb2, 0x6c,
607         0x05, 0xea, 0xb4, 0x00,
608         0x33, 0xea, 0x68, 0x59,
609         0x33, 0xea, 0x00, 0x00,
610         0x80, 0x3d, 0x7a, 0x00,
611         0xfc, 0x42, 0xb4, 0x7c,
612         0x7f, 0x3d, 0x7a, 0x08,
613         0x00, 0x36, 0x69, 0x59,
614         0x01, 0x36, 0x01, 0x30,
615         0x09, 0xea, 0x6e, 0x59,
616         0x09, 0xea, 0x04, 0x00,
617         0x00, 0xe2, 0x28, 0x42,
618         0x01, 0xa4, 0xa9, 0x6c,
619         0x00, 0xe2, 0x7c, 0x5c,
620         0x20, 0x39, 0x73, 0x02,
621         0x01, 0x00, 0x6c, 0x32,
622         0x02, 0xa6, 0xce, 0x7c,
623         0x00, 0xe2, 0x92, 0x5c,
624         0x00, 0xe2, 0x76, 0x58,
625         0x00, 0xe2, 0x86, 0x58,
626         0x00, 0xe2, 0x5a, 0x58,
627         0x00, 0x36, 0x69, 0x59,
628         0x01, 0x36, 0x01, 0x30,
629         0x20, 0x19, 0xce, 0x6c,
630         0x00, 0xe2, 0xfe, 0x5c,
631         0x04, 0x19, 0xe8, 0x6c,
632         0x02, 0x19, 0x32, 0x00,
633         0x01, 0x84, 0xe9, 0x7c,
634         0x01, 0x1b, 0xe2, 0x7c,
635         0x01, 0x1a, 0xe8, 0x6c,
636         0x00, 0xe2, 0x98, 0x44,
637         0x80, 0x4b, 0xee, 0x6c,
638         0x01, 0x4c, 0xea, 0x7c,
639         0x03, 0x42, 0x98, 0x6c,
640         0x00, 0xe2, 0x1e, 0x5c,
641         0x80, 0xf9, 0xf2, 0x01,
642         0x04, 0x39, 0x29, 0x7a,
643         0x00, 0xe2, 0x28, 0x42,
644         0x08, 0x5d, 0x06, 0x6d,
645         0x00, 0xe2, 0x76, 0x58,
646         0x00, 0x36, 0x69, 0x59,
647         0x01, 0x36, 0x01, 0x30,
648         0x02, 0x1b, 0xf6, 0x7c,
649         0x08, 0x5d, 0x04, 0x7d,
650         0x03, 0x68, 0x00, 0x37,
651         0x01, 0x84, 0x09, 0x07,
652         0x80, 0x1b, 0x10, 0x7d,
653         0x80, 0x84, 0x11, 0x6d,
654         0xff, 0x85, 0x0b, 0x1b,
655         0xff, 0x86, 0x0d, 0x23,
656         0xff, 0x87, 0x0f, 0x23,
657         0xf8, 0x1b, 0x08, 0x0b,
658         0xff, 0xea, 0x06, 0x0b,
659         0x03, 0x68, 0x00, 0x37,
660         0x00, 0xe2, 0xd6, 0x58,
661         0x10, 0xea, 0x18, 0x00,
662         0xf9, 0xd9, 0xb2, 0x0d,
663         0x01, 0xd9, 0xb2, 0x05,
664         0x01, 0x52, 0x48, 0x31,
665         0x20, 0xa4, 0x3a, 0x7d,
666         0x20, 0x5b, 0x3a, 0x7d,
667         0x80, 0xf9, 0x48, 0x7d,
668         0x02, 0xea, 0xb4, 0x00,
669         0x11, 0x00, 0x00, 0x10,
670         0x04, 0x19, 0x54, 0x7d,
671         0xdf, 0x19, 0x32, 0x08,
672         0x60, 0x5b, 0x54, 0x6d,
673         0x01, 0x4c, 0x2e, 0x7d,
674         0x20, 0x19, 0x32, 0x00,
675         0x01, 0xd9, 0xb2, 0x05,
676         0x02, 0xea, 0xb4, 0x00,
677         0x01, 0xd9, 0xb2, 0x05,
678         0x10, 0x5b, 0x4c, 0x6d,
679         0x08, 0x5b, 0x56, 0x6d,
680         0x20, 0x5b, 0x46, 0x6d,
681         0x02, 0x5b, 0x76, 0x6d,
682         0x0e, 0xea, 0x6e, 0x59,
683         0x0e, 0xea, 0x04, 0x00,
684         0x80, 0xf9, 0x36, 0x6d,
685         0xdf, 0x5c, 0xb8, 0x08,
686         0x01, 0xd9, 0xb2, 0x05,
687         0x01, 0xa4, 0x37, 0x6e,
688         0x00, 0xe2, 0x7c, 0x5c,
689         0x00, 0xe2, 0x80, 0x5d,
690         0x01, 0x90, 0x21, 0x1b,
691         0x01, 0xd9, 0xb2, 0x05,
692         0x00, 0xe2, 0x66, 0x5b,
693         0xf3, 0x96, 0xd5, 0x19,
694         0x00, 0xe2, 0x64, 0x55,
695         0x80, 0x96, 0x65, 0x6d,
696         0x0f, 0xea, 0x6e, 0x59,
697         0x0f, 0xea, 0x04, 0x00,
698         0x00, 0xe2, 0x6c, 0x45,
699         0x04, 0x8c, 0xe1, 0x30,
700         0x01, 0xea, 0xf2, 0x00,
701         0x02, 0xea, 0x36, 0x00,
702         0xa8, 0xea, 0x32, 0x00,
703         0xff, 0x97, 0x73, 0x7d,
704         0x14, 0xea, 0x6e, 0x59,
705         0x14, 0xea, 0x04, 0x00,
706         0x00, 0xe2, 0xe2, 0x5d,
707         0x01, 0xd9, 0xb2, 0x05,
708         0x09, 0x80, 0xe1, 0x30,
709         0x02, 0xea, 0x36, 0x00,
710         0xa8, 0xea, 0x32, 0x00,
711         0x00, 0xe2, 0xda, 0x5d,
712         0x01, 0xd9, 0xb2, 0x05,
713         0x02, 0xa6, 0x90, 0x7d,
714         0x00, 0xe2, 0x60, 0x59,
715         0x20, 0x5b, 0x9e, 0x6d,
716         0xfc, 0x42, 0x8a, 0x7d,
717         0x10, 0x40, 0x8c, 0x6d,
718         0x20, 0x4d, 0x8e, 0x7d,
719         0x08, 0x5d, 0x9e, 0x6d,
720         0x02, 0xa6, 0x24, 0x6c,
721         0x00, 0xe2, 0x60, 0x59,
722         0x20, 0x5b, 0x9e, 0x6d,
723         0x01, 0x1b, 0xbe, 0x6d,
724         0xfc, 0x42, 0x9a, 0x7d,
725         0x10, 0x40, 0x9c, 0x6d,
726         0x20, 0x4d, 0x84, 0x78,
727         0x08, 0x5d, 0x84, 0x78,
728         0x02, 0x19, 0x32, 0x00,
729         0x01, 0x5b, 0x40, 0x31,
730         0x00, 0xe2, 0xfe, 0x5c,
731         0x00, 0xe2, 0xe0, 0x5b,
732         0x20, 0xea, 0xb6, 0x00,
733         0x00, 0xe2, 0x1e, 0x5c,
734         0x20, 0x5c, 0xb8, 0x00,
735         0x04, 0x19, 0xb4, 0x6d,
736         0x01, 0x1a, 0xb4, 0x6d,
737         0x00, 0xe2, 0x60, 0x59,
738         0x01, 0x1a, 0x84, 0x78,
739         0x80, 0xf9, 0xf2, 0x01,
740         0x20, 0xa0, 0x18, 0x7e,
741         0xff, 0x90, 0x21, 0x1b,
742         0x08, 0x92, 0x77, 0x6b,
743         0x02, 0xea, 0xb4, 0x04,
744         0x01, 0xa4, 0x49, 0x03,
745         0x40, 0x5b, 0xce, 0x6d,
746         0x00, 0xe2, 0x60, 0x59,
747         0x40, 0x5b, 0xce, 0x6d,
748         0x04, 0x5d, 0x38, 0x7e,
749         0x01, 0x1a, 0x38, 0x7e,
750         0x20, 0x4d, 0x84, 0x78,
751         0x40, 0x5b, 0x18, 0x7e,
752         0x04, 0x5d, 0x38, 0x7e,
753         0x01, 0x1a, 0x38, 0x7e,
754         0x80, 0xf9, 0xf2, 0x01,
755         0xff, 0x90, 0x21, 0x1b,
756         0x08, 0x92, 0x77, 0x6b,
757         0x02, 0xea, 0xb4, 0x04,
758         0x00, 0xe2, 0x60, 0x59,
759         0x01, 0x1b, 0x84, 0x78,
760         0x80, 0xf9, 0xf2, 0x01,
761         0x02, 0xea, 0xb4, 0x04,
762         0x00, 0xe2, 0x60, 0x59,
763         0x01, 0x1b, 0xf6, 0x6d,
764         0x40, 0x5b, 0x04, 0x7e,
765         0x01, 0x1b, 0xf6, 0x6d,
766         0x02, 0x19, 0x32, 0x00,
767         0x01, 0x1a, 0x84, 0x78,
768         0x80, 0xf9, 0xf2, 0x01,
769         0xff, 0xea, 0x10, 0x03,
770         0x08, 0x92, 0x25, 0x03,
771         0x00, 0xe2, 0x76, 0x43,
772         0x01, 0x1a, 0x00, 0x7e,
773         0x40, 0x5b, 0xfc, 0x7d,
774         0x01, 0x1a, 0xea, 0x6d,
775         0xfc, 0x42, 0x84, 0x78,
776         0x01, 0x1a, 0x04, 0x6e,
777         0x10, 0xea, 0x6e, 0x59,
778         0x10, 0xea, 0x04, 0x00,
779         0xfc, 0x42, 0x84, 0x78,
780         0x10, 0x40, 0x0a, 0x6e,
781         0x20, 0x4d, 0x84, 0x78,
782         0x40, 0x5b, 0xea, 0x6d,
783         0x01, 0x1a, 0x84, 0x78,
784         0x01, 0x90, 0x21, 0x1b,
785         0x30, 0x3f, 0xc0, 0x09,
786         0x30, 0xe0, 0x84, 0x60,
787         0x40, 0x4b, 0x84, 0x68,
788         0xff, 0xea, 0x52, 0x01,
789         0xee, 0x00, 0x20, 0x6e,
790         0x80, 0xf9, 0xf2, 0x01,
791         0xff, 0x90, 0x21, 0x1b,
792         0x02, 0xea, 0xb4, 0x00,
793         0x20, 0xea, 0x9a, 0x00,
794         0x04, 0x41, 0x26, 0x7e,
795         0x08, 0xea, 0x98, 0x00,
796         0x08, 0x57, 0xae, 0x00,
797         0xf3, 0x42, 0x30, 0x6e,
798         0x12, 0xea, 0x6e, 0x59,
799         0x12, 0xea, 0x04, 0x00,
800         0x00, 0xe2, 0x28, 0x42,
801         0x0d, 0xea, 0x6e, 0x59,
802         0x0d, 0xea, 0x04, 0x00,
803         0x00, 0xe2, 0x28, 0x42,
804         0x01, 0x90, 0x21, 0x1b,
805         0x11, 0xea, 0x6e, 0x59,
806         0x11, 0xea, 0x04, 0x00,
807         0x00, 0xe2, 0x66, 0x5b,
808         0x08, 0x5a, 0xb4, 0x00,
809         0x00, 0xe2, 0x5e, 0x5e,
810         0xa8, 0xea, 0x32, 0x00,
811         0x00, 0xe2, 0x60, 0x59,
812         0x80, 0x1a, 0x4c, 0x7e,
813         0x00, 0xe2, 0x5e, 0x5e,
814         0x80, 0x19, 0x32, 0x00,
815         0x40, 0x5b, 0x52, 0x6e,
816         0x08, 0x5a, 0x52, 0x7e,
817         0x20, 0x4d, 0x84, 0x78,
818         0x02, 0x84, 0x09, 0x03,
819         0x40, 0x5b, 0x18, 0x7e,
820         0xff, 0x90, 0x21, 0x1b,
821         0x80, 0xf9, 0xf2, 0x01,
822         0x08, 0x92, 0x77, 0x6b,
823         0x02, 0xea, 0xb4, 0x04,
824         0x01, 0x40, 0xe1, 0x30,
825         0x05, 0x41, 0xe3, 0x98,
826         0x01, 0xe0, 0xf4, 0x31,
827         0xff, 0xea, 0xc0, 0x09,
828         0x00, 0x42, 0xe5, 0x20,
829         0x00, 0x43, 0xe7, 0x20,
830         0x01, 0xfa, 0xc0, 0x31,
831         0x04, 0xea, 0xe8, 0x30,
832         0xff, 0xea, 0xf0, 0x08,
833         0x02, 0xea, 0xf2, 0x00,
834         0xff, 0xea, 0xf4, 0x0c
835 };
836
837 typedef int ahd_patch_func_t (struct ahd_softc *ahd);
838 static ahd_patch_func_t ahd_patch23_func;
839
840 static int
841 ahd_patch23_func(struct ahd_softc *ahd)
842 {
843         return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0);
844 }
845
846 static ahd_patch_func_t ahd_patch22_func;
847
848 static int
849 ahd_patch22_func(struct ahd_softc *ahd)
850 {
851         return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0);
852 }
853
854 static ahd_patch_func_t ahd_patch21_func;
855
856 static int
857 ahd_patch21_func(struct ahd_softc *ahd)
858 {
859         return ((ahd->flags & AHD_INITIATORROLE) != 0);
860 }
861
862 static ahd_patch_func_t ahd_patch20_func;
863
864 static int
865 ahd_patch20_func(struct ahd_softc *ahd)
866 {
867         return ((ahd->flags & AHD_TARGETROLE) != 0);
868 }
869
870 static ahd_patch_func_t ahd_patch19_func;
871
872 static int
873 ahd_patch19_func(struct ahd_softc *ahd)
874 {
875         return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0);
876 }
877
878 static ahd_patch_func_t ahd_patch18_func;
879
880 static int
881 ahd_patch18_func(struct ahd_softc *ahd)
882 {
883         return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0);
884 }
885
886 static ahd_patch_func_t ahd_patch17_func;
887
888 static int
889 ahd_patch17_func(struct ahd_softc *ahd)
890 {
891         return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0);
892 }
893
894 static ahd_patch_func_t ahd_patch16_func;
895
896 static int
897 ahd_patch16_func(struct ahd_softc *ahd)
898 {
899         return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0);
900 }
901
902 static ahd_patch_func_t ahd_patch15_func;
903
904 static int
905 ahd_patch15_func(struct ahd_softc *ahd)
906 {
907         return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0);
908 }
909
910 static ahd_patch_func_t ahd_patch14_func;
911
912 static int
913 ahd_patch14_func(struct ahd_softc *ahd)
914 {
915         return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0);
916 }
917
918 static ahd_patch_func_t ahd_patch13_func;
919
920 static int
921 ahd_patch13_func(struct ahd_softc *ahd)
922 {
923         return ((ahd->features & AHD_RTI) == 0);
924 }
925
926 static ahd_patch_func_t ahd_patch12_func;
927
928 static int
929 ahd_patch12_func(struct ahd_softc *ahd)
930 {
931         return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0);
932 }
933
934 static ahd_patch_func_t ahd_patch11_func;
935
936 static int
937 ahd_patch11_func(struct ahd_softc *ahd)
938 {
939         return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0);
940 }
941
942 static ahd_patch_func_t ahd_patch10_func;
943
944 static int
945 ahd_patch10_func(struct ahd_softc *ahd)
946 {
947         return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0);
948 }
949
950 static ahd_patch_func_t ahd_patch9_func;
951
952 static int
953 ahd_patch9_func(struct ahd_softc *ahd)
954 {
955         return ((ahd->features & AHD_FAST_CDB_DELIVERY) != 0);
956 }
957
958 static ahd_patch_func_t ahd_patch8_func;
959
960 static int
961 ahd_patch8_func(struct ahd_softc *ahd)
962 {
963         return ((ahd->bugs & AHD_LQO_ATNO_BUG) != 0);
964 }
965
966 static ahd_patch_func_t ahd_patch7_func;
967
968 static int
969 ahd_patch7_func(struct ahd_softc *ahd)
970 {
971         return ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0);
972 }
973
974 static ahd_patch_func_t ahd_patch6_func;
975
976 static int
977 ahd_patch6_func(struct ahd_softc *ahd)
978 {
979         return ((ahd->bugs & AHD_NONPACKFIFO_BUG) != 0);
980 }
981
982 static ahd_patch_func_t ahd_patch5_func;
983
984 static int
985 ahd_patch5_func(struct ahd_softc *ahd)
986 {
987         return ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0);
988 }
989
990 static ahd_patch_func_t ahd_patch4_func;
991
992 static int
993 ahd_patch4_func(struct ahd_softc *ahd)
994 {
995         return ((ahd->bugs & AHD_PKT_LUN_BUG) != 0);
996 }
997
998 static ahd_patch_func_t ahd_patch3_func;
999
1000 static int
1001 ahd_patch3_func(struct ahd_softc *ahd)
1002 {
1003         return ((ahd->bugs & AHD_FAINT_LED_BUG) != 0);
1004 }
1005
1006 static ahd_patch_func_t ahd_patch2_func;
1007
1008 static int
1009 ahd_patch2_func(struct ahd_softc *ahd)
1010 {
1011         return ((ahd->bugs & AHD_SET_MODE_BUG) != 0);
1012 }
1013
1014 static ahd_patch_func_t ahd_patch1_func;
1015
1016 static int
1017 ahd_patch1_func(struct ahd_softc *ahd)
1018 {
1019         return ((ahd->bugs & AHD_INTCOLLISION_BUG) != 0);
1020 }
1021
1022 static ahd_patch_func_t ahd_patch0_func;
1023
1024 static int
1025 ahd_patch0_func(struct ahd_softc *ahd)
1026 {
1027         return (0);
1028 }
1029
1030 static struct patch {
1031         ahd_patch_func_t                *patch_func;
1032         uint32_t                 begin          :10,
1033                                  skip_instr     :10,
1034                                  skip_patch     :12;
1035 } patches[] = {
1036         { ahd_patch1_func, 0, 3, 3 },
1037         { ahd_patch1_func, 1, 1, 2 },
1038         { ahd_patch0_func, 2, 1, 1 },
1039         { ahd_patch1_func, 3, 3, 3 },
1040         { ahd_patch1_func, 4, 1, 2 },
1041         { ahd_patch0_func, 5, 1, 1 },
1042         { ahd_patch2_func, 6, 1, 2 },
1043         { ahd_patch0_func, 7, 1, 1 },
1044         { ahd_patch3_func, 36, 5, 1 },
1045         { ahd_patch2_func, 45, 1, 2 },
1046         { ahd_patch0_func, 46, 1, 1 },
1047         { ahd_patch1_func, 53, 1, 2 },
1048         { ahd_patch0_func, 54, 1, 1 },
1049         { ahd_patch2_func, 59, 1, 2 },
1050         { ahd_patch0_func, 60, 1, 1 },
1051         { ahd_patch2_func, 63, 1, 2 },
1052         { ahd_patch0_func, 64, 1, 1 },
1053         { ahd_patch2_func, 67, 1, 2 },
1054         { ahd_patch0_func, 68, 1, 1 },
1055         { ahd_patch4_func, 115, 1, 1 },
1056         { ahd_patch2_func, 180, 3, 1 },
1057         { ahd_patch1_func, 183, 2, 1 },
1058         { ahd_patch5_func, 185, 1, 1 },
1059         { ahd_patch2_func, 194, 1, 2 },
1060         { ahd_patch0_func, 195, 1, 1 },
1061         { ahd_patch6_func, 196, 2, 2 },
1062         { ahd_patch0_func, 198, 6, 3 },
1063         { ahd_patch2_func, 201, 1, 2 },
1064         { ahd_patch0_func, 202, 1, 1 },
1065         { ahd_patch2_func, 205, 1, 2 },
1066         { ahd_patch0_func, 206, 1, 1 },
1067         { ahd_patch3_func, 208, 1, 1 },
1068         { ahd_patch7_func, 209, 3, 1 },
1069         { ahd_patch3_func, 218, 1, 1 },
1070         { ahd_patch5_func, 219, 16, 2 },
1071         { ahd_patch0_func, 235, 1, 1 },
1072         { ahd_patch8_func, 260, 2, 1 },
1073         { ahd_patch1_func, 264, 1, 2 },
1074         { ahd_patch0_func, 265, 1, 1 },
1075         { ahd_patch7_func, 268, 3, 1 },
1076         { ahd_patch1_func, 283, 1, 2 },
1077         { ahd_patch0_func, 284, 1, 1 },
1078         { ahd_patch1_func, 287, 1, 2 },
1079         { ahd_patch0_func, 288, 1, 1 },
1080         { ahd_patch2_func, 291, 1, 2 },
1081         { ahd_patch0_func, 292, 1, 1 },
1082         { ahd_patch9_func, 305, 2, 2 },
1083         { ahd_patch0_func, 307, 1, 1 },
1084         { ahd_patch1_func, 349, 1, 2 },
1085         { ahd_patch0_func, 350, 1, 1 },
1086         { ahd_patch2_func, 358, 1, 2 },
1087         { ahd_patch0_func, 359, 1, 1 },
1088         { ahd_patch2_func, 362, 1, 2 },
1089         { ahd_patch0_func, 363, 1, 1 },
1090         { ahd_patch1_func, 369, 1, 2 },
1091         { ahd_patch0_func, 370, 1, 1 },
1092         { ahd_patch1_func, 372, 1, 2 },
1093         { ahd_patch0_func, 373, 1, 1 },
1094         { ahd_patch10_func, 392, 1, 1 },
1095         { ahd_patch10_func, 395, 1, 1 },
1096         { ahd_patch10_func, 397, 1, 1 },
1097         { ahd_patch10_func, 409, 1, 1 },
1098         { ahd_patch1_func, 419, 1, 2 },
1099         { ahd_patch0_func, 420, 1, 1 },
1100         { ahd_patch1_func, 422, 1, 2 },
1101         { ahd_patch0_func, 423, 1, 1 },
1102         { ahd_patch1_func, 431, 1, 2 },
1103         { ahd_patch0_func, 432, 1, 1 },
1104         { ahd_patch2_func, 445, 1, 2 },
1105         { ahd_patch0_func, 446, 1, 1 },
1106         { ahd_patch11_func, 482, 1, 1 },
1107         { ahd_patch1_func, 490, 1, 2 },
1108         { ahd_patch0_func, 491, 1, 1 },
1109         { ahd_patch2_func, 503, 1, 2 },
1110         { ahd_patch0_func, 504, 1, 1 },
1111         { ahd_patch12_func, 507, 6, 2 },
1112         { ahd_patch0_func, 513, 1, 1 },
1113         { ahd_patch13_func, 534, 7, 1 },
1114         { ahd_patch14_func, 543, 1, 1 },
1115         { ahd_patch15_func, 552, 1, 1 },
1116         { ahd_patch16_func, 553, 1, 2 },
1117         { ahd_patch0_func, 554, 1, 1 },
1118         { ahd_patch17_func, 557, 1, 1 },
1119         { ahd_patch16_func, 558, 1, 1 },
1120         { ahd_patch18_func, 569, 1, 2 },
1121         { ahd_patch0_func, 570, 1, 1 },
1122         { ahd_patch1_func, 589, 1, 2 },
1123         { ahd_patch0_func, 590, 1, 1 },
1124         { ahd_patch1_func, 593, 1, 2 },
1125         { ahd_patch0_func, 594, 1, 1 },
1126         { ahd_patch2_func, 599, 1, 2 },
1127         { ahd_patch0_func, 600, 1, 1 },
1128         { ahd_patch2_func, 604, 1, 2 },
1129         { ahd_patch0_func, 605, 1, 1 },
1130         { ahd_patch1_func, 606, 1, 2 },
1131         { ahd_patch0_func, 607, 1, 1 },
1132         { ahd_patch2_func, 618, 1, 2 },
1133         { ahd_patch0_func, 619, 1, 1 },
1134         { ahd_patch19_func, 623, 1, 1 },
1135         { ahd_patch20_func, 628, 1, 1 },
1136         { ahd_patch21_func, 629, 2, 1 },
1137         { ahd_patch20_func, 633, 1, 2 },
1138         { ahd_patch0_func, 634, 1, 1 },
1139         { ahd_patch2_func, 637, 1, 2 },
1140         { ahd_patch0_func, 638, 1, 1 },
1141         { ahd_patch2_func, 653, 1, 2 },
1142         { ahd_patch0_func, 654, 1, 1 },
1143         { ahd_patch13_func, 655, 14, 1 },
1144         { ahd_patch1_func, 673, 1, 2 },
1145         { ahd_patch0_func, 674, 1, 1 },
1146         { ahd_patch13_func, 675, 1, 1 },
1147         { ahd_patch1_func, 687, 1, 2 },
1148         { ahd_patch0_func, 688, 1, 1 },
1149         { ahd_patch1_func, 695, 1, 2 },
1150         { ahd_patch0_func, 696, 1, 1 },
1151         { ahd_patch19_func, 719, 1, 1 },
1152         { ahd_patch19_func, 757, 1, 1 },
1153         { ahd_patch1_func, 768, 1, 2 },
1154         { ahd_patch0_func, 769, 1, 1 },
1155         { ahd_patch7_func, 785, 3, 1 },
1156         { ahd_patch1_func, 789, 1, 2 },
1157         { ahd_patch0_func, 790, 1, 1 },
1158         { ahd_patch1_func, 792, 1, 2 },
1159         { ahd_patch0_func, 793, 1, 1 },
1160         { ahd_patch1_func, 796, 1, 2 },
1161         { ahd_patch0_func, 797, 1, 1 },
1162         { ahd_patch22_func, 799, 1, 2 },
1163         { ahd_patch0_func, 800, 2, 1 },
1164         { ahd_patch23_func, 803, 4, 2 },
1165         { ahd_patch0_func, 807, 1, 1 },
1166         { ahd_patch23_func, 815, 11, 1 }
1167 };
1168
1169 static struct cs {
1170         uint16_t        begin;
1171         uint16_t        end;
1172 } critical_sections[] = {
1173         { 17, 30 },
1174         { 47, 58 },
1175         { 61, 63 },
1176         { 65, 66 },
1177         { 72, 92 },
1178         { 110, 142 },
1179         { 143, 180 },
1180         { 185, 193 },
1181         { 218, 274 },
1182         { 435, 443 },
1183         { 453, 455 },
1184         { 458, 467 },
1185         { 719, 749 },
1186         { 759, 763 }
1187 };
1188
1189 static const int num_critical_sections = sizeof(critical_sections)
1190                                        / sizeof(*critical_sections);