1 /*******************************************************************************
2 *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
3 *
4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5 *that the following conditions are met:
6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7 *following disclaimer.
8 *2. Redistributions in binary form must reproduce the above copyright notice,
9 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10 *with the distribution.
11 *
12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20 *
21 * $FreeBSD$
22 *
23 ********************************************************************************/
24 /*******************************************************************************/
25 /** \file
26 *
27 *
28 * The file contaning function protoptype used by SAT layer.
29 *
30 */
31
32 #ifndef __SATPROTO_H__
33 #define __SATPROTO_H__
34
35
36 /*****************************************************************************
37 *! \brief itdsatProcessAbnormalCompletion
38 *
39 * This routine is called to complete error case for SATA request previously
40 * issued to the LL Layer in saSATAStart()
41 *
42 * \param agRoot: Handles for this instance of SAS/SATA hardware
43 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
44 * \param agIOStatus: Status of completed I/O.
45 * \param agSATAParm1: Additional info based on status.
46 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
47 * length.
48 * \param satIOContext: Pointer to satIOContext_t.
49 *
50 * \return: none
51 *
52 *****************************************************************************/
53 void itdsatProcessAbnormalCompletion(
54 agsaRoot_t *agRoot,
55 agsaIORequest_t *agIORequest,
56 bit32 agIOStatus,
57 agsaFisHeader_t *agFirstDword,
58 bit32 agIOInfoLen,
59 agsaFrameHandle_t agFrameHandle,
60 satIOContext_t *satIOContext
61 );
62 void itdsatDelayedProcessAbnormalCompletion(
63 agsaRoot_t *agRoot,
64 agsaIORequest_t *agIORequest,
65 bit32 agIOStatus,
66 agsaFisHeader_t *agFirstDword,
67 bit32 agIOInfoLen,
68 agsaFrameHandle_t agFrameHandle,
69 satIOContext_t *satIOContext
70 );
71
72 void itdsatErrorSATAEventHandle(
73 agsaRoot_t *agRoot,
74 agsaIORequest_t *agIORequest,
75 agsaPortContext_t *agPortContext,
76 agsaDevHandle_t *agDevHandle,
77 bit32 event,
78 satIOContext_t *ioContext
79 );
80
81 void itdsatEncryptionHandler (
82 agsaRoot_t *agRoot,
83 agsaIORequest_t *agIORequest,
84 bit32 agIOStatus,
85 bit32 agIOInfoLen,
86 void *agParam,
87 bit32 agOtherInfo
88 );
89
90 osGLOBAL void
91 itdsatDifHandler(
92 agsaRoot_t *agRoot,
93 agsaIORequest_t *agIORequest,
94 bit32 agIOStatus,
95 bit32 agIOInfoLen,
96 void *agParam,
97 bit32 agOtherInfo
98 );
99
100 void satProcessAbort(
101 tiRoot_t *tiRoot,
102 tiIORequest_t *tiIORequest,
103 satIOContext_t *satIOContext
104 );
105 /*****************************************************************************/
106 /*! \brief Setup up the SCSI Sense response.
107 *
108 * This function is used to setup up the Sense Data payload for
109 * CHECK CONDITION status.
110 *
111 * \param pSense: Pointer to the scsiRspSense_t sense data structure.
112 * \param SnsKey: SCSI Sense Key.
113 * \param SnsInfo: SCSI Sense Info.
114 * \param SnsCode: SCSI Sense Code.
115 *
116 * \return None
117 */
118 /*****************************************************************************/
119
120 void satSetSensePayload( scsiRspSense_t *pSense,
121 bit8 SnsKey,
122 bit32 SnsInfo,
123 bit16 SnsCode,
124 satIOContext_t *satIOContext);
125
126
127 /*****************************************************************************/
128 /*! \brief Setup up the SCSI Sense response.
129 *
130 * This function is used to setup up the Sense Data payload for
131 * CHECK CONDITION status.
132 *
133 * \param pSense: Pointer to the scsiRspSense_t sense data structure.
134 * \param SnsKey: SCSI Sense Key.
135 * \param SnsInfo: SCSI Sense Info.
136 * \param SnsCode: SCSI Sense Code.
137 *
138 * \return None
139 */
140 /*****************************************************************************/
141
142 void satSetDeferredSensePayload( scsiRspSense_t *pSense,
143 bit8 SnsKey,
144 bit32 SnsInfo,
145 bit16 SnsCode,
146 satIOContext_t *satIOContext
147 );
148
149 /*****************************************************************************/
150 /*! \brief SAT implementation for ATAPI Packet Command.
151 *
152 * SAT implementation for ATAPI Packet and send FIS request to LL layer.
153 *
154 * \param tiRoot: Pointer to TISA initiator driver/port instance.
155 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
156 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
157 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
158 * \param satIOContext_t: Pointer to the SAT IO Context
159 *
160 * \return If command is started successfully
161 * - \e tiSuccess: I/O request successfully initiated.
162 * - \e tiBusy: No resources available, try again later.
163 * - \e tiIONoDevice: Invalid device handle.
164 * - \e tiError: Other errors.
165 */
166 /*****************************************************************************/
167 GLOBAL bit32 satPacket(
168 tiRoot_t *tiRoot,
169 tiIORequest_t *tiIORequest,
170 tiDeviceHandle_t *tiDeviceHandle,
171 tiScsiInitiatorRequest_t *tiScsiRequest,
172 satIOContext_t *satIOContext);
173
174 void satPacketCB(
175 agsaRoot_t *agRoot,
176 agsaIORequest_t *agIORequest,
177 bit32 agIOStatus,
178 agsaFisHeader_t *agFirstDword,
179 bit32 agIOInfoLen,
180 void *agParam,
181 void *ioContext
182 );
183 /*****************************************************************************/
184 /*! \brief SAT implementation for satDeviceReset.
185 *
186 * This function creates DEVICE RESET fis and sends the request to LL layer
187 *
188 * \param tiRoot: Pointer to TISA initiator driver/port instance.
189 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
190 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
191 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
192 * \param satIOContext_t: Pointer to the SAT IO Context
193 *
194 * \return If command is started successfully
195 * - \e tiSuccess: I/O request successfully initiated.
196 * - \e tiBusy: No resources available, try again later.
197 * - \e tiIONoDevice: Invalid device handle.
198 * - \e tiError: Other errors.
199 */
200 /*****************************************************************************/
201 GLOBAL bit32 satDeviceReset(
202 tiRoot_t *tiRoot,
203 tiIORequest_t *tiIORequest,
204 tiDeviceHandle_t *tiDeviceHandle,
205 tiScsiInitiatorRequest_t *tiScsiRequest,
206 satIOContext_t *satIOContext
207 );
208
209 void satDeviceResetCB(
210 agsaRoot_t *agRoot,
211 agsaIORequest_t *agIORequest,
212 bit32 agIOStatus,
213 agsaFisHeader_t *agFirstDword,
214 bit32 agIOInfoLen,
215 void *agParam,
216 void *ioContext
217 );
218
219 /*****************************************************************************/
220 /*! \brief SAT implementation for satExecuteDeviceDiagnostic.
221 *
222 * This function creates Execute Device Diagnostic fis and sends the request to LL layer
223 *
224 * \param tiRoot: Pointer to TISA initiator driver/port instance.
225 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
226 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
227 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
228 * \param satIOContext_t: Pointer to the SAT IO Context
229 *
230 * \return If command is started successfully
231 * - \e tiSuccess: I/O request successfully initiated.
232 * - \e tiBusy: No resources available, try again later.
233 * - \e tiIONoDevice: Invalid device handle.
234 * - \e tiError: Other errors.
235 */
236 /*****************************************************************************/
237 GLOBAL bit32 satExecuteDeviceDiagnostic(
238 tiRoot_t *tiRoot,
239 tiIORequest_t *tiIORequest,
240 tiDeviceHandle_t *tiDeviceHandle,
241 tiScsiInitiatorRequest_t *tiScsiRequest,
242 satIOContext_t *satIOContext
243 );
244
245 void satExecuteDeviceDiagnosticCB(
246 agsaRoot_t *agRoot,
247 agsaIORequest_t *agIORequest,
248 bit32 agIOStatus,
249 agsaFisHeader_t *agFirstDword,
250 bit32 agIOInfoLen,
251 void *agParam,
252 void *ioContext
253 );
254
255 /*****************************************************************************/
256 /*! \brief SAT implementation for satSetFeatures.
257 *
258 * This function creates SetFeatures fis and sends the request to LL layer
259 *
260 * \param tiRoot: Pointer to TISA initiator driver/port instance.
261 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
262 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
263 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
264 * \param satIOContext_t: Pointer to the SAT IO Context
265 *
266 * \return If command is started successfully
267 * - \e tiSuccess: I/O request successfully initiated.
268 * - \e tiBusy: No resources available, try again later.
269 * - \e tiIONoDevice: Invalid device handle.
270 * - \e tiError: Other errors.
271 */
272 /*****************************************************************************/
273 GLOBAL bit32 satSetFeatures(
274 tiRoot_t *tiRoot,
275 tiIORequest_t *tiIORequest,
276 tiDeviceHandle_t *tiDeviceHandle,
277 tiScsiInitiatorRequest_t *tiScsiRequest,
278 satIOContext_t *satIOContext,
279 bit8 bTransferMode
280 );
281 void satSetFeaturesPIOCB(
282 agsaRoot_t *agRoot,
283 agsaIORequest_t *agIORequest,
284 bit32 agIOStatus,
285 agsaFisHeader_t *agFirstDword,
286 bit32 agIOInfoLen,
287 void *agParam,
288 void *ioContext
289 );
290
291 void satSetFeaturesCB(
292 agsaRoot_t *agRoot,
293 agsaIORequest_t *agIORequest,
294 bit32 agIOStatus,
295 agsaFisHeader_t *agFirstDword,
296 bit32 agIOInfoLen,
297 void *agParam,
298 void *ioContext
299 );
300 /*****************************************************************************/
301 /*! \brief SAT implementation for SCSI REQUEST SENSE to ATAPI device.
302 *
303 * SAT implementation for SCSI REQUEST SENSE.
304 *
305 * \param tiRoot: Pointer to TISA initiator driver/port instance.
306 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
307 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
308 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
309 * \param satIOContext_t: Pointer to the SAT IO Context
310 *
311 * \return If command is started successfully
312 * - \e tiSuccess: I/O request successfully initiated.
313 * - \e tiBusy: No resources available, try again later.
314 * - \e tiIONoDevice: Invalid device handle.
315 * - \e tiError: Other errors.
316 */
317 /*****************************************************************************/
318 GLOBAL bit32 satRequestSenseForATAPI(
319 tiRoot_t *tiRoot,
320 tiIORequest_t *tiIORequest,
321 tiDeviceHandle_t *tiDeviceHandle,
322 tiScsiInitiatorRequest_t *tiScsiRequest,
323 satIOContext_t *satIOContext);
324
325 void satRequestSenseForATAPICB(
326 agsaRoot_t *agRoot,
327 agsaIORequest_t *agIORequest,
328 bit32 agIOStatus,
329 agsaFisHeader_t *agFirstDword,
330 bit32 agIOInfoLen,
331 void *agParam,
332 void *ioContext
333 );
334
335 /*****************************************************************************/
336 /*! \brief SAT implementation for SCSI READ12.
337 *
338 * SAT implementation for SCSI READ12 and send FIS request to LL layer.
339 *
340 * \param tiRoot: Pointer to TISA initiator driver/port instance.
341 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
342 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
343 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
344 * \param satIOContext_t: Pointer to the SAT IO Context
345 *
346 * \return If command is started successfully
347 * - \e tiSuccess: I/O request successfully initiated.
348 * - \e tiBusy: No resources available, try again later.
349 * - \e tiIONoDevice: Invalid device handle.
350 * - \e tiError: Other errors.
351 */
352 /*****************************************************************************/
353 GLOBAL bit32 satRead12(
354 tiRoot_t *tiRoot,
355 tiIORequest_t *tiIORequest,
356 tiDeviceHandle_t *tiDeviceHandle,
357 tiScsiInitiatorRequest_t *tiScsiRequest,
358 satIOContext_t *satIOContext);
359
360 /*****************************************************************************/
361 /*! \brief SAT implementation for SCSI READ10.
362 *
363 * SAT implementation for SCSI READ10 and send FIS request to LL layer.
364 *
365 * \param tiRoot: Pointer to TISA initiator driver/port instance.
366 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
367 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
368 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
369 * \param satIOContext_t: Pointer to the SAT IO Context
370 *
371 * \return If command is started successfully
372 * - \e tiSuccess: I/O request successfully initiated.
373 * - \e tiBusy: No resources available, try again later.
374 * - \e tiIONoDevice: Invalid device handle.
375 * - \e tiError: Other errors.
376 */
377 /*****************************************************************************/
378 GLOBAL bit32 satRead10(
379 tiRoot_t *tiRoot,
380 tiIORequest_t *tiIORequest,
381 tiDeviceHandle_t *tiDeviceHandle,
382 tiScsiInitiatorRequest_t *tiScsiRequest,
383 satIOContext_t *satIOContext);
384
385
386 /*****************************************************************************/
387 /*! \brief SAT implementation for SCSI READ16.
388 *
389 * SAT implementation for SCSI READ16 and send FIS request to LL layer.
390 *
391 * \param tiRoot: Pointer to TISA initiator driver/port instance.
392 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
393 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
394 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
395 * \param satIOContext_t: Pointer to the SAT IO Context
396 *
397 * \return If command is started successfully
398 * - \e tiSuccess: I/O request successfully initiated.
399 * - \e tiBusy: No resources available, try again later.
400 * - \e tiIONoDevice: Invalid device handle.
401 * - \e tiError: Other errors.
402 */
403 /*****************************************************************************/
404 GLOBAL bit32 satRead16(
405 tiRoot_t *tiRoot,
406 tiIORequest_t *tiIORequest,
407 tiDeviceHandle_t *tiDeviceHandle,
408 tiScsiInitiatorRequest_t *tiScsiRequest,
409 satIOContext_t *satIOContext);
410 /*****************************************************************************/
411 /*! \brief SAT implementation for SCSI READ6.
412 *
413 * SAT implementation for SCSI READ6 and send FIS request to LL layer.
414 *
415 * \param tiRoot: Pointer to TISA initiator driver/port instance.
416 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
417 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
418 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
419 * \param satIOContext_t: Pointer to the SAT IO Context
420 *
421 * \return If command is started successfully
422 * - \e tiSuccess: I/O request successfully initiated.
423 * - \e tiBusy: No resources available, try again later.
424 * - \e tiIONoDevice: Invalid device handle.
425 * - \e tiError: Other errors.
426 */
427 /*****************************************************************************/
428 GLOBAL bit32 satRead6(
429 tiRoot_t *tiRoot,
430 tiIORequest_t *tiIORequest,
431 tiDeviceHandle_t *tiDeviceHandle,
432 tiScsiInitiatorRequest_t *tiScsiRequest,
433 satIOContext_t *satIOContext);
434
435 /*****************************************************************************/
436 /*! \brief SAT implementation for SCSI WRITE16.
437 *
438 * SAT implementation for SCSI WRITE16 and send FIS request to LL layer.
439 *
440 * \param tiRoot: Pointer to TISA initiator driver/port instance.
441 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
442 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
443 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
444 * \param satIOContext_t: Pointer to the SAT IO Context
445 *
446 * \return If command is started successfully
447 * - \e tiSuccess: I/O request successfully initiated.
448 * - \e tiBusy: No resources available, try again later.
449 * - \e tiIONoDevice: Invalid device handle.
450 * - \e tiError: Other errors.
451 */
452 /*****************************************************************************/
453 GLOBAL bit32 satWrite16(
454 tiRoot_t *tiRoot,
455 tiIORequest_t *tiIORequest,
456 tiDeviceHandle_t *tiDeviceHandle,
457 tiScsiInitiatorRequest_t *tiScsiRequest,
458 satIOContext_t *satIOContext);
459
460 /*****************************************************************************/
461 /*! \brief SAT implementation for SCSI WRITE12.
462 *
463 * SAT implementation for SCSI WRITE12 and send FIS request to LL layer.
464 *
465 * \param tiRoot: Pointer to TISA initiator driver/port instance.
466 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
467 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
468 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
469 * \param satIOContext_t: Pointer to the SAT IO Context
470 *
471 * \return If command is started successfully
472 * - \e tiSuccess: I/O request successfully initiated.
473 * - \e tiBusy: No resources available, try again later.
474 * - \e tiIONoDevice: Invalid device handle.
475 * - \e tiError: Other errors.
476 */
477 /*****************************************************************************/
478 GLOBAL bit32 satWrite12(
479 tiRoot_t *tiRoot,
480 tiIORequest_t *tiIORequest,
481 tiDeviceHandle_t *tiDeviceHandle,
482 tiScsiInitiatorRequest_t *tiScsiRequest,
483 satIOContext_t *satIOContext);
484
485 /*****************************************************************************/
486 /*! \brief SAT implementation for SCSI WRITE10.
487 *
488 * SAT implementation for SCSI WRITE10 and send FIS request to LL layer.
489 *
490 * \param tiRoot: Pointer to TISA initiator driver/port instance.
491 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
492 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
493 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
494 * \param satIOContext_t: Pointer to the SAT IO Context
495 *
496 * \return If command is started successfully
497 * - \e tiSuccess: I/O request successfully initiated.
498 * - \e tiBusy: No resources available, try again later.
499 * - \e tiIONoDevice: Invalid device handle.
500 * - \e tiError: Other errors.
501 */
502 /*****************************************************************************/
503 GLOBAL bit32 satWrite10(
504 tiRoot_t *tiRoot,
505 tiIORequest_t *tiIORequest,
506 tiDeviceHandle_t *tiDeviceHandle,
507 tiScsiInitiatorRequest_t *tiScsiRequest,
508 satIOContext_t *satIOContext);
509 GLOBAL bit32 satWrite_1(
510 tiRoot_t *tiRoot,
511 tiIORequest_t *tiIORequest,
512 tiDeviceHandle_t *tiDeviceHandle,
513 tiScsiInitiatorRequest_t *tiScsiRequest,
514 satIOContext_t *satIOContext);
515
516
517 /*****************************************************************************/
518 /*! \brief SAT implementation for SCSI WRITE6.
519 *
520 * SAT implementation for SCSI WRITE6 and send FIS request to LL layer.
521 *
522 * \param tiRoot: Pointer to TISA initiator driver/port instance.
523 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
524 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
525 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
526 * \param satIOContext_t: Pointer to the SAT IO Context
527 *
528 * \return If command is started successfully
529 * - \e tiSuccess: I/O request successfully initiated.
530 * - \e tiBusy: No resources available, try again later.
531 * - \e tiIONoDevice: Invalid device handle.
532 * - \e tiError: Other errors.
533 */
534 /*****************************************************************************/
535 GLOBAL bit32 satWrite6(
536 tiRoot_t *tiRoot,
537 tiIORequest_t *tiIORequest,
538 tiDeviceHandle_t *tiDeviceHandle,
539 tiScsiInitiatorRequest_t *tiScsiRequest,
540 satIOContext_t *satIOContext);
541
542
543 /*****************************************************************************/
544 /*! \brief SAT implementation for SCSI satReportLun.
545 *
546 * SAT implementation for SCSI satReportLun. Only LUN0 is reported.
547 *
548 * \param tiRoot: Pointer to TISA initiator driver/port instance.
549 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
550 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
551 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
552 * \param satIOContext_t: Pointer to the SAT IO Context
553 *
554 * \return If command is started successfully
555 * - \e tiSuccess: I/O request successfully initiated.
556 * - \e tiBusy: No resources available, try again later.
557 * - \e tiIONoDevice: Invalid device handle.
558 * - \e tiError: Other errors.
559 */
560 /*****************************************************************************/
561 GLOBAL bit32 satReportLun(
562 tiRoot_t *tiRoot,
563 tiIORequest_t *tiIORequest,
564 tiDeviceHandle_t *tiDeviceHandle,
565 tiScsiInitiatorRequest_t *tiScsiRequest,
566 satIOContext_t *satIOContext);
567
568
569 /*****************************************************************************/
570 /*! \brief SAT implementation for SCSI satReadCapacity10.
571 *
572 * SAT implementation for SCSI satReadCapacity10.
573 *
574 * \param tiRoot: Pointer to TISA initiator driver/port instance.
575 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
576 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
577 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
578 * \param satIOContext_t: Pointer to the SAT IO Context
579 *
580 * \return If command is started successfully
581 * - \e tiSuccess: I/O request successfully initiated.
582 * - \e tiBusy: No resources available, try again later.
583 * - \e tiIONoDevice: Invalid device handle.
584 * - \e tiError: Other errors.
585 */
586 /*****************************************************************************/
587 GLOBAL bit32 satReadCapacity10(
588 tiRoot_t *tiRoot,
589 tiIORequest_t *tiIORequest,
590 tiDeviceHandle_t *tiDeviceHandle,
591 tiScsiInitiatorRequest_t *tiScsiRequest,
592 satIOContext_t *satIOContext);
593
594 /*****************************************************************************/
595 /*! \brief SAT implementation for SCSI satReadCapacity16.
596 *
597 * SAT implementation for SCSI satReadCapacity16.
598 *
599 * \param tiRoot: Pointer to TISA initiator driver/port instance.
600 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
601 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
602 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
603 * \param satIOContext_t: Pointer to the SAT IO Context
604 *
605 * \return If command is started successfully
606 * - \e tiSuccess: I/O request successfully initiated.
607 * - \e tiBusy: No resources available, try again later.
608 * - \e tiIONoDevice: Invalid device handle.
609 * - \e tiError: Other errors.
610 */
611 /*****************************************************************************/
612 GLOBAL bit32 satReadCapacity16(
613 tiRoot_t *tiRoot,
614 tiIORequest_t *tiIORequest,
615 tiDeviceHandle_t *tiDeviceHandle,
616 tiScsiInitiatorRequest_t *tiScsiRequest,
617 satIOContext_t *satIOContext);
618
619
620 GLOBAL bit32 satInquiry(
621 tiRoot_t *tiRoot,
622 tiIORequest_t *tiIORequest,
623 tiDeviceHandle_t *tiDeviceHandle,
624 tiScsiInitiatorRequest_t *tiScsiRequest,
625 satIOContext_t *satIOContext);
626
627 /*****************************************************************************/
628 /*! \brief SAT implementation for SCSI REQUEST SENSE.
629 *
630 * SAT implementation for SCSI REQUEST SENSE.
631 *
632 * \param tiRoot: Pointer to TISA initiator driver/port instance.
633 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
634 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
635 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
636 * \param satIOContext_t: Pointer to the SAT IO Context
637 *
638 * \return If command is started successfully
639 * - \e tiSuccess: I/O request successfully initiated.
640 * - \e tiBusy: No resources available, try again later.
641 * - \e tiIONoDevice: Invalid device handle.
642 * - \e tiError: Other errors.
643 */
644 /*****************************************************************************/
645 GLOBAL bit32 satRequestSense(
646 tiRoot_t *tiRoot,
647 tiIORequest_t *tiIORequest,
648 tiDeviceHandle_t *tiDeviceHandle,
649 tiScsiInitiatorRequest_t *tiScsiRequest,
650 satIOContext_t *satIOContext);
651 /*****************************************************************************/
652 /*! \brief SAT implementation for SCSI REQUEST SENSE.
653 *
654 * SAT implementation for SCSI REQUEST SENSE.
655 * Sub function of satRequestSense
656 *
657 * \param tiRoot: Pointer to TISA initiator driver/port instance.
658 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
659 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
660 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
661 * \param satIOContext_t: Pointer to the SAT IO Context
662 *
663 * \return If command is started successfully
664 * - \e tiSuccess: I/O request successfully initiated.
665 * - \e tiBusy: No resources available, try again later.
666 * - \e tiIONoDevice: Invalid device handle.
667 * - \e tiError: Other errors.
668 */
669 /*****************************************************************************/
670 GLOBAL bit32 satRequestSense_1(
671 tiRoot_t *tiRoot,
672 tiIORequest_t *tiIORequest,
673 tiDeviceHandle_t *tiDeviceHandle,
674 tiScsiInitiatorRequest_t *tiScsiRequest,
675 satIOContext_t *satIOContext);
676
677 /*****************************************************************************/
678 /*! \brief SAT implementation for SCSI satFormatUnit.
679 *
680 * SAT implementation for SCSI satFormatUnit.
681 *
682 * \param tiRoot: Pointer to TISA initiator driver/port instance.
683 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
684 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
685 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
686 * \param satIOContext_t: Pointer to the SAT IO Context
687 *
688 * \return If command is started successfully
689 * - \e tiSuccess: I/O request successfully initiated.
690 * - \e tiBusy: No resources available, try again later.
691 * - \e tiIONoDevice: Invalid device handle.
692 * - \e tiError: Other errors.
693 */
694 /*****************************************************************************/
695 GLOBAL bit32 satFormatUnit(
696 tiRoot_t *tiRoot,
697 tiIORequest_t *tiIORequest,
698 tiDeviceHandle_t *tiDeviceHandle,
699 tiScsiInitiatorRequest_t *tiScsiRequest,
700 satIOContext_t *satIOContext);
701
702 /*****************************************************************************/
703 /*! \brief SAT implementation for SCSI satSendDiagnostic.
704 *
705 * SAT implementation for SCSI satSendDiagnostic.
706 *
707 * \param tiRoot: Pointer to TISA initiator driver/port instance.
708 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
709 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
710 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
711 * \param satIOContext_t: Pointer to the SAT IO Context
712 *
713 * \return If command is started successfully
714 * - \e tiSuccess: I/O request successfully initiated.
715 * - \e tiBusy: No resources available, try again later.
716 * - \e tiIONoDevice: Invalid device handle.
717 * - \e tiError: Other errors.
718 */
719 /*****************************************************************************/
720 GLOBAL bit32 satSendDiagnostic(
721 tiRoot_t *tiRoot,
722 tiIORequest_t *tiIORequest,
723 tiDeviceHandle_t *tiDeviceHandle,
724 tiScsiInitiatorRequest_t *tiScsiRequest,
725 satIOContext_t *satIOContext);
726
727 /*****************************************************************************/
728 /*! \brief SAT implementation for SCSI satSendDiagnostic_1.
729 *
730 * SAT implementation for SCSI satSendDiagnostic_1.
731 * Sub function of satSendDiagnostic.
732 *
733 * \param tiRoot: Pointer to TISA initiator driver/port instance.
734 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
735 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
736 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
737 * \param satIOContext_t: Pointer to the SAT IO Context
738 *
739 * \return If command is started successfully
740 * - \e tiSuccess: I/O request successfully initiated.
741 * - \e tiBusy: No resources available, try again later.
742 * - \e tiIONoDevice: Invalid device handle.
743 * - \e tiError: Other errors.
744 */
745 /*****************************************************************************/
746 GLOBAL bit32 satSendDiagnostic_1(
747 tiRoot_t *tiRoot,
748 tiIORequest_t *tiIORequest,
749 tiDeviceHandle_t *tiDeviceHandle,
750 tiScsiInitiatorRequest_t *tiScsiRequest,
751 satIOContext_t *satIOContext);
752 /*****************************************************************************/
753 /*! \brief SAT implementation for SCSI satSendDiagnostic_2.
754 *
755 * SAT implementation for SCSI satSendDiagnostic_2.
756 * Sub function of satSendDiagnostic.
757 *
758 * \param tiRoot: Pointer to TISA initiator driver/port instance.
759 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
760 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
761 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
762 * \param satIOContext_t: Pointer to the SAT IO Context
763 *
764 * \return If command is started successfully
765 * - \e tiSuccess: I/O request successfully initiated.
766 * - \e tiBusy: No resources available, try again later.
767 * - \e tiIONoDevice: Invalid device handle.
768 * - \e tiError: Other errors.
769 */
770 /*****************************************************************************/
771 GLOBAL bit32 satSendDiagnostic_2(
772 tiRoot_t *tiRoot,
773 tiIORequest_t *tiIORequest,
774 tiDeviceHandle_t *tiDeviceHandle,
775 tiScsiInitiatorRequest_t *tiScsiRequest,
776 satIOContext_t *satIOContext);
777
778 /*****************************************************************************/
779 /*! \brief SAT implementation for SCSI satStartStopUnit.
780 *
781 * SAT implementation for SCSI satStartStopUnit.
782 *
783 * \param tiRoot: Pointer to TISA initiator driver/port instance.
784 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
785 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
786 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
787 * \param satIOContext_t: Pointer to the SAT IO Context
788 *
789 * \return If command is started successfully
790 * - \e tiSuccess: I/O request successfully initiated.
791 * - \e tiBusy: No resources available, try again later.
792 * - \e tiIONoDevice: Invalid device handle.
793 * - \e tiError: Other errors.
794 */
795 /*****************************************************************************/
796 GLOBAL bit32 satStartStopUnit(
797 tiRoot_t *tiRoot,
798 tiIORequest_t *tiIORequest,
799 tiDeviceHandle_t *tiDeviceHandle,
800 tiScsiInitiatorRequest_t *tiScsiRequest,
801 satIOContext_t *satIOContext);
802 /*****************************************************************************/
803 /*! \brief SAT implementation for SCSI satStartStopUnit_1.
804 *
805 * SAT implementation for SCSI satStartStopUnit_1.
806 * Sub function of satStartStopUnit
807 *
808 * \param tiRoot: Pointer to TISA initiator driver/port instance.
809 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
810 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
811 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
812 * \param satIOContext_t: Pointer to the SAT IO Context
813 *
814 * \return If command is started successfully
815 * - \e tiSuccess: I/O request successfully initiated.
816 * - \e tiBusy: No resources available, try again later.
817 * - \e tiIONoDevice: Invalid device handle.
818 * - \e tiError: Other errors.
819 */
820 /*****************************************************************************/
821 GLOBAL bit32 satStartStopUnit_1(
822 tiRoot_t *tiRoot,
823 tiIORequest_t *tiIORequest,
824 tiDeviceHandle_t *tiDeviceHandle,
825 tiScsiInitiatorRequest_t *tiScsiRequest,
826 satIOContext_t *satIOContext);
827
828 /*****************************************************************************/
829 /*! \brief SAT implementation for SCSI satRead10_1.
830 *
831 * SAT implementation for SCSI satRead10_1
832 * Sub function of satRead10
833 *
834 * \param tiRoot: Pointer to TISA initiator driver/port instance.
835 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
836 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
837 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
838 * \param satIOContext_t: Pointer to the SAT IO Context
839 *
840 * \return If command is started successfully
841 * - \e tiSuccess: I/O request successfully initiated.
842 * - \e tiBusy: No resources available, try again later.
843 * - \e tiIONoDevice: Invalid device handle.
844 * - \e tiError: Other errors.
845 */
846 /*****************************************************************************/
847 GLOBAL bit32 satRead_1(
848 tiRoot_t *tiRoot,
849 tiIORequest_t *tiIORequest,
850 tiDeviceHandle_t *tiDeviceHandle,
851 tiScsiInitiatorRequest_t *tiScsiRequest,
852 satIOContext_t *satIOContext);
853 GLOBAL bit32 satRead10_2(
854 tiRoot_t *tiRoot,
855 tiIORequest_t *tiIORequest,
856 tiDeviceHandle_t *tiDeviceHandle,
857 tiScsiInitiatorRequest_t *tiScsiRequest,
858 satIOContext_t *satIOContext);
859
860 /*****************************************************************************/
861 /*! \brief SAT implementation for SCSI satWriteSame10.
862 *
863 * SAT implementation for SCSI satWriteSame10.
864 *
865 * \param tiRoot: Pointer to TISA initiator driver/port instance.
866 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
867 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
868 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
869 * \param satIOContext_t: Pointer to the SAT IO Context
870 *
871 * \return If command is started successfully
872 * - \e tiSuccess: I/O request successfully initiated.
873 * - \e tiBusy: No resources available, try again later.
874 * - \e tiIONoDevice: Invalid device handle.
875 * - \e tiError: Other errors.
876 */
877 /*****************************************************************************/
878 GLOBAL bit32 satWriteSame10(
879 tiRoot_t *tiRoot,
880 tiIORequest_t *tiIORequest,
881 tiDeviceHandle_t *tiDeviceHandle,
882 tiScsiInitiatorRequest_t *tiScsiRequest,
883 satIOContext_t *satIOContext);
884
885 GLOBAL bit32 satWriteSame10_1(
886 tiRoot_t *tiRoot,
887 tiIORequest_t *tiIORequest,
888 tiDeviceHandle_t *tiDeviceHandle,
889 tiScsiInitiatorRequest_t *tiScsiRequest,
890 satIOContext_t *satIOContext,
891 bit32 lba
892 );
893 GLOBAL bit32 satWriteSame10_2(
894 tiRoot_t *tiRoot,
895 tiIORequest_t *tiIORequest,
896 tiDeviceHandle_t *tiDeviceHandle,
897 tiScsiInitiatorRequest_t *tiScsiRequest,
898 satIOContext_t *satIOContext,
899 bit32 lba
900 );
901 GLOBAL bit32 satWriteSame10_3(
902 tiRoot_t *tiRoot,
903 tiIORequest_t *tiIORequest,
904 tiDeviceHandle_t *tiDeviceHandle,
905 tiScsiInitiatorRequest_t *tiScsiRequest,
906 satIOContext_t *satIOContext,
907 bit32 lba
908 );
909 /*****************************************************************************/
910 /*! \brief SAT implementation for SCSI satWriteSame16.
911 *
912 * SAT implementation for SCSI satWriteSame16.
913 *
914 * \param tiRoot: Pointer to TISA initiator driver/port instance.
915 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
916 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
917 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
918 * \param satIOContext_t: Pointer to the SAT IO Context
919 *
920 * \return If command is started successfully
921 * - \e tiSuccess: I/O request successfully initiated.
922 * - \e tiBusy: No resources available, try again later.
923 * - \e tiIONoDevice: Invalid device handle.
924 * - \e tiError: Other errors.
925 */
926 /*****************************************************************************/
927 GLOBAL bit32 satWriteSame16(
928 tiRoot_t *tiRoot,
929 tiIORequest_t *tiIORequest,
930 tiDeviceHandle_t *tiDeviceHandle,
931 tiScsiInitiatorRequest_t *tiScsiRequest,
932 satIOContext_t *satIOContext);
933
934 /*****************************************************************************/
935 /*! \brief SAT implementation for SCSI satLogSenseAllocate.
936 *
937 * Part of SAT implementation for SCSI satLogSense.
938 *
939 * \param tiRoot: Pointer to TISA initiator driver/port instance.
940 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
941 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
942 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
943 * \param satIOContext_t: Pointer to the SAT IO Context
944 * \param payloadSize: size of payload to be allocated.
945 * \param flag: flag value
946 *
947 * \return If command is started successfully
948 * - \e tiSuccess: I/O request successfully initiated.
949 * - \e tiBusy: No resources available, try again later.
950 * - \e tiIONoDevice: Invalid device handle.
951 * - \e tiError: Other errors.
952 * \note
953 * - flag values: LOG_SENSE_0, LOG_SENSE_1, LOG_SENSE_2
954 */
955 /*****************************************************************************/
956 GLOBAL bit32 satLogSenseAllocate(
957 tiRoot_t *tiRoot,
958 tiIORequest_t *tiIORequest,
959 tiDeviceHandle_t *tiDeviceHandle,
960 tiScsiInitiatorRequest_t *tiScsiRequest,
961 satIOContext_t *satIOContext,
962 bit32 payloadSize,
963 bit32 flag
964 );
965
966 /*****************************************************************************/
967 /*! \brief SAT implementation for SCSI satSMARTEnable.
968 *
969 * Part of SAT implementation for SCSI satLogSense.
970 *
971 * \param tiRoot: Pointer to TISA initiator driver/port instance.
972 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
973 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
974 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
975 * \param satIOContext_t: Pointer to the SAT IO Context
976 *
977 * \return If command is started successfully
978 * - \e tiSuccess: I/O request successfully initiated.
979 * - \e tiBusy: No resources available, try again later.
980 * - \e tiIONoDevice: Invalid device handle.
981 * - \e tiError: Other errors.
982 */
983 /*****************************************************************************/
984 GLOBAL bit32 satSMARTEnable(
985 tiRoot_t *tiRoot,
986 tiIORequest_t *tiIORequest,
987 tiDeviceHandle_t *tiDeviceHandle,
988 tiScsiInitiatorRequest_t *tiScsiRequest,
989 satIOContext_t *satIOContext);
990
991 /*****************************************************************************/
992 /*! \brief SAT implementation for SCSI satLogSense_1.
993 *
994 * Part of SAT implementation for SCSI satLogSense.
995 *
996 * \param tiRoot: Pointer to TISA initiator driver/port instance.
997 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
998 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
999 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1000 * \param satIOContext_t: Pointer to the SAT IO Context
1001 *
1002 * \return If command is started successfully
1003 * - \e tiSuccess: I/O request successfully initiated.
1004 * - \e tiBusy: No resources available, try again later.
1005 * - \e tiIONoDevice: Invalid device handle.
1006 * - \e tiError: Other errors.
1007 */
1008 /*****************************************************************************/
1009 GLOBAL bit32 satLogSense_1(
1010 tiRoot_t *tiRoot,
1011 tiIORequest_t *tiIORequest,
1012 tiDeviceHandle_t *tiDeviceHandle,
1013 tiScsiInitiatorRequest_t *tiScsiRequest,
1014 satIOContext_t *satIOContext);
1015
1016 /*****************************************************************************/
1017 /*! \brief SAT implementation for SCSI satLogSense_2.
1018 *
1019 * Part of SAT implementation for SCSI satLogSense.
1020 *
1021 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1022 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1023 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1024 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1025 * \param satIOContext_t: Pointer to the SAT IO Context
1026 *
1027 * \return If command is started successfully
1028 * - \e tiSuccess: I/O request successfully initiated.
1029 * - \e tiBusy: No resources available, try again later.
1030 * - \e tiIONoDevice: Invalid device handle.
1031 * - \e tiError: Other errors.
1032 */
1033 /*****************************************************************************/
1034 GLOBAL bit32 satLogSense_2(
1035 tiRoot_t *tiRoot,
1036 tiIORequest_t *tiIORequest,
1037 tiDeviceHandle_t *tiDeviceHandle,
1038 tiScsiInitiatorRequest_t *tiScsiRequest,
1039 satIOContext_t *satIOContext);
1040
1041 /*****************************************************************************/
1042 /*! \brief SAT implementation for SCSI satLogSense_3.
1043 *
1044 * Part of SAT implementation for SCSI satLogSense.
1045 *
1046 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1047 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1048 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1049 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1050 * \param satIOContext_t: Pointer to the SAT IO Context
1051 *
1052 * \return If command is started successfully
1053 * - \e tiSuccess: I/O request successfully initiated.
1054 * - \e tiBusy: No resources available, try again later.
1055 * - \e tiIONoDevice: Invalid device handle.
1056 * - \e tiError: Other errors.
1057 */
1058 /*****************************************************************************/
1059 GLOBAL bit32 satLogSense_3(
1060 tiRoot_t *tiRoot,
1061 tiIORequest_t *tiIORequest,
1062 tiDeviceHandle_t *tiDeviceHandle,
1063 tiScsiInitiatorRequest_t *tiScsiRequest,
1064 satIOContext_t *satIOContext);
1065
1066
1067 /*****************************************************************************/
1068 /*! \brief SAT implementation for SCSI satLogSense.
1069 *
1070 * SAT implementation for SCSI satLogSense.
1071 *
1072 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1073 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1074 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1075 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1076 * \param satIOContext_t: Pointer to the SAT IO Context
1077 *
1078 * \return If command is started successfully
1079 * - \e tiSuccess: I/O request successfully initiated.
1080 * - \e tiBusy: No resources available, try again later.
1081 * - \e tiIONoDevice: Invalid device handle.
1082 * - \e tiError: Other errors.
1083 */
1084 /*****************************************************************************/
1085 GLOBAL bit32 satLogSense(
1086 tiRoot_t *tiRoot,
1087 tiIORequest_t *tiIORequest,
1088 tiDeviceHandle_t *tiDeviceHandle,
1089 tiScsiInitiatorRequest_t *tiScsiRequest,
1090 satIOContext_t *satIOContext);
1091
1092 /*****************************************************************************/
1093 /*! \brief SAT implementation for SCSI satModeSelect6.
1094 *
1095 * SAT implementation for SCSI satModeSelect6.
1096 *
1097 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1098 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1099 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1100 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1101 * \param satIOContext_t: Pointer to the SAT IO Context
1102 *
1103 * \return If command is started successfully
1104 * - \e tiSuccess: I/O request successfully initiated.
1105 * - \e tiBusy: No resources available, try again later.
1106 * - \e tiIONoDevice: Invalid device handle.
1107 * - \e tiError: Other errors.
1108 */
1109 /*****************************************************************************/
1110 GLOBAL bit32 satModeSelect6(
1111 tiRoot_t *tiRoot,
1112 tiIORequest_t *tiIORequest,
1113 tiDeviceHandle_t *tiDeviceHandle,
1114 tiScsiInitiatorRequest_t *tiScsiRequest,
1115 satIOContext_t *satIOContext);
1116 GLOBAL bit32 satModeSelect6n10_1(
1117 tiRoot_t *tiRoot,
1118 tiIORequest_t *tiIORequest,
1119 tiDeviceHandle_t *tiDeviceHandle,
1120 tiScsiInitiatorRequest_t *tiScsiRequest,
1121 satIOContext_t *satIOContext);
1122
1123 /*****************************************************************************/
1124 /*! \brief SAT implementation for SCSI satModeSelect10.
1125 *
1126 * SAT implementation for SCSI satModeSelect10.
1127 *
1128 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1129 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1130 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1131 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1132 * \param satIOContext_t: Pointer to the SAT IO Context
1133 *
1134 * \return If command is started successfully
1135 * - \e tiSuccess: I/O request successfully initiated.
1136 * - \e tiBusy: No resources available, try again later.
1137 * - \e tiIONoDevice: Invalid device handle.
1138 * - \e tiError: Other errors.
1139 */
1140 /*****************************************************************************/
1141 GLOBAL bit32 satModeSelect10(
1142 tiRoot_t *tiRoot,
1143 tiIORequest_t *tiIORequest,
1144 tiDeviceHandle_t *tiDeviceHandle,
1145 tiScsiInitiatorRequest_t *tiScsiRequest,
1146 satIOContext_t *satIOContext);
1147
1148 /*****************************************************************************/
1149 /*! \brief SAT implementation for SCSI satSynchronizeCache10.
1150 *
1151 * SAT implementation for SCSI satSynchronizeCache10.
1152 *
1153 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1154 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1155 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1156 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1157 * \param satIOContext_t: Pointer to the SAT IO Context
1158 *
1159 * \return If command is started successfully
1160 * - \e tiSuccess: I/O request successfully initiated.
1161 * - \e tiBusy: No resources available, try again later.
1162 * - \e tiIONoDevice: Invalid device handle.
1163 * - \e tiError: Other errors.
1164 */
1165 /*****************************************************************************/
1166 GLOBAL bit32 satSynchronizeCache10(
1167 tiRoot_t *tiRoot,
1168 tiIORequest_t *tiIORequest,
1169 tiDeviceHandle_t *tiDeviceHandle,
1170 tiScsiInitiatorRequest_t *tiScsiRequest,
1171 satIOContext_t *satIOContext);
1172
1173 /*****************************************************************************/
1174 /*! \brief SAT implementation for SCSI satSynchronizeCache16.
1175 *
1176 * SAT implementation for SCSI satSynchronizeCache16.
1177 *
1178 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1179 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1180 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1181 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1182 * \param satIOContext_t: Pointer to the SAT IO Context
1183 *
1184 * \return If command is started successfully
1185 * - \e tiSuccess: I/O request successfully initiated.
1186 * - \e tiBusy: No resources available, try again later.
1187 * - \e tiIONoDevice: Invalid device handle.
1188 * - \e tiError: Other errors.
1189 */
1190 /*****************************************************************************/
1191 GLOBAL bit32 satSynchronizeCache16(
1192 tiRoot_t *tiRoot,
1193 tiIORequest_t *tiIORequest,
1194 tiDeviceHandle_t *tiDeviceHandle,
1195 tiScsiInitiatorRequest_t *tiScsiRequest,
1196 satIOContext_t *satIOContext);
1197
1198 /*****************************************************************************/
1199 /*! \brief SAT implementation for SCSI satWriteAndVerify10.
1200 *
1201 * SAT implementation for SCSI satWriteAndVerify10.
1202 *
1203 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1204 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1205 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1206 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1207 * \param satIOContext_t: Pointer to the SAT IO Context
1208 *
1209 * \return If command is started successfully
1210 * - \e tiSuccess: I/O request successfully initiated.
1211 * - \e tiBusy: No resources available, try again later.
1212 * - \e tiIONoDevice: Invalid device handle.
1213 * - \e tiError: Other errors.
1214 */
1215 /*****************************************************************************/
1216 GLOBAL bit32 satWriteAndVerify10(
1217 tiRoot_t *tiRoot,
1218 tiIORequest_t *tiIORequest,
1219 tiDeviceHandle_t *tiDeviceHandle,
1220 tiScsiInitiatorRequest_t *tiScsiRequest,
1221 satIOContext_t *satIOContext);
1222
1223 #ifdef REMOVED
1224 /*****************************************************************************/
1225 /*! \brief SAT implementation for SCSI satWriteAndVerify10_1.
1226 *
1227 * SAT implementation for SCSI satWriteAndVerify10_1.
1228 * Sub function of satWriteAndVerify10
1229 *
1230 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1231 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1232 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1233 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1234 * \param satIOContext_t: Pointer to the SAT IO Context
1235 *
1236 * \return If command is started successfully
1237 * - \e tiSuccess: I/O request successfully initiated.
1238 * - \e tiBusy: No resources available, try again later.
1239 * - \e tiIONoDevice: Invalid device handle.
1240 * - \e tiError: Other errors.
1241 */
1242 /*****************************************************************************/
1243 GLOBAL bit32 satWriteAndVerify10_1(
1244 tiRoot_t *tiRoot,
1245 tiIORequest_t *tiIORequest,
1246 tiDeviceHandle_t *tiDeviceHandle,
1247 tiScsiInitiatorRequest_t *tiScsiRequest,
1248 satIOContext_t *satIOContext);
1249 #endif
1250
1251 /*****************************************************************************/
1252 /*! \brief SAT implementation for SCSI satWriteAndVerify12.
1253 *
1254 * SAT implementation for SCSI satWriteAndVerify12.
1255 *
1256 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1257 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1258 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1259 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1260 * \param satIOContext_t: Pointer to the SAT IO Context
1261 *
1262 * \return If command is started successfully
1263 * - \e tiSuccess: I/O request successfully initiated.
1264 * - \e tiBusy: No resources available, try again later.
1265 * - \e tiIONoDevice: Invalid device handle.
1266 * - \e tiError: Other errors.
1267 */
1268 /*****************************************************************************/
1269 GLOBAL bit32 satWriteAndVerify12(
1270 tiRoot_t *tiRoot,
1271 tiIORequest_t *tiIORequest,
1272 tiDeviceHandle_t *tiDeviceHandle,
1273 tiScsiInitiatorRequest_t *tiScsiRequest,
1274 satIOContext_t *satIOContext);
1275
1276 GLOBAL bit32 satNonChainedWriteNVerify_Verify(
1277 tiRoot_t *tiRoot,
1278 tiIORequest_t *tiIORequest,
1279 tiDeviceHandle_t *tiDeviceHandle,
1280 tiScsiInitiatorRequest_t *tiScsiRequest,
1281 satIOContext_t *satIOContext);
1282
1283 GLOBAL bit32 satChainedWriteNVerify_Write(
1284 tiRoot_t *tiRoot,
1285 tiIORequest_t *tiIORequest,
1286 tiDeviceHandle_t *tiDeviceHandle,
1287 tiScsiInitiatorRequest_t *tiScsiRequest,
1288 satIOContext_t *satIOContext);
1289
1290 GLOBAL bit32 satChainedWriteNVerify_Verify(
1291 tiRoot_t *tiRoot,
1292 tiIORequest_t *tiIORequest,
1293 tiDeviceHandle_t *tiDeviceHandle,
1294 tiScsiInitiatorRequest_t *tiScsiRequest,
1295 satIOContext_t *satIOContext);
1296
1297 GLOBAL bit32 satChainedWriteNVerify_Start_Verify(
1298 tiRoot_t *tiRoot,
1299 tiIORequest_t *tiIORequest,
1300 tiDeviceHandle_t *tiDeviceHandle,
1301 tiScsiInitiatorRequest_t *tiScsiRequest,
1302 satIOContext_t *satIOContext);
1303
1304
1305 /*****************************************************************************/
1306 /*! \brief SAT implementation for SCSI satWriteAndVerify16.
1307 *
1308 * SAT implementation for SCSI satWriteAndVerify16.
1309 *
1310 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1311 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1312 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1313 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1314 * \param satIOContext_t: Pointer to the SAT IO Context
1315 *
1316 * \return If command is started successfully
1317 * - \e tiSuccess: I/O request successfully initiated.
1318 * - \e tiBusy: No resources available, try again later.
1319 * - \e tiIONoDevice: Invalid device handle.
1320 * - \e tiError: Other errors.
1321 */
1322 /*****************************************************************************/
1323 GLOBAL bit32 satWriteAndVerify16(
1324 tiRoot_t *tiRoot,
1325 tiIORequest_t *tiIORequest,
1326 tiDeviceHandle_t *tiDeviceHandle,
1327 tiScsiInitiatorRequest_t *tiScsiRequest,
1328 satIOContext_t *satIOContext);
1329
1330 GLOBAL bit32 satChainedVerify16(
1331 tiRoot_t *tiRoot,
1332 tiIORequest_t *tiIORequest,
1333 tiDeviceHandle_t *tiDeviceHandle,
1334 tiScsiInitiatorRequest_t *tiScsiRequest,
1335 satIOContext_t *satIOContext);
1336
1337 /*****************************************************************************/
1338 /*! \brief SAT implementation for SCSI TEST UNIT READY.
1339 *
1340 * SAT implementation for SCSI TUR and send FIS request to LL layer.
1341 *
1342 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1343 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1344 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1345 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1346 * \param satIOContext_t: Pointer to the SAT IO Context
1347 *
1348 * \return If command is started successfully
1349 * - \e tiSuccess: I/O request successfully initiated.
1350 * - \e tiBusy: No resources available, try again later.
1351 * - \e tiIONoDevice: Invalid device handle.
1352 * - \e tiError: Other errors.
1353 */
1354 /*****************************************************************************/
1355 GLOBAL bit32 satTestUnitReady(
1356 tiRoot_t *tiRoot,
1357 tiIORequest_t *tiIORequest,
1358 tiDeviceHandle_t *tiDeviceHandle,
1359 tiScsiInitiatorRequest_t *tiScsiRequest,
1360 satIOContext_t *satIOContext);
1361
1362 /*****************************************************************************/
1363 /*! \brief SAT implementation for SCSI MODE SENSE (6).
1364 *
1365 * SAT implementation for SCSI MODE SENSE (6).
1366 *
1367 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1368 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1369 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1370 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1371 * \param satIOContext_t: Pointer to the SAT IO Context
1372 *
1373 * \return If command is started successfully
1374 * - \e tiSuccess: I/O request successfully initiated.
1375 * - \e tiBusy: No resources available, try again later.
1376 * - \e tiIONoDevice: Invalid device handle.
1377 * - \e tiError: Other errors.
1378 */
1379 /*****************************************************************************/
1380 GLOBAL bit32 satModeSense6(
1381 tiRoot_t *tiRoot,
1382 tiIORequest_t *tiIORequest,
1383 tiDeviceHandle_t *tiDeviceHandle,
1384 tiScsiInitiatorRequest_t *tiScsiRequest,
1385 satIOContext_t *satIOContext);
1386
1387
1388 /*****************************************************************************/
1389 /*! \brief SAT implementation for SCSI MODE SENSE (10).
1390 *
1391 * SAT implementation for SCSI MODE SENSE (10).
1392 *
1393 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1394 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1395 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1396 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1397 * \param satIOContext_t: Pointer to the SAT IO Context
1398 *
1399 * \return If command is started successfully
1400 * - \e tiSuccess: I/O request successfully initiated.
1401 * - \e tiBusy: No resources available, try again later.
1402 * - \e tiIONoDevice: Invalid device handle.
1403 * - \e tiError: Other errors.
1404 */
1405 /*****************************************************************************/
1406 GLOBAL bit32 satModeSense10(
1407 tiRoot_t *tiRoot,
1408 tiIORequest_t *tiIORequest,
1409 tiDeviceHandle_t *tiDeviceHandle,
1410 tiScsiInitiatorRequest_t *tiScsiRequest,
1411 satIOContext_t *satIOContext);
1412
1413
1414 /*****************************************************************************/
1415 /*! \brief SAT implementation for SCSI VERIFY (10).
1416 *
1417 * SAT implementation for SCSI VERIFY (10).
1418 *
1419 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1420 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1421 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1422 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1423 * \param satIOContext_t: Pointer to the SAT IO Context
1424 *
1425 * \return If command is started successfully
1426 * - \e tiSuccess: I/O request successfully initiated.
1427 * - \e tiBusy: No resources available, try again later.
1428 * - \e tiIONoDevice: Invalid device handle.
1429 * - \e tiError: Other errors.
1430 */
1431 /*****************************************************************************/
1432 GLOBAL bit32 satVerify10(
1433 tiRoot_t *tiRoot,
1434 tiIORequest_t *tiIORequest,
1435 tiDeviceHandle_t *tiDeviceHandle,
1436 tiScsiInitiatorRequest_t *tiScsiRequest,
1437 satIOContext_t *satIOContext);
1438
1439 GLOBAL bit32 satChainedVerify(
1440 tiRoot_t *tiRoot,
1441 tiIORequest_t *tiIORequest,
1442 tiDeviceHandle_t *tiDeviceHandle,
1443 tiScsiInitiatorRequest_t *tiScsiRequest,
1444 satIOContext_t *satIOContext);
1445
1446 /*****************************************************************************/
1447 /*! \brief SAT implementation for SCSI VERIFY (12).
1448 *
1449 * SAT implementation for SCSI VERIFY (12).
1450 *
1451 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1452 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1453 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1454 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1455 * \param satIOContext_t: Pointer to the SAT IO Context
1456 *
1457 * \return If command is started successfully
1458 * - \e tiSuccess: I/O request successfully initiated.
1459 * - \e tiBusy: No resources available, try again later.
1460 * - \e tiIONoDevice: Invalid device handle.
1461 * - \e tiError: Other errors.
1462 */
1463 /*****************************************************************************/
1464 GLOBAL bit32 satVerify12(
1465 tiRoot_t *tiRoot,
1466 tiIORequest_t *tiIORequest,
1467 tiDeviceHandle_t *tiDeviceHandle,
1468 tiScsiInitiatorRequest_t *tiScsiRequest,
1469 satIOContext_t *satIOContext);
1470 /*****************************************************************************/
1471 /*! \brief SAT implementation for SCSI VERIFY (16).
1472 *
1473 * SAT implementation for SCSI VERIFY (16).
1474 *
1475 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1476 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1477 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1478 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1479 * \param satIOContext_t: Pointer to the SAT IO Context
1480 *
1481 * \return If command is started successfully
1482 * - \e tiSuccess: I/O request successfully initiated.
1483 * - \e tiBusy: No resources available, try again later.
1484 * - \e tiIONoDevice: Invalid device handle.
1485 * - \e tiError: Other errors.
1486 */
1487 /*****************************************************************************/
1488 GLOBAL bit32 satVerify16(
1489 tiRoot_t *tiRoot,
1490 tiIORequest_t *tiIORequest,
1491 tiDeviceHandle_t *tiDeviceHandle,
1492 tiScsiInitiatorRequest_t *tiScsiRequest,
1493 satIOContext_t *satIOContext);
1494 /*****************************************************************************/
1495 /*! \brief SAT implementation for SCSI satTestUnitReady_1.
1496 *
1497 * SAT implementation for SCSI satTestUnitReady_1
1498 * Sub function of satTestUnitReady
1499 *
1500 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1501 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1502 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1503 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1504 * \param satIOContext_t: Pointer to the SAT IO Context
1505 *
1506 * \return If command is started successfully
1507 * - \e tiSuccess: I/O request successfully initiated.
1508 * - \e tiBusy: No resources available, try again later.
1509 * - \e tiIONoDevice: Invalid device handle.
1510 * - \e tiError: Other errors.
1511 */
1512 /*****************************************************************************/
1513 GLOBAL bit32 satTestUnitReady_1(
1514 tiRoot_t *tiRoot,
1515 tiIORequest_t *tiIORequest,
1516 tiDeviceHandle_t *tiDeviceHandle,
1517 tiScsiInitiatorRequest_t *tiScsiRequest,
1518 satIOContext_t *satIOContext);
1519
1520 /*****************************************************************************/
1521 /*! \brief SAT implementation for SCSI STANDARD INQUIRY.
1522 *
1523 * SAT implementation for SCSI STANDARD INQUIRY.
1524 *
1525 * \param pInquiry: Pointer to Inquiry Data buffer.
1526 * \param pSATAIdData: Pointer to ATA IDENTIFY DEVICE data.
1527 *
1528 * \return None.
1529 */
1530 /*****************************************************************************/
1531 GLOBAL void satInquiryStandard(
1532 bit8 *pInquiry,
1533 agsaSATAIdentifyData_t *pSATAIdData,
1534 tiIniScsiCmnd_t *scsiCmnd
1535 );
1536
1537
1538 /*****************************************************************************/
1539 /*! \brief SAT implementation for SCSI INQUIRY page 0.
1540 *
1541 * SAT implementation for SCSI INQUIRY page 0.
1542 *
1543 * \param pInquiry: Pointer to Inquiry Data buffer.
1544 * \param pSATAIdData: Pointer to ATA IDENTIFY DEVICE data.
1545 *
1546 * \return None.
1547 */
1548 /*****************************************************************************/
1549 GLOBAL void satInquiryPage0(
1550 bit8 *pInquiry,
1551 agsaSATAIdentifyData_t *pSATAIdData);
1552
1553
1554 /*****************************************************************************/
1555 /*! \brief SAT implementation for SCSI INQUIRY page 83.
1556 *
1557 * SAT implementation for SCSI INQUIRY page 83.
1558 *
1559 * \param pInquiry: Pointer to Inquiry Data buffer.
1560 * \param pSATAIdData: Pointer to ATA IDENTIFY DEVICE data.
1561 * \param pSatDevData Pointer to internal device data structure
1562 *
1563 * \return None.
1564 */
1565 /*****************************************************************************/
1566 GLOBAL void satInquiryPage83(
1567 bit8 *pInquiry,
1568 agsaSATAIdentifyData_t *pSATAIdData,
1569 satDeviceData_t *pSatDevData);
1570
1571 /*****************************************************************************/
1572 /*! \brief SAT implementation for SCSI INQUIRY page 89.
1573 *
1574 * SAT implementation for SCSI INQUIRY page 89.
1575 *
1576 * \param pInquiry: Pointer to Inquiry Data buffer.
1577 * \param pSATAIdData: Pointer to ATA IDENTIFY DEVICE data.
1578 * \param pSatDevData Pointer to internal device data structure
1579 *
1580 * \return None.
1581 */
1582 /*****************************************************************************/
1583 GLOBAL void satInquiryPage89(
1584 bit8 *pInquiry,
1585 agsaSATAIdentifyData_t *pSATAIdData,
1586 satDeviceData_t *pSatDevData);
1587
1588 /*****************************************************************************/
1589 /*! \brief SAT implementation for SCSI INQUIRY page 80.
1590 *
1591 * SAT implementation for SCSI INQUIRY page 80.
1592 *
1593 * \param pInquiry: Pointer to Inquiry Data buffer.
1594 * \param pSATAIdData: Pointer to ATA IDENTIFY DEVICE data.
1595 *
1596 * \return None.
1597 */
1598 /*****************************************************************************/
1599 GLOBAL void satInquiryPage80(
1600 bit8 *pInquiry,
1601 agsaSATAIdentifyData_t *pSATAIdData);
1602
1603
1604 /*****************************************************************************
1605 *! \brief sataLLIOStart
1606 *
1607 * This routine is called to initiate a new SATA request to LL layer.
1608 * This function implements/encapsulates HW and LL API dependency.
1609 *
1610 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1611 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1612 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1613 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1614 * \param satIOContext_t: Pointer to the SAT IO Context
1615 *
1616 * \return:
1617 *
1618 * tiSuccess: I/O request successfully initiated.
1619 * tiBusy: No resources available, try again later.
1620 * tiIONoDevice: Invalid device handle.
1621 * tiError: Other errors that prevent the I/O request to be started.
1622 *
1623 *
1624 *****************************************************************************/
1625
1626 GLOBAL bit32 sataLLIOStart (
1627 tiRoot_t *tiRoot,
1628 tiIORequest_t *tiIORequest,
1629 tiDeviceHandle_t *tiDeviceHandle,
1630 tiScsiInitiatorRequest_t *tiScsiRequest,
1631 satIOContext_t *satIOContext
1632 );
1633
1634 /*****************************************************************************
1635 *! \brief itdsataIOPrepareSGL
1636 *
1637 * This function is called to prepare and translate the TISA SGL information
1638 * to the SAS/SATA LL layer specific SGL.
1639 *
1640 * \param tiRoot: Pointer to initiator driver/port instance.
1641 * \param IORequestBody: TD layer request body for the I/O.
1642 * \param tiSgl1: First TISA SGL info.
1643 * \param sglVirtualAddr: The virtual address of the first element in
1644 * tiSgl1 when tiSgl1 is used with the type tiSglList.
1645 *
1646 * \return:
1647 *
1648 * tiSuccess: SGL initialized successfully.
1649 * tiError: Failed to initialize SGL.
1650 *
1651 *
1652 *****************************************************************************/
1653 osGLOBAL bit32 itdsataIOPrepareSGL(
1654 tiRoot_t *tiRoot,
1655 tdIORequestBody_t *tdIORequestBody,
1656 tiSgl_t *tiSgl1,
1657 void *sglVirtualAddr
1658 );
1659
1660 /*****************************************************************************
1661 *! \brief satNonChainedDataIOCB
1662 *
1663 * This routine is a callback function called from ossaSATACompleted().
1664 * This CB routine deals with normal non-chained data I/O SATA request.
1665 *
1666 * \param agRoot: Handles for this instance of SAS/SATA hardware
1667 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1668 * \param agIOStatus: Status of completed I/O.
1669 * \param agSATAParm1: Additional info based on status.
1670 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1671 * length.
1672 * \param ioContext: Pointer to satIOContext_t.
1673 *
1674 * \return: none
1675 *
1676 *****************************************************************************/
1677
1678 void satNonChainedDataIOCB(
1679 agsaRoot_t *agRoot,
1680 agsaIORequest_t *agIORequest,
1681 bit32 agIOStatus,
1682 agsaFisHeader_t *agFirstDword,
1683 bit32 agIOInfoLen,
1684 agsaFrameHandle_t agFrameHandle,
1685 void *ioContext
1686 );
1687 void satChainedDataIOCB(
1688 agsaRoot_t *agRoot,
1689 agsaIORequest_t *agIORequest,
1690 bit32 agIOStatus,
1691 agsaFisHeader_t *agFirstDword,
1692 bit32 agIOInfoLen,
1693 agsaFrameHandle_t agFrameHandle,
1694 void *ioContext
1695 );
1696
1697 void satNonChainedWriteNVerifyCB(
1698 agsaRoot_t *agRoot,
1699 agsaIORequest_t *agIORequest,
1700 bit32 agIOStatus,
1701 agsaFisHeader_t *agFirstDword,
1702 bit32 agIOInfoLen,
1703 agsaFrameHandle_t agFrameHandle,
1704 void *ioContext
1705 );
1706
1707 void satChainedWriteNVerifyCB(
1708 agsaRoot_t *agRoot,
1709 agsaIORequest_t *agIORequest,
1710 bit32 agIOStatus,
1711 agsaFisHeader_t *agFirstDword,
1712 bit32 agIOInfoLen,
1713 agsaFrameHandle_t agFrameHandle,
1714 void *ioContext
1715 );
1716
1717 /*****************************************************************************
1718 *! \brief satNonDataIOCB
1719 *
1720 * This routine is a callback function called from ossaSATACompleted().
1721 * This CB routine deals with non-data I/O SATA request.
1722 *
1723 * \param agRoot: Handles for this instance of SAS/SATA hardware
1724 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1725 * \param agIOStatus: Status of completed I/O.
1726 * \param agSATAParm1: Additional info based on status.
1727 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1728 * length.
1729 * \param ioContext: Pointer to satIOContext_t.
1730 *
1731 * \return: none
1732 *
1733 *****************************************************************************/
1734 void satNonDataIOCB(
1735 agsaRoot_t *agRoot,
1736 agsaIORequest_t *agIORequest,
1737 bit32 agIOStatus,
1738 agsaFisHeader_t *agFirstDword,
1739 bit32 agIOInfoLen,
1740 agsaFrameHandle_t agFrameHandle,
1741 void *ioContext
1742 );
1743
1744 /*****************************************************************************
1745 *! \brief satSMARTEnableCB
1746 *
1747 * This routine is a callback function for satSMARTEnable()
1748 *
1749 * \param agRoot: Handles for this instance of SAS/SATA hardware
1750 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1751 * \param agIOStatus: Status of completed I/O.
1752 * \param agSATAParm1: Additional info based on status.
1753 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1754 * length.
1755 * \param ioContext: Pointer to satIOContext_t.
1756 *
1757 * \return: none
1758 *
1759 *****************************************************************************/
1760 void satSMARTEnableCB(
1761 agsaRoot_t *agRoot,
1762 agsaIORequest_t *agIORequest,
1763 bit32 agIOStatus,
1764 agsaFisHeader_t *agFirstDword,
1765 bit32 agIOInfoLen,
1766 agsaFrameHandle_t agFrameHandle,
1767 void *ioContext
1768 ) ;
1769
1770 /*****************************************************************************
1771 *! \brief satLogSenseCB
1772 *
1773 * This routine is a callback function for satLogSense()
1774 *
1775 * \param agRoot: Handles for this instance of SAS/SATA hardware
1776 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1777 * \param agIOStatus: Status of completed I/O.
1778 * \param agSATAParm1: Additional info based on status.
1779 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1780 * length.
1781 * \param ioContext: Pointer to satIOContext_t.
1782 *
1783 * \return: none
1784 *
1785 *****************************************************************************/
1786 void satLogSenseCB(
1787 agsaRoot_t *agRoot,
1788 agsaIORequest_t *agIORequest,
1789 bit32 agIOStatus,
1790 agsaFisHeader_t *agFirstDword,
1791 bit32 agIOInfoLen,
1792 agsaFrameHandle_t agFrameHandle,
1793 void *ioCotext
1794 );
1795 void satModeSelect6n10CB(
1796 agsaRoot_t *agRoot,
1797 agsaIORequest_t *agIORequest,
1798 bit32 agIOStatus,
1799 agsaFisHeader_t *agFirstDword,
1800 bit32 agIOInfoLen,
1801 agsaFrameHandle_t agFrameHandle,
1802 void *ioContext
1803 );
1804 void satSynchronizeCache10n16CB(
1805 agsaRoot_t *agRoot,
1806 agsaIORequest_t *agIORequest,
1807 bit32 agIOStatus,
1808 agsaFisHeader_t *agFirstDword,
1809 bit32 agIOInfoLen,
1810 agsaFrameHandle_t agFrameHandle,
1811 void *ioContext
1812 );
1813 #ifdef REMOVED
1814 void satWriteAndVerify10CB(
1815 agsaRoot_t *agRoot,
1816 agsaIORequest_t *agIORequest,
1817 bit32 agIOStatus,
1818 agsaFisHeader_t *agFirstDword,
1819 bit32 agIOInfoLen,
1820 agsaFrameHandle_t agFrameHandle,
1821 void *ioContext
1822 );
1823 #endif
1824
1825 /*****************************************************************************
1826 *! \brief satReadLogExtCB
1827 *
1828 * This routine is a callback function called from ossaSATACompleted().
1829 * This CB routine deals READ LOG EXT completion.
1830 *
1831 * \param agRoot: Handles for this instance of SAS/SATA hardware
1832 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1833 * \param agIOStatus: Status of completed I/O.
1834 * \param agSATAParm1: Additional info based on status.
1835 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1836 * length.
1837 * \param ioContext: Pointer to satIOContext_t.
1838 *
1839 * \return: none
1840 *
1841 *****************************************************************************/
1842 void satReadLogExtCB(
1843 agsaRoot_t *agRoot,
1844 agsaIORequest_t *agIORequest,
1845 bit32 agIOStatus,
1846 agsaFisHeader_t *agFirstDword,
1847 bit32 agIOInfoLen,
1848 agsaFrameHandle_t agFrameHandle,
1849 void *ioContext
1850 );
1851 void satTestUnitReadyCB(
1852 agsaRoot_t *agRoot,
1853 agsaIORequest_t *agIORequest,
1854 bit32 agIOStatus,
1855 agsaFisHeader_t *agFirstDword,
1856 bit32 agIOInfoLen,
1857 agsaFrameHandle_t agFrameHandle,
1858 void *ioContext
1859 );
1860 void satWriteSame10CB(
1861 agsaRoot_t *agRoot,
1862 agsaIORequest_t *agIORequest,
1863 bit32 agIOStatus,
1864 agsaFisHeader_t *agFirstDword,
1865 bit32 agIOInfoLen,
1866 agsaFrameHandle_t agFrameHandle,
1867 void *ioContext
1868 );
1869 /*****************************************************************************
1870 *! \brief satSendDiagnosticCB
1871 *
1872 * This routine is a callback function called from ossaSATACompleted().
1873 * This CB routine deals with Send Diagnostic completion.
1874 *
1875 * \param agRoot: Handles for this instance of SAS/SATA hardware
1876 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1877 * \param agIOStatus: Status of completed I/O.
1878 * \param agSATAParm1: Additional info based on status.
1879 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1880 * length.
1881 * \param ioContext: Pointer to satIOContext_t.
1882 *
1883 * \return: none
1884 *
1885 *****************************************************************************/
1886 void satSendDiagnosticCB(
1887 agsaRoot_t *agRoot,
1888 agsaIORequest_t *agIORequest,
1889 bit32 agIOStatus,
1890 agsaFisHeader_t *agFirstDword,
1891 bit32 agIOInfoLen,
1892 agsaFrameHandle_t agFrameHandle,
1893 void *ioContext
1894 );
1895 /*****************************************************************************
1896 *! \brief satRequestSenseCB
1897 *
1898 * This routine is a callback function called from ossaSATACompleted().
1899 * This CB routine deals with Request Sense completion.
1900 *
1901 * \param agRoot: Handles for this instance of SAS/SATA hardware
1902 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1903 * \param agIOStatus: Status of completed I/O.
1904 * \param agSATAParm1: Additional info based on status.
1905 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1906 * length.
1907 * \param ioContext: Pointer to satIOContext_t.
1908 *
1909 * \return: none
1910 *
1911 *****************************************************************************/
1912 void satRequestSenseCB(
1913 agsaRoot_t *agRoot,
1914 agsaIORequest_t *agIORequest,
1915 bit32 agIOStatus,
1916 agsaFisHeader_t *agFirstDword,
1917 bit32 agIOInfoLen,
1918 agsaFrameHandle_t agFrameHandle,
1919 void *ioContext
1920 );
1921 /*****************************************************************************
1922 *! \brief satStartStopUnitCB
1923 *
1924 * This routine is a callback function called from ossaSATACompleted().
1925 * This CB routine deals with Send Diagnostic completion.
1926 *
1927 * \param agRoot: Handles for this instance of SAS/SATA hardware
1928 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1929 * \param agIOStatus: Status of completed I/O.
1930 * \param agSATAParm1: Additional info based on status.
1931 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1932 * length.
1933 * \param ioContext: Pointer to satIOContext_t.
1934 *
1935 * \return: none
1936 *
1937 *****************************************************************************/
1938 void satStartStopUnitCB(
1939 agsaRoot_t *agRoot,
1940 agsaIORequest_t *agIORequest,
1941 bit32 agIOStatus,
1942 agsaFisHeader_t *agFirstDword,
1943 bit32 agIOInfoLen,
1944 agsaFrameHandle_t agFrameHandle,
1945 void *ioContext
1946 );
1947 /*****************************************************************************
1948 *! \brief satVerify10CB
1949 *
1950 * This routine is a callback function called from ossaSATACompleted().
1951 * This CB routine deals with Verify(10) completion.
1952 *
1953 * \param agRoot: Handles for this instance of SAS/SATA hardware
1954 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
1955 * \param agIOStatus: Status of completed I/O.
1956 * \param agSATAParm1: Additional info based on status.
1957 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
1958 * length.
1959 * \param ioContext: Pointer to satIOContext_t.
1960 *
1961 * \return: none
1962 *
1963 *****************************************************************************/
1964 void satVerify10CB(
1965 agsaRoot_t *agRoot,
1966 agsaIORequest_t *agIORequest,
1967 bit32 agIOStatus,
1968 agsaFisHeader_t *agFirstDword,
1969 bit32 agIOInfoLen,
1970 agsaFrameHandle_t agFrameHandle,
1971 void *ioContex
1972 );
1973
1974 void satNonChainedVerifyCB(
1975 agsaRoot_t *agRoot,
1976 agsaIORequest_t *agIORequest,
1977 bit32 agIOStatus,
1978 agsaFisHeader_t *agFirstDword,
1979 bit32 agIOInfoLen,
1980 agsaFrameHandle_t agFrameHandle,
1981 void *ioContext
1982 );
1983
1984 void satChainedVerifyCB(
1985 agsaRoot_t *agRoot,
1986 agsaIORequest_t *agIORequest,
1987 bit32 agIOStatus,
1988 agsaFisHeader_t *agFirstDword,
1989 bit32 agIOInfoLen,
1990 agsaFrameHandle_t agFrameHandle,
1991 void *ioContext
1992 );
1993
1994 /*****************************************************************************
1995 *! \brief satTmResetLUN
1996 *
1997 * This routine is called to initiate a TM RESET LUN request to SATL.
1998 * This routine is independent of HW/LL API.
1999 *
2000 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2001 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2002 * \param lun: Pointer to LUN.
2003 * \param currentTaskTag: Pointer to tag/context for this TM request.
2004 *
2005 * \return:
2006 *
2007 * \e tiSuccess: I/O request successfully initiated.
2008 * \e tiBusy: No resources available, try again later.
2009 * \e tiIONoDevice: Invalid device handle.
2010 * \e tiError: Other errors that prevent the I/O request to be started.
2011 *
2012 *
2013 *****************************************************************************/
2014 osGLOBAL bit32 satTmResetLUN(
2015 tiRoot_t *tiRoot,
2016 tiIORequest_t *tiIORequest,
2017 tiDeviceHandle_t *tiDeviceHandle,
2018 tiScsiInitiatorRequest_t *tiScsiRequest,
2019 satIOContext_t *satIOContext,
2020 tiLUN_t *lun);
2021
2022 osGLOBAL bit32 satTmWarmReset(
2023 tiRoot_t *tiRoot,
2024 tiIORequest_t *tiIORequest,
2025 tiDeviceHandle_t *tiDeviceHandle,
2026 tiScsiInitiatorRequest_t *tiScsiRequest,
2027 satIOContext_t *satIOContext);
2028
2029 osGLOBAL bit32 satTDInternalTmReset(
2030 tiRoot_t *tiRoot,
2031 tiIORequest_t *tiIORequest,
2032 tiDeviceHandle_t *tiDeviceHandle,
2033 tiScsiInitiatorRequest_t *tiScsiRequest,
2034 satIOContext_t *satIOContext);
2035
2036 /*****************************************************************************
2037 *! \brief satTmAbortTask
2038 *
2039 * This routine is called to initiate a TM ABORT TASK request to SATL.
2040 * This routine is independent of HW/LL API.
2041 *
2042 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2043 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2044 * \param taskTag: Pointer to the associated task where the TM
2045 * command is to be applied.
2046 * \param currentTaskTag: Pointer to tag/context for this TM request.
2047 *
2048 * \return:
2049 *
2050 * \e tiSuccess: I/O request successfully initiated.
2051 * \e tiBusy: No resources available, try again later.
2052 * \e tiIONoDevice: Invalid device handle.
2053 * \e tiError: Other errors that prevent the I/O request to be started.
2054 *
2055 *
2056 *****************************************************************************/
2057 osGLOBAL bit32 satTmAbortTask(
2058 tiRoot_t *tiRoot,
2059 tiIORequest_t *tiIORequest,
2060 tiDeviceHandle_t *tiDeviceHandle,
2061 tiScsiInitiatorRequest_t *tiScsiRequest,
2062 satIOContext_t *satIOContext,
2063 tiIORequest_t *taskTag);
2064
2065 /*****************************************************************************
2066 *! \brief osSatResetCB
2067 *
2068 * This routine is called to notify the completion of SATA device reset
2069 * which was initiated previously through the call to sataLLReset().
2070 * This routine is independent of HW/LL API.
2071 *
2072 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2073 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2074 * \param resetStatus: Reset status either tiSuccess or tiError.
2075 * \param respFis: Pointer to the Register Device-To-Host FIS
2076 * received from the device.
2077 *
2078 * \return: None
2079 *
2080 *****************************************************************************/
2081
2082 osGLOBAL void osSatResetCB(
2083 tiRoot_t *tiRoot,
2084 tiDeviceHandle_t *tiDeviceHandle,
2085 bit32 resetStatus,
2086 void *respFis);
2087
2088 osGLOBAL void
2089 ossaSATADeviceResetCB(
2090 agsaRoot_t *agRoot,
2091 agsaDevHandle_t *agDevHandle,
2092 bit32 resetStatus,
2093 void *resetparm);
2094
2095 /*****************************************************************************
2096 *! \brief osSatIOCompleted
2097 *
2098 * This routine is a callback for SATA completion that required FIS status
2099 * translation to SCSI status.
2100 *
2101 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2102 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2103 * \param respFis: Pointer to status FIS to read.
2104 * \param respFisLen: Length of response FIS to read.
2105 * \param satIOContext: Pointer to SAT context.
2106 * \param interruptContext: Interrupt context
2107 *
2108 * \return: None
2109 *
2110 *****************************************************************************/
2111 osGLOBAL void osSatIOCompleted(
2112 tiRoot_t *tiRoot,
2113 tiIORequest_t *tiIORequest,
2114 agsaFisHeader_t *agFirstDword,
2115 bit32 respFisLen,
2116 agsaFrameHandle_t agFrameHandle,
2117 satIOContext_t *satIOContext,
2118 bit32 interruptContext);
2119
2120
2121 /*****************************************************************************
2122 *! \brief tdssAddSataToSharedcontext
2123 *
2124 * Purpose: This function adds a discovered SATA device to a device list of
2125 * a port context
2126 *
2127 * \param tdsaPortContext Pointer to a port context
2128 * \param tdsaDeviceData Pointer to a device data
2129 * \param tsddPortContext_Instance Pointer to the target port context
2130 * \param agRoot Pointer to the root data structure of
2131 * TD and Lower layer
2132 * \param agDevHandle Pointer to a device handle
2133 * \param agSATADeviceInfo Pointer to SATA device info structure
2134 *
2135 * \Return: none
2136 *
2137 *****************************************************************************/
2138 osGLOBAL void
2139 tdssRemoveSATAFromSharedcontext(
2140 tdsaPortContext_t *tdsaPortContext_Ins,
2141 tdsaDeviceData_t *tdsaDeviceData_ins,
2142 agsaRoot_t *agRoot
2143 );
2144
2145 /*****************************************************************************/
2146 /*! \brief SAT default ATA status and ATA error translation to SCSI.
2147 *
2148 * SSAT default ATA status and ATA error translation to SCSI.
2149 *
2150 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2151 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2152 * \param satIOContext: Pointer to the SAT IO Context
2153 * \param pSense: Pointer to scsiRspSense_t
2154 * \param ataStatus: ATA status register
2155 * \param ataError: ATA error register
2156 * \param interruptContext: Interrupt context
2157 *
2158 * \return None
2159 */
2160 /*****************************************************************************/
2161
2162 GLOBAL void osSatDefaultTranslation(
2163 tiRoot_t *tiRoot,
2164 tiIORequest_t *tiIORequest,
2165 satIOContext_t *satIOContext,
2166 scsiRspSense_t *pSense,
2167 bit8 ataStatus,
2168 bit8 ataError,
2169 bit32 interruptContext );
2170
2171 /*****************************************************************************/
2172 /*! \brief Allocate resource for SAT intervally generated I/O.
2173 *
2174 * Allocate resource for SAT intervally generated I/O.
2175 *
2176 * \param tiRoot: Pointer to TISA driver/port instance.
2177 * \param satDevData: Pointer to SAT specific device data.
2178 * \param allocLength: Length in byte of the DMA mem to allocate, upto
2179 * one page size.
2180 * \param satIntIo: Pointer (output) to context for SAT internally
2181 * generated I/O that is allocated by this routine.
2182 *
2183 * \return If command is started successfully
2184 * - \e tiSuccess: Success.
2185 * - \e tiError: Failed allocating resource.
2186 */
2187 /*****************************************************************************/
2188 GLOBAL satInternalIo_t * satAllocIntIoResource(
2189 tiRoot_t *tiRoot,
2190 tiIORequest_t *tiIORequest,
2191 satDeviceData_t *satDevData,
2192 bit32 dmaAllocLength,
2193 satInternalIo_t *satIntIo);
2194
2195 /*****************************************************************************/
2196 /*! \brief Send READ LOG EXT ATA PAGE 10h command to sata drive.
2197 *
2198 * Send READ LOG EXT ATA command PAGE 10h request to LL layer.
2199 *
2200 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2201 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2202 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2203 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2204 * \param satIOContext_t: Pointer to the SAT IO Context
2205 *
2206 * \return If command is started successfully
2207 * - \e tiSuccess: I/O request successfully initiated.
2208 * - \e tiBusy: No resources available, try again later.
2209 * - \e tiIONoDevice: Invalid device handle.
2210 * - \e tiError: Other errors.
2211 */
2212 /*****************************************************************************/
2213 GLOBAL bit32 satSendReadLogExt(
2214 tiRoot_t *tiRoot,
2215 tiIORequest_t *tiIORequest,
2216 tiDeviceHandle_t *tiDeviceHandle,
2217 tiScsiInitiatorRequest_t *tiScsiRequest,
2218 satIOContext_t *satIOContext);
2219
2220
2221 /*****************************************************************************/
2222 /*! \brief SAT implementation for SCSI satReadMediaSerialNumber.
2223 *
2224 * SAT implementation for SCSI Read Media Serial Number.
2225 *
2226 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2227 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2228 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2229 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2230 * \param satIOContext_t: Pointer to the SAT IO Context
2231 *
2232 * \return If command is started successfully
2233 * - \e tiSuccess: I/O request successfully initiated.
2234 * - \e tiBusy: No resources available, try again later.
2235 * - \e tiIONoDevice: Invalid device handle.
2236 * - \e tiError: Other errors.
2237 */
2238 /*****************************************************************************/
2239 GLOBAL bit32 satReadMediaSerialNumber(
2240 tiRoot_t *tiRoot,
2241 tiIORequest_t *tiIORequest,
2242 tiDeviceHandle_t *tiDeviceHandle,
2243 tiScsiInitiatorRequest_t *tiScsiRequest,
2244 satIOContext_t *satIOContext);
2245
2246 /*****************************************************************************
2247 *! \brief satReadMediaSerialNumberCB
2248 *
2249 * This routine is a callback function called from ossaSATACompleted().
2250 * This CB routine deals with Read Media Serial Number completion.
2251 *
2252 * \param agRoot: Handles for this instance of SAS/SATA hardware
2253 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
2254 * \param agIOStatus: Status of completed I/O.
2255 * \param agSATAParm1: Additional info based on status.
2256 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
2257 * length.
2258 * \param ioContext: Pointer to satIOContext_t.
2259 *
2260 * \return: none
2261 *
2262 *****************************************************************************/
2263 void satReadMediaSerialNumberCB(
2264 agsaRoot_t *agRoot,
2265 agsaIORequest_t *agIORequest,
2266 bit32 agIOStatus,
2267 agsaFisHeader_t *agFirstDword,
2268 bit32 agIOInfoLen,
2269 agsaFrameHandle_t agFrameHandle,
2270 void *ioContext
2271 );
2272
2273 /*****************************************************************************/
2274 /*! \brief SAT implementation for SCSI satReadBuffer.
2275 *
2276 * SAT implementation for SCSI Read Buffer.
2277 *
2278 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2279 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2280 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2281 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2282 * \param satIOContext_t: Pointer to the SAT IO Context
2283 *
2284 * \return If command is started successfully
2285 * - \e tiSuccess: I/O request successfully initiated.
2286 * - \e tiBusy: No resources available, try again later.
2287 * - \e tiIONoDevice: Invalid device handle.
2288 * - \e tiError: Other errors.
2289 */
2290 /*****************************************************************************/
2291 GLOBAL bit32 satReadBuffer(
2292 tiRoot_t *tiRoot,
2293 tiIORequest_t *tiIORequest,
2294 tiDeviceHandle_t *tiDeviceHandle,
2295 tiScsiInitiatorRequest_t *tiScsiRequest,
2296 satIOContext_t *satIOContext);
2297
2298 /*****************************************************************************
2299 *! \brief satReadBufferCB
2300 *
2301 * This routine is a callback function called from ossaSATACompleted().
2302 * This CB routine deals with Read Buffer.
2303 *
2304 * \param agRoot: Handles for this instance of SAS/SATA hardware
2305 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
2306 * \param agIOStatus: Status of completed I/O.
2307 * \param agSATAParm1: Additional info based on status.
2308 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
2309 * length.
2310 * \param ioContext: Pointer to satIOContext_t.
2311 *
2312 * \return: none
2313 *
2314 *****************************************************************************/
2315 void satReadBufferCB(
2316 agsaRoot_t *agRoot,
2317 agsaIORequest_t *agIORequest,
2318 bit32 agIOStatus,
2319 agsaFisHeader_t *agFirstDword,
2320 bit32 agIOInfoLen,
2321 agsaFrameHandle_t agFrameHandle,
2322 void *ioContext
2323 );
2324
2325 /*****************************************************************************/
2326 /*! \brief SAT implementation for SCSI satWriteBuffer.
2327 *
2328 * SAT implementation for SCSI Write Buffer.
2329 *
2330 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2331 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2332 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2333 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2334 * \param satIOContext_t: Pointer to the SAT IO Context
2335 *
2336 * \return If command is started successfully
2337 * - \e tiSuccess: I/O request successfully initiated.
2338 * - \e tiBusy: No resources available, try again later.
2339 * - \e tiIONoDevice: Invalid device handle.
2340 * - \e tiError: Other errors.
2341 */
2342 /*****************************************************************************/
2343 GLOBAL bit32 satWriteBuffer(
2344 tiRoot_t *tiRoot,
2345 tiIORequest_t *tiIORequest,
2346 tiDeviceHandle_t *tiDeviceHandle,
2347 tiScsiInitiatorRequest_t *tiScsiRequest,
2348 satIOContext_t *satIOContext);
2349
2350 /*****************************************************************************
2351 *! \brief satWriteBufferCB
2352 *
2353 * This routine is a callback function called from ossaSATACompleted().
2354 * This CB routine deals with Write Buffer.
2355 *
2356 * \param agRoot: Handles for this instance of SAS/SATA hardware
2357 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
2358 * \param agIOStatus: Status of completed I/O.
2359 * \param agSATAParm1: Additional info based on status.
2360 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
2361 * length.
2362 * \param ioContext: Pointer to satIOContext_t.
2363 *
2364 * \return: none
2365 *
2366 *****************************************************************************/
2367 void satWriteBufferCB(
2368 agsaRoot_t *agRoot,
2369 agsaIORequest_t *agIORequest,
2370 bit32 agIOStatus,
2371 agsaFisHeader_t *agFirstDword,
2372 bit32 agIOInfoLen,
2373 agsaFrameHandle_t agFrameHandle,
2374 void *ioContext
2375 );
2376
2377 /*****************************************************************************/
2378 /*! \brief SAT implementation for SCSI satReassignBlocks.
2379 *
2380 * SAT implementation for SCSI Reassign Blocks.
2381 *
2382 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2383 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2384 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2385 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2386 * \param satIOContext_t: Pointer to the SAT IO Context
2387 *
2388 * \return If command is started successfully
2389 * - \e tiSuccess: I/O request successfully initiated.
2390 * - \e tiBusy: No resources available, try again later.
2391 * - \e tiIONoDevice: Invalid device handle.
2392 * - \e tiError: Other errors.
2393 */
2394 /*****************************************************************************/
2395 GLOBAL bit32 satReassignBlocks(
2396 tiRoot_t *tiRoot,
2397 tiIORequest_t *tiIORequest,
2398 tiDeviceHandle_t *tiDeviceHandle,
2399 tiScsiInitiatorRequest_t *tiScsiRequest,
2400 satIOContext_t *satIOContext);
2401
2402 /*****************************************************************************
2403 *! \brief satReassignBlocksCB
2404 *
2405 * This routine is a callback function called from ossaSATACompleted().
2406 * This CB routine deals with Reassign Blocks.
2407 *
2408 * \param agRoot: Handles for this instance of SAS/SATA hardware
2409 * \param agIORequest: Pointer to the LL I/O request context for this I/O.
2410 * \param agIOStatus: Status of completed I/O.
2411 * \param agSATAParm1: Additional info based on status.
2412 * \param agIOInfoLen: Length in bytes of overrun/underrun residual or FIS
2413 * length.
2414 * \param ioContext: Pointer to satIOContext_t.
2415 *
2416 * \return: none
2417 *
2418 *****************************************************************************/
2419 void satReassignBlocksCB(
2420 agsaRoot_t *agRoot,
2421 agsaIORequest_t *agIORequest,
2422 bit32 agIOStatus,
2423 agsaFisHeader_t *agFirstDword,
2424 bit32 agIOInfoLen,
2425 agsaFrameHandle_t agFrameHandle,
2426 void *ioContext
2427 );
2428
2429 /*****************************************************************************/
2430 /*! \brief SAT implementation for SCSI satReassignBlocks_1.
2431 *
2432 * SAT implementation for SCSI Reassign Blocks. This is helper function for
2433 * satReassignBlocks and satReassignBlocksCB. This sends ATA verify command.
2434 *
2435 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2436 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2437 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2438 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2439 * \param satIOContext_t: Pointer to the SAT IO Context
2440 *
2441 * \return If command is started successfully
2442 * - \e tiSuccess: I/O request successfully initiated.
2443 * - \e tiBusy: No resources available, try again later.
2444 * - \e tiIONoDevice: Invalid device handle.
2445 * - \e tiError: Other errors.
2446 */
2447 /*****************************************************************************/
2448 GLOBAL bit32 satReassignBlocks_1(
2449 tiRoot_t *tiRoot,
2450 tiIORequest_t *tiIORequest,
2451 tiDeviceHandle_t *tiDeviceHandle,
2452 tiScsiInitiatorRequest_t *tiScsiRequest,
2453 satIOContext_t *satIOContext,
2454 satIOContext_t *satOrgIOContext);
2455
2456 /*****************************************************************************/
2457 /*! \brief SAT implementation for SCSI satReassignBlocks_2.
2458 *
2459 * SAT implementation for SCSI Reassign Blocks. This is helper function for
2460 * satReassignBlocks and satReassignBlocksCB. This sends ATA write command.
2461 *
2462 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2463 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
2464 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
2465 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
2466 * \param satIOContext_t: Pointer to the SAT IO Context
2467 * \param LBA: Pointer to the LBA to be processed
2468 *
2469 * \return If command is started successfully
2470 * - \e tiSuccess: I/O request successfully initiated.
2471 * - \e tiBusy: No resources available, try again later.
2472 * - \e tiIONoDevice: Invalid device handle.
2473 * - \e tiError: Other errors.
2474 */
2475 /*****************************************************************************/
2476 GLOBAL bit32 satReassignBlocks_2(
2477 tiRoot_t *tiRoot,
2478 tiIORequest_t *tiIORequest,
2479 tiDeviceHandle_t *tiDeviceHandle,
2480 tiScsiInitiatorRequest_t *tiScsiRequest,
2481 satIOContext_t *satIOContext,
2482 bit8 *LBA
2483 );
2484
2485 /*****************************************************************************/
2486 /*! \brief SAT implementation for SCSI satPrepareNewIO.
2487 *
2488 * This function fills in the fields of internal IO generated by TD layer.
2489 * This is mostly used in the callback functions.
2490 *
2491 * \param satNewIntIo: Pointer to the internal IO structure.
2492 * \param tiOrgIORequest: Pointer to the original tiIOrequest sent by OS layer
2493 * \param satDevData: Pointer to the device data.
2494 * \param scsiCmnd: Pointer to SCSI command.
2495 * \param satOrgIOContext: Pointer to the original SAT IO Context
2496 *
2497 * \return
2498 * - \e Pointer to the new SAT IO Context
2499 */
2500 /*****************************************************************************/
2501 GLOBAL satIOContext_t *satPrepareNewIO(
2502 satInternalIo_t *satNewIntIo,
2503 tiIORequest_t *tiOrgIORequest,
2504 satDeviceData_t *satDevData,
2505 tiIniScsiCmnd_t *scsiCmnd,
2506 satIOContext_t *satOrgIOContext
2507 );
2508
2509 /*****************************************************************************
2510 *! \brief sataLLIOAbort
2511 *
2512 * This routine is called to initiate an I/O abort to LL layer.
2513 * This function implements/encapsulates HW and LL API dependency.
2514 *
2515 * \param tiRoot: Pointer to TISA initiator driver/port instance.
2516 * \param taskTag: Pointer to TISA I/O context to be aborted.
2517 *
2518 * \return:
2519 *
2520 * \e tiSuccess: Abort request was successfully initiated.
2521 * \e tiBusy: No resources available, try again later.
2522 * \e tiError: Other errors that prevent the abort request from being
2523 * started..
2524 *
2525 *
2526 *****************************************************************************/
2527
2528 GLOBAL bit32 sataLLIOAbort (
2529 tiRoot_t *tiRoot,
2530 tiIORequest_t *taskTag );
2531
2532
2533
2534 void satInquiryCB(
2535 agsaRoot_t *agRoot,
2536 agsaIORequest_t *agIORequest,
2537 bit32 agIOStatus,
2538 agsaFisHeader_t *agFirstDword,
2539 bit32 agIOInfoLen,
2540 agsaFrameHandle_t agFrameHandle,
2541 void *ioContext
2542 );
2543
2544 void satInquiryIntCB(
2545 tiRoot_t *tiRoot,
2546 tiIORequest_t *tiIORequest,
2547 tiDeviceHandle_t *tiDeviceHandle,
2548 tiScsiInitiatorRequest_t *tiScsiRequest,
2549 satIOContext_t *satIOContext
2550 );
2551
2552 GLOBAL bit32 satSendIDDev(
2553 tiRoot_t *tiRoot,
2554 tiIORequest_t *tiIORequest,
2555 tiDeviceHandle_t *tiDeviceHandle,
2556 tiScsiInitiatorRequest_t *tiScsiRequest,
2557 satIOContext_t *satIOContext);
2558
2559
2560 GLOBAL bit32 satStartIDDev(
2561 tiRoot_t *tiRoot,
2562 tiIORequest_t *tiIORequest,
2563 tiDeviceHandle_t *tiDeviceHandle,
2564 tiScsiInitiatorRequest_t *tiScsiRequest,
2565 satIOContext_t *satIOContext
2566 );
2567
2568 void satSetDevInfo(
2569 satDeviceData_t *satDevData,
2570 agsaSATAIdentifyData_t *SATAIdData
2571 );
2572
2573 GLOBAL bit32 satAddSATAStartIDDev(
2574 tiRoot_t *tiRoot,
2575 tiIORequest_t *tiIORequest,
2576 tiDeviceHandle_t *tiDeviceHandle,
2577 tiScsiInitiatorRequest_t *tiScsiRequest,
2578 satIOContext_t *satIOContext
2579 );
2580
2581 GLOBAL bit32 satAddSATASendIDDev(
2582 tiRoot_t *tiRoot,
2583 tiIORequest_t *tiIORequest,
2584 tiDeviceHandle_t *tiDeviceHandle,
2585 tiScsiInitiatorRequest_t *tiScsiRequest,
2586 satIOContext_t *satIOContext
2587 );
2588
2589 void satAddSATAIDDevCB(
2590 agsaRoot_t *agRoot,
2591 agsaIORequest_t *agIORequest,
2592 bit32 agIOStatus,
2593 agsaFisHeader_t *agFirstDword,
2594 bit32 agIOInfoLen,
2595 agsaFrameHandle_t agFrameHandle,
2596 void *ioContext
2597 );
2598
2599 void satAddSATAIDDevCBReset(
2600 agsaRoot_t *agRoot,
2601 tdsaDeviceData_t *oneDeviceData,
2602 satIOContext_t *satIOContext,
2603 tdIORequestBody_t *tdIORequestBody
2604 );
2605
2606 void satAddSATAIDDevCBCleanup(
2607 agsaRoot_t *agRoot,
2608 tdsaDeviceData_t *oneDeviceData,
2609 satIOContext_t *satIOContext,
2610 tdIORequestBody_t *tdIORequestBody
2611 );
2612
2613 GLOBAL bit32 tdsaDiscoveryIntStartIDDev(
2614 tiRoot_t *tiRoot,
2615 tiIORequest_t *tiIORequest,
2616 tiDeviceHandle_t *tiDeviceHandle,
2617 tiScsiInitiatorRequest_t *tiScsiRequest,
2618 satIOContext_t *satIOContext
2619 );
2620
2621 GLOBAL bit32 tdsaDiscoverySendIDDev(
2622 tiRoot_t *tiRoot,
2623 tiIORequest_t *tiIORequest,
2624 tiDeviceHandle_t *tiDeviceHandle,
2625 tiScsiInitiatorRequest_t *tiScsiRequest,
2626 satIOContext_t *satIOContext
2627 );
2628
2629 void tdsaDiscoveryStartIDDevCB(
2630 agsaRoot_t *agRoot,
2631 agsaIORequest_t *agIORequest,
2632 bit32 agIOStatus,
2633 agsaFisHeader_t *agFirstDword,
2634 bit32 agIOInfoLen,
2635 agsaFrameHandle_t agFrameHandle,
2636 void *ioContext
2637 );
2638
2639
2640 /*
2641 utility functions
2642 */
2643
2644 bit32 satComputeCDB10LBA(satIOContext_t *satIOContext);
2645 bit32 satComputeCDB10TL(satIOContext_t *satIOContext);
2646 bit32 satComputeCDB12LBA(satIOContext_t *satIOContext);
2647 bit32 satComputeCDB12TL(satIOContext_t *satIOContext);
2648 bit32 satComputeCDB16LBA(satIOContext_t *satIOContext);
2649 bit32 satComputeCDB16TL(satIOContext_t *satIOContext);
2650 bit32 satComputeLoopNum(bit32 a,
2651 bit32 b);
2652 bit32 satAddNComparebit64(bit8 *a, bit8 *b);
2653 bit32 satAddNComparebit32(bit8 *a, bit8 *b);
2654 bit32 satCompareLBALimitbit(bit8 *lba);
2655
2656 /*****************************************************************************
2657 *! \brief
2658 * Purpose: bitwise set
2659 *
2660 * Parameters:
2661 * data - input output buffer
2662 * index - bit to set
2663 *
2664 * Return:
2665 * none
2666 *
2667 *****************************************************************************/
2668 GLOBAL void
2669 satBitSet(bit8 *data, bit32 index);
2670
2671 /*****************************************************************************
2672 *! \brief
2673 * Purpose: bitwise clear
2674 *
2675 * Parameters:
2676 * data - input output buffer
2677 * index - bit to clear
2678 *
2679 * Return:
2680 * none
2681 *
2682 *****************************************************************************/
2683 GLOBAL void
2684 satBitClear(bit8 *data, bit32 index);
2685
2686 /*****************************************************************************
2687 *! \brief
2688 * Purpose: bitwise test
2689 *
2690 * Parameters:
2691 * data - input output buffer
2692 * index - bit to test
2693 *
2694 * Return:
2695 * 0 - not set
2696 * 1 - set
2697 *
2698 *****************************************************************************/
2699 GLOBAL agBOOLEAN
2700 satBitTest(bit8 *data, bit32 index);
2701
2702 /******************************************************************************/
2703 /*! \brief allocate an available SATA tag
2704 *
2705 * allocate an available SATA tag
2706 *
2707 * \param pSatDevData
2708 * \param pTag
2709 *
2710 * \return -Success or fail-
2711 */
2712 /*******************************************************************************/
2713 GLOBAL bit32 satTagAlloc(
2714 tiRoot_t *tiRoot,
2715 satDeviceData_t *pSatDevData,
2716 bit8 *pTag
2717 );
2718
2719 /******************************************************************************/
2720 /*! \brief release an SATA tag
2721 *
2722 * release an available SATA tag
2723 *
2724 * \param pSatDevData
2725 *
2726 * \return -the tag-
2727 */
2728 /*******************************************************************************/
2729 GLOBAL bit32 satTagRelease(
2730 tiRoot_t *tiRoot,
2731 satDeviceData_t *pSatDevData,
2732 bit8 tag
2733 );
2734
2735 GLOBAL void
2736 satDecrementPendingIO(
2737 tiRoot_t *tiRoot,
2738 tdsaContext_t *tdsaAllShared,
2739 satIOContext_t *satIOContext
2740 );
2741
2742 GLOBAL bit32 satStartResetDevice(
2743 tiRoot_t *tiRoot,
2744 tiIORequest_t *tiIORequest,
2745 tiDeviceHandle_t *tiDeviceHandle,
2746 tiScsiInitiatorRequest_t *tiScsiRequest,
2747 satIOContext_t *satIOContext
2748 );
2749
2750 GLOBAL bit32 satResetDevice(
2751 tiRoot_t *tiRoot,
2752 tiIORequest_t *tiIORequest,
2753 tiDeviceHandle_t *tiDeviceHandle,
2754 tiScsiInitiatorRequest_t *tiScsiRequest,
2755 satIOContext_t *satIOContext
2756 );
2757
2758 GLOBAL void satResetDeviceCB(
2759 agsaRoot_t *agRoot,
2760 agsaIORequest_t *agIORequest,
2761 bit32 agIOStatus,
2762 agsaFisHeader_t *agFirstDword,
2763 bit32 agIOInfoLen,
2764 agsaFrameHandle_t agFrameHandle,
2765 void *ioContext
2766 );
2767
2768 osGLOBAL bit32 satSubTM(
2769 tiRoot_t *tiRoot,
2770 tiDeviceHandle_t *tiDeviceHandle,
2771 bit32 task,
2772 tiLUN_t *lun,
2773 tiIORequest_t *taskTag,
2774 tiIORequest_t *currentTaskTag,
2775 bit32 NotifyOS
2776 );
2777
2778 GLOBAL bit32 satStartDeResetDevice(
2779 tiRoot_t *tiRoot,
2780 tiIORequest_t *tiIORequest,
2781 tiDeviceHandle_t *tiDeviceHandle,
2782 tiScsiInitiatorRequest_t *tiScsiRequest,
2783 satIOContext_t *satIOContext
2784 );
2785
2786 GLOBAL bit32 satDeResetDevice(
2787 tiRoot_t *tiRoot,
2788 tiIORequest_t *tiIORequest,
2789 tiDeviceHandle_t *tiDeviceHandle,
2790 tiScsiInitiatorRequest_t *tiScsiRequest,
2791 satIOContext_t *satIOContext
2792 );
2793
2794
2795 GLOBAL void satDeResetDeviceCB(
2796 agsaRoot_t *agRoot,
2797 agsaIORequest_t *agIORequest,
2798 bit32 agIOStatus,
2799 agsaFisHeader_t *agFirstDword,
2800 bit32 agIOInfoLen,
2801 agsaFrameHandle_t agFrameHandle,
2802 void *ioContext
2803 );
2804
2805
2806 GLOBAL bit32 satStartCheckPowerMode(
2807 tiRoot_t *tiRoot,
2808 tiIORequest_t *tiIORequest,
2809 tiDeviceHandle_t *tiDeviceHandle,
2810 tiScsiInitiatorRequest_t *tiScsiRequest,
2811 satIOContext_t *satIOContext
2812 );
2813
2814 GLOBAL bit32 satCheckPowerMode(
2815 tiRoot_t *tiRoot,
2816 tiIORequest_t *tiIORequest,
2817 tiDeviceHandle_t *tiDeviceHandle,
2818 tiScsiInitiatorRequest_t *tiScsiRequest,
2819 satIOContext_t *satIOContext
2820 );
2821
2822 GLOBAL void satCheckPowerModeCB(
2823 agsaRoot_t *agRoot,
2824 agsaIORequest_t *agIORequest,
2825 bit32 agIOStatus,
2826 agsaFisHeader_t *agFirstDword,
2827 bit32 agIOInfoLen,
2828 agsaFrameHandle_t agFrameHandle,
2829 void *ioContext
2830 );
2831
2832 GLOBAL void satAbort(agsaRoot_t *agRoot,
2833 satIOContext_t *satIOContext
2834 );
2835
2836 GLOBAL void satTranslateATAPIErrorsToSCSIErrors(
2837 bit8 bCommand,
2838 bit8 bATAStatus,
2839 bit8 bATAError,
2840 bit8 *pSenseKey,
2841 bit16 *pSenseCodeInfo
2842 );
2843
2844 osGLOBAL void
2845 satSATADeviceReset(tiRoot_t *tiRoot,
2846 tdsaDeviceData_t *oneDeviceData,
2847 bit32 flag);
2848
2849 #ifdef REMOVED
2850 osGLOBAL void
2851 satSATADeviceReset( tiRoot_t *tiRoot,
2852 tdsaDeviceData_t *oneDeviceData,
2853 bit32 flag
2854 );
2855 #endif
2856 #endif /*__SATPROTO_H__ */
Cache object: 5eb46e5567828adfb741c9d129a83016
|