4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * CDDL HEADER START
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * The contents of this file are subject to the terms of the
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Common Development and Distribution License (the "License").
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * You may not use this file except in compliance with the License.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * or http://www.opensolaris.org/os/licensing.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * See the License for the specific language governing permissions
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * and limitations under the License.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * When distributing Covered Code, include this CDDL HEADER in each
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * If applicable, add the following below this CDDL HEADER, with the
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * fields enclosed by brackets "[]" replaced with your own identifying
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * information: Portions Copyright [yyyy] [name of copyright owner]
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * CDDL HEADER END
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Use is subject to license terms.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * ATAPI-7 Definitions (subset) that include Serial ATA
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * ATA/ATAPI-7 V3 (d1532v3r4b-ATA-ATAPI-7)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#ifndef _ATAPI7V3_H
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define _ATAPI7V3_H
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#ifdef __cplusplus
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhextern "C" {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#endif
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Register - Host to Device FIS
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t idcbits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t cmd;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t features;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FEATURE_LBA 0x40
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_low;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_mid;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_hi;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t device;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_low_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_mid_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_hi_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t features_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t sector_count;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t sector_count_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved0;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t control;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved1[4];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} register_h2d_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Register - Device to Host FIS
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t idcbits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t status;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t error;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_low;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_mid;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_hi;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t device;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_low_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_mid_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_hi_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved0;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t sector_count;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t sector_count_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved1[6];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} register_d2h_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t idcbits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t status_bits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define STATUS_HI_MASK 0xE
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define STATUS_HI_SHIFT 4
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define STATUS_LO_MASK 0x7
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t error;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} set_device_bits_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved[3];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} dma_activate_fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t idcbits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved0[2];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t dma_buffer_id_lo;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t dma_buffer_id_hi;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t reserved1;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t dma_buffer_offset;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t dma_buffer_count;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t reserved2;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} dma_fpactivate_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved0;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t bist_bits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved1;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t data[8];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} bist_activate_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_T 0x80
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_A 0x40
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_S 0x20
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_L 0x10
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_F 0x08
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_P 0x04
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define BIST_V 0x01
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t idcbits;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t status;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t error;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_low;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_mid;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_high;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t device;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_low_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_mid_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t lba_high_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved0;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t sector_count;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t sector_count_exp;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t reserved1;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t E_status;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint16_t transfer_count;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint16_t reserved2;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} pio_setup_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef struct {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint8_t fis_type;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t dwords[1];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh} bidirectional_fis_t;
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * FIS Types
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_REG_H2DEV 0x27 /* 5 DWORDS */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_REG_D2H 0x34 /* 5 DWORDS */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_SET_DEVICE_BITS 0xA1 /* 2 DWORDS */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_DMA_ACTIVATE 0x39 /* 1 DWORD */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_DMA_FPSETUP 0x41 /* 7 DWORDS */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_BIST_ACTIVATE 0x58 /* 3 DWORDS */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_PIO_SETUP 0x5F /* 5 DWORDS */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define FIS_BI 0x46 /* 1 DWORD min, 2048 DWORD max */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * IDC bits
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define C_BIT 0x80
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define I_BIT 0x40
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define D_BIT 0x20
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * 28-Bit Command Mapping from ACS to FIS
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * ACS Field FIS Field
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * --------------------------------------
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Feature (7:0) -> Feature
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Count (7:0) -> Sector Count
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (7:0) -> LBA Low
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (15:8) -> LBA Mid
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (23:16) -> LBA High
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (27:24) -> Device (3:0)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Device (15:12) -> Device (7:4)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Command -> Command
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * 48- Bit Command Mapping from ACS to FIS
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * ACS Field FIS Field
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * --------------------------------------
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Feature (7:0) -> Feature
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Feature (15:8) -> Feature (exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Count (7:0) -> Sector Count
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Count (15:8) -> Sector Count (exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (7:0) -> LBA Low
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (15:8) -> LBA Mid
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (23:16) -> LBA High
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (31:24) -> LBA Low (exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (39:32) -> LBA Mid (exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * LBA (47:40) -> LBA High (exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Device (15:12) -> Device (7:4)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Command -> Command
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * FIS (FIS_REG_H2DEV) layout:
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * 31.........24 23...........16 15....................8.7.............0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * FEATURE | COMMAND | C R R RESERVED | FIS TYPE 0x27
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * DEVICE | LBA HIGH | LBA MID | LBA LOW
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * FEATURE(exp) | LBA HIGH(exp) | LBA MID(exp) | LBA LOW(exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * CONTROL | RESERVED | Sector Count(exp) | Sector Count
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * RESERVED | RESERVED | RESERVED | RESERVED
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * FIS (FIS_REG_D2H) layout:
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * 31.........24 23...........16 15....................8.7.............0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * ERROR | STATUS | R I R RESERVED | FIS TYPE 0x34
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * DEVICE | LBA HIGH | LBA MID | LBA LOW
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * RESERVED | LBA HIGH(exp) | LBA MID(exp) | LBA LOW(exp)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * RESERVED | RESERVED | Sector Count(exp) | Sector Count
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * RESERVED | RESERVED | RESERVED | RESERVED
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Reasonable size to reserve for holding the most common FIS types.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef uint32_t fis_t[5];
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#ifdef __cplusplus
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh}
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#endif
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#endif /* _ATAPI7V3_H */