xref: /freebsd/sys/dev/isci/scil/sati_translator_sequence.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1f11c7f63SJim Harris /*-
2*718cf2ccSPedro F. Giffuni  * SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0
3*718cf2ccSPedro F. Giffuni  *
4f11c7f63SJim Harris  * This file is provided under a dual BSD/GPLv2 license.  When using or
5f11c7f63SJim Harris  * redistributing this file, you may do so under either license.
6f11c7f63SJim Harris  *
7f11c7f63SJim Harris  * GPL LICENSE SUMMARY
8f11c7f63SJim Harris  *
9f11c7f63SJim Harris  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
10f11c7f63SJim Harris  *
11f11c7f63SJim Harris  * This program is free software; you can redistribute it and/or modify
12f11c7f63SJim Harris  * it under the terms of version 2 of the GNU General Public License as
13f11c7f63SJim Harris  * published by the Free Software Foundation.
14f11c7f63SJim Harris  *
15f11c7f63SJim Harris  * This program is distributed in the hope that it will be useful, but
16f11c7f63SJim Harris  * WITHOUT ANY WARRANTY; without even the implied warranty of
17f11c7f63SJim Harris  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18f11c7f63SJim Harris  * General Public License for more details.
19f11c7f63SJim Harris  *
20f11c7f63SJim Harris  * You should have received a copy of the GNU General Public License
21f11c7f63SJim Harris  * along with this program; if not, write to the Free Software
22f11c7f63SJim Harris  * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
23f11c7f63SJim Harris  * The full GNU General Public License is included in this distribution
24f11c7f63SJim Harris  * in the file called LICENSE.GPL.
25f11c7f63SJim Harris  *
26f11c7f63SJim Harris  * BSD LICENSE
27f11c7f63SJim Harris  *
28f11c7f63SJim Harris  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
29f11c7f63SJim Harris  * All rights reserved.
30f11c7f63SJim Harris  *
31f11c7f63SJim Harris  * Redistribution and use in source and binary forms, with or without
32f11c7f63SJim Harris  * modification, are permitted provided that the following conditions
33f11c7f63SJim Harris  * are met:
34f11c7f63SJim Harris  *
35f11c7f63SJim Harris  *   * Redistributions of source code must retain the above copyright
36f11c7f63SJim Harris  *     notice, this list of conditions and the following disclaimer.
37f11c7f63SJim Harris  *   * Redistributions in binary form must reproduce the above copyright
38f11c7f63SJim Harris  *     notice, this list of conditions and the following disclaimer in
39f11c7f63SJim Harris  *     the documentation and/or other materials provided with the
40f11c7f63SJim Harris  *     distribution.
41f11c7f63SJim Harris  *
42f11c7f63SJim Harris  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
43f11c7f63SJim Harris  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
44f11c7f63SJim Harris  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
45f11c7f63SJim Harris  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
46f11c7f63SJim Harris  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
47f11c7f63SJim Harris  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
48f11c7f63SJim Harris  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
49f11c7f63SJim Harris  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50f11c7f63SJim Harris  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51f11c7f63SJim Harris  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
52f11c7f63SJim Harris  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53f11c7f63SJim Harris  */
54f11c7f63SJim Harris #ifndef _SATI_TRANSLATOR_SEQUENCE_H_
55f11c7f63SJim Harris #define _SATI_TRANSLATOR_SEQUENCE_H_
56f11c7f63SJim Harris 
57f11c7f63SJim Harris /**
58f11c7f63SJim Harris  * @file
59f11c7f63SJim Harris  * @brief This file contains all of the defintions for the SATI translator
60453130d9SPedro F. Giffuni  *        sequence.  A translator sequence is simply a definition for the
61f11c7f63SJim Harris  *        various sequences of commands that occur in this translator.
62f11c7f63SJim Harris  */
63f11c7f63SJim Harris 
64f11c7f63SJim Harris #include <dev/isci/scil/sati_device.h>
65f11c7f63SJim Harris 
66f11c7f63SJim Harris /**
67f11c7f63SJim Harris  * @enum _SATI_TRANSLATOR_SEQUENCE_TYPE
68f11c7f63SJim Harris  *
69f11c7f63SJim Harris  * @brief This enumeration defines the possible sequence types for the
70f11c7f63SJim Harris  *        translator.
71f11c7f63SJim Harris  */
72f11c7f63SJim Harris typedef enum _SATI_TRANSLATOR_SEQUENCE_TYPE
73f11c7f63SJim Harris {
74f11c7f63SJim Harris    // SCSI Primary Command (SPC) sequences.
75f11c7f63SJim Harris    SATI_SEQUENCE_REPORT_LUNS,
76f11c7f63SJim Harris    SATI_SEQUENCE_TEST_UNIT_READY,
77f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_STANDARD,
78f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_SUPPORTED_PAGES,
79f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_SERIAL_NUMBER,
80f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_DEVICE_ID,
81f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_ATA_INFORMATION,
82f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_BLOCK_DEVICE,
83f11c7f63SJim Harris    SATI_SEQUENCE_INQUIRY_EXECUTE_DEVICE_DIAG,
84f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_CACHING,
85f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_INFORMATIONAL_EXCP_CONTROL,
86f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_READ_WRITE_ERROR,
87f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_DISCONNECT_RECONNECT,
88f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_CONTROL,
89f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_POWER_CONDITION,
90f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_6_ALL_PAGES,
91f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_CACHING,
92f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_INFORMATIONAL_EXCP_CONTROL,
93f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_READ_WRITE_ERROR,
94f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_DISCONNECT_RECONNECT,
95f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_CONTROL,
96f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_POWER_CONDITION,
97f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SENSE_10_ALL_PAGES,
98f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SELECT_MODE_PAGE_CACHING,
99f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SELECT_MODE_POWER_CONDITION,
100f11c7f63SJim Harris    SATI_SEQUENCE_MODE_SELECT_MODE_INFORMATION_EXCEPT_CONTROL,
101f11c7f63SJim Harris 
102f11c7f63SJim Harris       //Log Sense Sequences
103f11c7f63SJim Harris    SATI_SEQUENCE_LOG_SENSE_SELF_TEST_LOG_PAGE,
104f11c7f63SJim Harris    SATI_SEQUENCE_LOG_SENSE_EXTENDED_SELF_TEST_LOG_PAGE,
105f11c7f63SJim Harris    SATI_SEQUENCE_LOG_SENSE_SUPPORTED_LOG_PAGE,
106f11c7f63SJim Harris    SATI_SEQUENCE_LOG_SENSE_INFO_EXCEPTION_LOG_PAGE,
107f11c7f63SJim Harris 
108f11c7f63SJim Harris    // SCSI Block Command (SBC) sequences.
109f11c7f63SJim Harris 
110f11c7f63SJim Harris    SATI_SEQUENCE_READ_6,
111f11c7f63SJim Harris    SATI_SEQUENCE_READ_10,
112f11c7f63SJim Harris    SATI_SEQUENCE_READ_12,
113f11c7f63SJim Harris    SATI_SEQUENCE_READ_16,
114f11c7f63SJim Harris 
115f11c7f63SJim Harris    SATI_SEQUENCE_READ_CAPACITY_10,
116f11c7f63SJim Harris    SATI_SEQUENCE_READ_CAPACITY_16,
117f11c7f63SJim Harris 
118f11c7f63SJim Harris    SATI_SEQUENCE_SYNCHRONIZE_CACHE,
119f11c7f63SJim Harris 
120f11c7f63SJim Harris    SATI_SEQUENCE_VERIFY_10,
121f11c7f63SJim Harris    SATI_SEQUENCE_VERIFY_12,
122f11c7f63SJim Harris    SATI_SEQUENCE_VERIFY_16,
123f11c7f63SJim Harris 
124f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_6,
125f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_10,
126f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_12,
127f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_16,
128f11c7f63SJim Harris 
129f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_AND_VERIFY,
130f11c7f63SJim Harris 
131f11c7f63SJim Harris    SATI_SEQUENCE_START_STOP_UNIT,
132f11c7f63SJim Harris 
133f11c7f63SJim Harris    SATI_SEQUENCE_REASSIGN_BLOCKS,
134f11c7f63SJim Harris 
135f11c7f63SJim Harris    // SCSI Task Requests sequences
136f11c7f63SJim Harris 
137f11c7f63SJim Harris    SATI_SEQUENCE_LUN_RESET,
138f11c7f63SJim Harris    SATI_SEQUENCE_ABORT_TASK_SET,
139f11c7f63SJim Harris 
140f11c7f63SJim Harris    SATI_SEQUENCE_REQUEST_SENSE_SMART_RETURN_STATUS,
141f11c7f63SJim Harris    SATI_SEQUENCE_REQUEST_SENSE_CHECK_POWER_MODE,
142f11c7f63SJim Harris 
143f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_LONG,
144f11c7f63SJim Harris 
145f11c7f63SJim Harris    SATI_SEQUENCE_UNMAP,
146f11c7f63SJim Harris 
147f11c7f63SJim Harris    SATI_SEQUENCE_ATA_PASSTHROUGH_12,
148f11c7f63SJim Harris    SATI_SEQUENCE_ATA_PASSTHROUGH_16,
149f11c7f63SJim Harris 
150f11c7f63SJim Harris    SATI_SEQUENCE_READ_BUFFER,
151f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_BUFFER,
152f11c7f63SJim Harris    SATI_SEQUENCE_WRITE_BUFFER_MICROCODE
153f11c7f63SJim Harris 
154f11c7f63SJim Harris } SATI_TRANSLATOR_SEQUENCE_TYPE;
155f11c7f63SJim Harris 
156f11c7f63SJim Harris #define SATI_SEQUENCE_TYPE_READ_MIN SATI_SEQUENCE_READ_6
157f11c7f63SJim Harris #define SATI_SEQUENCE_TYPE_READ_MAX SATI_SEQUENCE_READ_16
158f11c7f63SJim Harris 
159f11c7f63SJim Harris /**
160f11c7f63SJim Harris  * @name SATI_SEQUENCE_STATES
161f11c7f63SJim Harris  *
162f11c7f63SJim Harris  * These constants depict the various state values associated with a
163f11c7f63SJim Harris  * translation sequence.
164f11c7f63SJim Harris  */
165f11c7f63SJim Harris /*@{*/
166f11c7f63SJim Harris #define SATI_SEQUENCE_STATE_INITIAL            0
167f11c7f63SJim Harris #define SATI_SEQUENCE_STATE_TRANSLATE_DATA     1
168f11c7f63SJim Harris #define SATI_SEQUENCE_STATE_AWAIT_RESPONSE     2
169f11c7f63SJim Harris #define SATI_SEQUENCE_STATE_FINAL              3
170f11c7f63SJim Harris #define SATI_SEQUENCE_STATE_INCOMPLETE         4
171f11c7f63SJim Harris #define SATI_SEQUENCE_STATE_READ_ERROR         5
172f11c7f63SJim Harris /*@}*/
173f11c7f63SJim Harris 
174f11c7f63SJim Harris /**
175f11c7f63SJim Harris  * @name SATI_DATA_DIRECTIONS
176f11c7f63SJim Harris  *
177f11c7f63SJim Harris  * These constants depict the various types of data directions for a
178f11c7f63SJim Harris  * translation sequence.  Data can flow in/out (read/write) or no data at
179f11c7f63SJim Harris  * all.
180f11c7f63SJim Harris  */
181f11c7f63SJim Harris /*@{*/
182f11c7f63SJim Harris #define SATI_DATA_DIRECTION_NONE 0
183f11c7f63SJim Harris #define SATI_DATA_DIRECTION_IN   1
184f11c7f63SJim Harris #define SATI_DATA_DIRECTION_OUT  2
185f11c7f63SJim Harris /*@}*/
186f11c7f63SJim Harris 
187f11c7f63SJim Harris /**
188f11c7f63SJim Harris  * @struct SATI_MODE_SELECT_PROCESSING_STATE
189f11c7f63SJim Harris  *
190f11c7f63SJim Harris  * @brief This structure contains all of the current processing states
191f11c7f63SJim Harris  *        for processing mode select 6 and 10 commands' parameter fields.
192f11c7f63SJim Harris  */
193f11c7f63SJim Harris typedef  struct SATI_MODE_SELECT_PROCESSING_STATE
194f11c7f63SJim Harris {
195f11c7f63SJim Harris    U8       * mode_pages;
196f11c7f63SJim Harris    U32      mode_page_offset;
197f11c7f63SJim Harris    U32      mode_pages_size;
198f11c7f63SJim Harris    U32      size_of_data_processed;
199f11c7f63SJim Harris    U32      total_ata_command_sent;
200f11c7f63SJim Harris    U32      ata_command_sent_for_cmp; // cmp: current mode page
201f11c7f63SJim Harris    BOOL     current_mode_page_processed;
202f11c7f63SJim Harris 
203f11c7f63SJim Harris } SATI_MODE_SELECT_PROCESSING_STATE_T;
204f11c7f63SJim Harris 
205f11c7f63SJim Harris 
206f11c7f63SJim Harris enum SATI_REASSIGN_BLOCKS_ATA_COMMAND_STATUS
207f11c7f63SJim Harris {
208f11c7f63SJim Harris    SATI_REASSIGN_BLOCKS_READY_TO_SEND,
209f11c7f63SJim Harris    SATI_REASSIGN_BLOCKS_COMMAND_FAIL,
210f11c7f63SJim Harris    SATI_REASSIGN_BLOCKS_COMMAND_SUCCESS,
211f11c7f63SJim Harris };
212f11c7f63SJim Harris 
213f11c7f63SJim Harris /**
214f11c7f63SJim Harris  * @struct SATI_REASSIGN_BLOCKS_PROCESSING_STATE
215f11c7f63SJim Harris  *
216f11c7f63SJim Harris  * @brief This structure contains all of the current processing states
217f11c7f63SJim Harris  *        for processing reassign block command's parameter fields.
218f11c7f63SJim Harris  */
219f11c7f63SJim Harris typedef struct SATI_REASSIGN_BLOCKS_PROCESSING_STATE
220f11c7f63SJim Harris {
221f11c7f63SJim Harris    U32      lba_offset;
222f11c7f63SJim Harris    U32      block_lists_size;
223f11c7f63SJim Harris    U8       lba_size;
224f11c7f63SJim Harris    U32      size_of_data_processed;
225f11c7f63SJim Harris    U32      ata_command_sent_for_current_lba;
226f11c7f63SJim Harris    BOOL     current_lba_processed;
227f11c7f63SJim Harris    enum     SATI_REASSIGN_BLOCKS_ATA_COMMAND_STATUS  ata_command_status;
228f11c7f63SJim Harris 
229f11c7f63SJim Harris }SATI_REASSIGN_BLOCKS_PROCESSING_STATE_T;
230f11c7f63SJim Harris 
231f11c7f63SJim Harris #define SATI_ATAPI_REQUEST_SENSE_CDB_LENGTH 12
232f11c7f63SJim Harris 
233f11c7f63SJim Harris /**
234f11c7f63SJim Harris  * @struct SATI_ATAPI_DATA
235f11c7f63SJim Harris  *
236f11c7f63SJim Harris  * @brief The SATI_ATAPI_DATA structure is for sati atapi IO specific data.
237f11c7f63SJim Harris  */
238f11c7f63SJim Harris typedef struct SATI_ATAPI_DATA
239f11c7f63SJim Harris {
240f11c7f63SJim Harris   U8 request_sense_cdb[SATI_ATAPI_REQUEST_SENSE_CDB_LENGTH];
241f11c7f63SJim Harris } SATI_ATAPI_DATA_T;
242f11c7f63SJim Harris 
243f11c7f63SJim Harris 
244f11c7f63SJim Harris enum SATI_UNMAP_ATA_COMMAND_STATUS
245f11c7f63SJim Harris {
246f11c7f63SJim Harris    SATI_UNMAP_READY_TO_SEND,
247f11c7f63SJim Harris    SATI_UNMAP_COMMAND_FAIL,
248f11c7f63SJim Harris    SATI_UNMAP_COMMAND_SUCCESS,
249f11c7f63SJim Harris };
250f11c7f63SJim Harris 
251f11c7f63SJim Harris /**
252f11c7f63SJim Harris  * @struct SATI_UNMAP_PROCESSING_STATE
253f11c7f63SJim Harris  *
254f11c7f63SJim Harris  * @brief This structure contains all of the current processing states
255f11c7f63SJim Harris  *        for processing unmap command data translation.
256f11c7f63SJim Harris  */
257f11c7f63SJim Harris typedef struct SATI_UNMAP_PROCESSING_STATE
258f11c7f63SJim Harris {
259f11c7f63SJim Harris    U32      max_unmap_block_descriptors;
260f11c7f63SJim Harris    U32      current_unmap_block_descriptor_index;
261f11c7f63SJim Harris    U32      current_lba_count;
262f11c7f63SJim Harris    SATI_LBA current_lba;
263f11c7f63SJim Harris    SATI_LBA next_lba;
264f11c7f63SJim Harris    U32      max_lba_range_entries;
265f11c7f63SJim Harris    void *   current_dsm_descriptor;
266f11c7f63SJim Harris    void *   virtual_unmap_buffer;
267f11c7f63SJim Harris    U32      physical_unmap_buffer_low;
268f11c7f63SJim Harris    U32      physical_unmap_buffer_high;
269f11c7f63SJim Harris    void *   unmap_buffer_sgl_pair;
270f11c7f63SJim Harris } SATI_UNMAP_PROCESSING_STATE_T;
271f11c7f63SJim Harris 
272f11c7f63SJim Harris /**
273f11c7f63SJim Harris  * @struct SATI_TRANSLATOR_SEQUENCE
274f11c7f63SJim Harris  *
275f11c7f63SJim Harris  * @brief This structure contains all of the translation information
276f11c7f63SJim Harris  *        associated with a particular request.
277f11c7f63SJim Harris  */
278f11c7f63SJim Harris typedef struct SATI_TRANSLATOR_SEQUENCE
279f11c7f63SJim Harris {
280f11c7f63SJim Harris    /**
281f11c7f63SJim Harris     * This field contains the sequence type determined by the SATI.
282f11c7f63SJim Harris     */
283f11c7f63SJim Harris    U8 type;
284f11c7f63SJim Harris 
285f11c7f63SJim Harris    /**
286f11c7f63SJim Harris     * This field indicates the current state for the sequence.
287f11c7f63SJim Harris     */
288f11c7f63SJim Harris    U8 state;
289f11c7f63SJim Harris 
290f11c7f63SJim Harris    /**
291f11c7f63SJim Harris     * This field indicates the data direction (none, read, or write) for
292f11c7f63SJim Harris     * the translated request.
293f11c7f63SJim Harris     */
294f11c7f63SJim Harris    U8 data_direction;
295f11c7f63SJim Harris 
296f11c7f63SJim Harris    /**
297f11c7f63SJim Harris     * This field contains the SATA/ATA protocol to be utilized during
298f11c7f63SJim Harris     * the IO transfer.
299f11c7f63SJim Harris     */
300f11c7f63SJim Harris    U8 protocol;
301f11c7f63SJim Harris 
302f11c7f63SJim Harris    /**
303f11c7f63SJim Harris     * This field is utilized for sequences requiring data translation.
304f11c7f63SJim Harris     * It specifies the amount of data requested by the caller from the
305f11c7f63SJim Harris     * operation.  It's necessary, because at times the user requests less
306f11c7f63SJim Harris     * data than is available.  Thus, we need to avoid overrunning the
307f11c7f63SJim Harris     * buffer.
308f11c7f63SJim Harris     */
309f11c7f63SJim Harris    U32 allocation_length;
310f11c7f63SJim Harris 
311f11c7f63SJim Harris    /**
312f11c7f63SJim Harris     * This field specifies the amount of data that will actually be
313453130d9SPedro F. Giffuni     * transferred across the wire for this ATA request.
314f11c7f63SJim Harris     */
315f11c7f63SJim Harris    U32 ata_transfer_length;
316f11c7f63SJim Harris 
317f11c7f63SJim Harris    /**
318f11c7f63SJim Harris    * This field specifies the amount of data bytes that have been
319f11c7f63SJim Harris    * set in a translation sequence. It will be incremented every time
320f11c7f63SJim Harris    * a data byte has been set by a sati translation.
321f11c7f63SJim Harris    */
322f11c7f63SJim Harris    U16 number_data_bytes_set;
323f11c7f63SJim Harris 
324f11c7f63SJim Harris    /**
325f11c7f63SJim Harris    * This field indicates whether or not the sense response has been set
326f11c7f63SJim Harris    * by the translation sequence.
327f11c7f63SJim Harris    */
328f11c7f63SJim Harris    BOOL is_sense_response_set;
329f11c7f63SJim Harris 
330f11c7f63SJim Harris    /**
331f11c7f63SJim Harris     * This field indicates whether or not the translation requires
332f11c7f63SJim Harris     * response translation.
333f11c7f63SJim Harris     */
334f11c7f63SJim Harris    BOOL is_translate_response_required;
335f11c7f63SJim Harris 
336f11c7f63SJim Harris    /**
337f11c7f63SJim Harris     * This field specifies the remote device context for which this
338f11c7f63SJim Harris     * translator sequence is destined.
339f11c7f63SJim Harris     */
340f11c7f63SJim Harris    SATI_DEVICE_T * device;
341f11c7f63SJim Harris 
342f11c7f63SJim Harris    /**
343f11c7f63SJim Harris     * This field is utilized to provide the translator with memory space
344f11c7f63SJim Harris     * required for translations that utilize multiple requests.
345f11c7f63SJim Harris     */
346f11c7f63SJim Harris    union {
347f11c7f63SJim Harris       U32 translated_command;
348f11c7f63SJim Harris       U32 move_sector_count;
349f11c7f63SJim Harris       U32 scratch;
350f11c7f63SJim Harris       SATI_REASSIGN_BLOCKS_PROCESSING_STATE_T   reassign_blocks_process_state;
351f11c7f63SJim Harris       SATI_MODE_SELECT_PROCESSING_STATE_T       process_state;
352f11c7f63SJim Harris       SATI_UNMAP_PROCESSING_STATE_T             unmap_process_state;
353f11c7f63SJim Harris       SATI_ATAPI_DATA_T                         sati_atapi_data;
354f11c7f63SJim Harris    } command_specific_data;
355f11c7f63SJim Harris 
356f11c7f63SJim Harris } SATI_TRANSLATOR_SEQUENCE_T;
357f11c7f63SJim Harris 
358f11c7f63SJim Harris 
359f11c7f63SJim Harris 
360f11c7f63SJim Harris #endif // _SATI_TRANSLATOR_SEQUENCE_H_
361f11c7f63SJim Harris 
362