126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* linux/drivers/scsi/esas2r/atvda.h 226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * ATTO VDA interface definitions 326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * 426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * Copyright (c) 2001-2013 ATTO Technology, Inc. 526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * (mailto:linuxdrivers@attotech.com) 626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* 926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * This program is free software; you can redistribute it and/or modify 1026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * it under the terms of the GNU General Public License as published by 1126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * the Free Software Foundation; version 2 of the License. 1226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * 1326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * This program is distributed in the hope that it will be useful, 1426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * but WITHOUT ANY WARRANTY; without even the implied warranty of 1526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * GNU General Public License for more details. 1726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * 1826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * NO WARRANTY 1926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR 2026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT 2126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, 2226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is 2326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * solely responsible for determining the appropriateness of using and 2426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * distributing the Program and assumes all risks associated with its 2526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * exercise of rights under this Agreement, including but not limited to 2626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * the risks and costs of program errors, damage to or loss of data, 2726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * programs or equipment, and unavailability or interruption of operations. 2826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * 2926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * DISCLAIMER OF LIABILITY 3026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY 3126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND 3326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 3426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 3526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 3626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 3726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * 3826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * You should have received a copy of the GNU General Public License 3926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * along with this program; if not, write to the Free Software 4026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 4126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 4226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 4326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 4426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 4526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#ifndef ATVDA_H 4626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define ATVDA_H 4726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 4826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_dev_addr { 4926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 dev_port; 5026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 hba_port; 5126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 lun; 5226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 flags; 5326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DEVADDRF_SATA 0x01 5426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DEVADDRF_SSD 0x02 5526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 link_speed; /* VDALINKSPEED_xxx */ 5626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 pad[1]; 5726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 5826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 5926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* dev_addr2 was added for 64-bit alignment */ 6026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 6126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_dev_addr2 { 6226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 dev_port; 6326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 hba_port; 6426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 lun; 6526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 flags; 6626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 link_speed; 6726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 pad[5]; 6826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 6926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 7026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_sge { 7126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 7226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 address; 7326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 7426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 7526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 7626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* VDA request function codes */ 7726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 7826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_SCSI 0x00 7926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_FLASH 0x01 8026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_DIAG 0x02 8126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_AE 0x03 8226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_CLI 0x04 8326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_IOCTL 0x05 8426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_CFG 0x06 8526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_MGT 0x07 8626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FUNC_GSV 0x08 8726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 8826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 8926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* VDA request status values. for host driver considerations, values for 9026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * SCSI requests start at zero. other requests may use these values as well. */ 9126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 9226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_SUCCESS 0x00 /*! successful completion */ 9326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_INV_FUNC 0x01 /*! invalid command function */ 9426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_BUSY 0x02 /*! insufficient resources */ 9526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_SEL 0x03 /*! no target at target_id */ 9626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_NO_LUN 0x04 /*! invalid LUN */ 9726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_TIMEOUT 0x05 /*! request timeout */ 9826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_OVERRUN 0x06 /*! data overrun */ 9926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_UNDERRUN 0x07 /*! data underrun */ 10026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_SCSI_ERROR 0x08 /*! SCSI error occurred */ 10126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_ABORTED 0x0A /*! command aborted */ 10226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_RESID_MISM 0x0B /*! residual length incorrect */ 10326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_TM_FAILED 0x0C /*! task management failed */ 10426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_RESET 0x0D /*! aborted due to bus reset */ 10526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_ERR_DMA_SG 0x0E /*! error reading SG list */ 10626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_ERR_DMA_DATA 0x0F /*! error transferring data */ 10726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_UNSUPPORTED 0x10 /*! unsupported request */ 10826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_SEL2 0x70 /*! internal generated RS_SEL */ 10926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_VDA_BASE 0x80 /*! base of VDA-specific errors */ 11026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_MGT_BASE 0x80 /*! base of VDA management errors */ 11126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_SCAN_FAIL (RS_MGT_BASE + 0x00) 11226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_DEV_INVALID (RS_MGT_BASE + 0x01) 11326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_DEV_ASSIGNED (RS_MGT_BASE + 0x02) 11426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_DEV_REMOVE (RS_MGT_BASE + 0x03) 11526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_DEV_LOST (RS_MGT_BASE + 0x04) 11626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_SCAN_GEN (RS_MGT_BASE + 0x05) 11726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_INVALID (RS_MGT_BASE + 0x08) 11826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_EXISTS (RS_MGT_BASE + 0x09) 11926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_LIMIT (RS_MGT_BASE + 0x0A) 12026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_INTLV (RS_MGT_BASE + 0x0B) 12126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_SPAN (RS_MGT_BASE + 0x0C) 12226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_TYPE (RS_MGT_BASE + 0x0D) 12326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_MEMBERS (RS_MGT_BASE + 0x0E) 12426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_COMMIT (RS_MGT_BASE + 0x0F) 12526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_REBUILD (RS_MGT_BASE + 0x10) 12626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_REBUILD_TYPE (RS_MGT_BASE + 0x11) 12726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_BLOCK_SIZE (RS_MGT_BASE + 0x12) 12826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CFG_SAVE (RS_MGT_BASE + 0x14) 12926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_LAST (RS_MGT_BASE + 0x18) 13026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_ELEM_INVALID (RS_MGT_BASE + 0x19) 13126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_MAPPED (RS_MGT_BASE + 0x1A) 13226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_TARGET (RS_MGT_BASE + 0x1B) 13326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_LUN (RS_MGT_BASE + 0x1C) 13426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_DUP (RS_MGT_BASE + 0x1D) 13526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_NOMAP (RS_MGT_BASE + 0x1E) 13626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_MAX (RS_MGT_BASE + 0x1F) 13726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_CAP (RS_MGT_BASE + 0x20) 13826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PART_STATE (RS_MGT_BASE + 0x21) 13926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_TEST_IN_PROG (RS_MGT_BASE + 0x22) 14026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_METRICS_ERROR (RS_MGT_BASE + 0x23) 14126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_HS_ERROR (RS_MGT_BASE + 0x24) 14226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_NO_METRICS_TEST (RS_MGT_BASE + 0x25) 14326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_BAD_PARAM (RS_MGT_BASE + 0x26) 14426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_GRP_MEMBER_SIZE (RS_MGT_BASE + 0x27) 14526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_BASE 0xB0 /*! base of VDA errors */ 14626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_AREA (RS_FLS_BASE + 0x00) 14726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_BUSY (RS_FLS_BASE + 0x01) 14826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_RANGE (RS_FLS_BASE + 0x02) 14926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_BEGIN (RS_FLS_BASE + 0x03) 15026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_CHECK (RS_FLS_BASE + 0x04) 15126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_FAIL (RS_FLS_BASE + 0x05) 15226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_RSRC (RS_FLS_BASE + 0x06) 15326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_NOFILE (RS_FLS_BASE + 0x07) 15426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_FLS_ERR_FSIZE (RS_FLS_BASE + 0x08) 15526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CFG_BASE 0xC0 /*! base of VDA configuration errors */ 15626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CFG_ERR_BUSY (RS_CFG_BASE + 0) 15726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CFG_ERR_SGE (RS_CFG_BASE + 1) 15826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CFG_ERR_DATE (RS_CFG_BASE + 2) 15926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CFG_ERR_TIME (RS_CFG_BASE + 3) 16026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_DEGRADED 0xFB /*! degraded mode */ 16126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_CLI_INTERNAL 0xFC /*! VDA CLI internal error */ 16226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_VDA_INTERNAL 0xFD /*! catch-all */ 16326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_PENDING 0xFE /*! pending, not started */ 16426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define RS_STARTED 0xFF /*! started */ 16526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 16626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 16726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* flash request subfunctions. these are used in both the IOCTL and the 16826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * driver-firmware interface (VDA_FUNC_FLASH). */ 16926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 17026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_BEGINW 0x00 17126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_READ 0x01 17226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_WRITE 0x02 17326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_COMMIT 0x03 17426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_CANCEL 0x04 17526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_INFO 0x05 17626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_FREAD 0x06 17726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_FWRITE 0x07 17826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_FLASH_FINFO 0x08 17926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 18026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 18126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* IOCTL request subfunctions. these identify the payload type for 18226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * VDA_FUNC_IOCTL. 18326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 18426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 18526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_IOCTL_HBA 0x00 18626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_IOCTL_CSMI 0x01 18726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_IOCTL_SMP 0x02 18826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 18926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_devinfo { 19026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_dev_addr dev_addr; 19126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 vendor_id[8]; 19226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 product_id[16]; 19326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 revision[4]; 19426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 capacity; 19526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 block_size; 19626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 dev_type; 19726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 19826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 19926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 dev_status; 20026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_INVALID 0x00 20126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_CORRUPT VDADEVSTAT_INVALID 20226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_ASSIGNED 0x01 20326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_SPARE 0x02 20426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_UNAVAIL 0x03 20526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_PT_MAINT 0x04 20626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_LCLSPARE 0x05 20726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_UNUSEABLE 0x06 20826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVSTAT_AVAIL 0xFF 20926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 21026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_ctrl; 21126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DEV_OP_CTRL_START 0x01 21226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DEV_OP_CTRL_HALT 0x02 21326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DEV_OP_CTRL_RESUME 0x03 21426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DEV_OP_CTRL_CANCEL 0x04 21526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 21626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 21726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 member_state; 21826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMBRSTATE_ONLINE 0x00 21926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMBRSTATE_DEGRADED 0x01 22026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMBRSTATE_UNAVAIL 0x02 22126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMBRSTATE_FAULTED 0x03 22226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMBRSTATE_MISREAD 0x04 22326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMBRSTATE_INCOMPAT 0x05 22426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 22526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 operation; 22626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_NONE 0x00 22726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_REBUILD 0x01 22826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_ERASE 0x02 22926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_PATTERN 0x03 23026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_CONVERSION 0x04 23126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_FULL_INIT 0x05 23226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_QUICK_INIT 0x06 23326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_SECT_SCAN 0x07 23426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_SECT_SCAN_PARITY 0x08 23526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_SECT_SCAN_PARITY_FIX 0x09 23626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOP_RECOV_REBUILD 0x0A 23726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 23826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_status; 23926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOPSTAT_OK 0x00 24026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOPSTAT_FAULTED 0x01 24126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOPSTAT_HALTED 0x02 24226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAOPSTAT_INT 0x03 24326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 24426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 progress; /* 0 - 100% */ 24526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 ses_dev_index; 24626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASESDI_INVALID 0xFFFF 24726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 24826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 serial_no[32]; 24926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 25026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 25126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 target_id; 25226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDATGTID_INVALID 0xFFFF 25326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 25426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 features_mask; 25526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 25626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 25726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 lun; 25826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 features; 25926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVFEAT_ENC_SERV 0x0001 26026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVFEAT_IDENT 0x0002 26126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVFEAT_DH_SUPP 0x0004 26226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVFEAT_PHYS_ID 0x0008 26326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 26426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 ses_element_id; 26526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 link_speed; 26626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_UNKNOWN 0x00 26726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_1GB 0x01 26826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_1_5GB 0x02 26926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_2GB 0x03 27026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_3GB 0x04 27126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_4GB 0x05 27226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_6GB 0x06 27326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDALINKSPEED_8GB 0x07 27426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 27526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 phys_target_id; 27626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[2]; 27726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 27826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 27926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 28026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/*! struct atto_vda_devinfo2 is a replacement for atto_vda_devinfo. it 28126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * extends beyond the 0x70 bytes allowed in atto_vda_mgmt_req; therefore, 28226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * the entire structure is DMaed between the firmware and host buffer and 28326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * the data will always be in little endian format. 28426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 28526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 28626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_devinfo2 { 28726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_dev_addr dev_addr; 28826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 vendor_id[8]; 28926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 product_id[16]; 29026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 revision[4]; 29126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 capacity; 29226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 block_size; 29326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 dev_type; 29426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 dev_status; 29526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 member_state; 29626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 operation; 29726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_status; 29826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 progress; 29926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 ses_dev_index; 30026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 serial_no[32]; 30126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 30226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 target_id; 30326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 features_mask; 30426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 30526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 30626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 lun; 30726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 features; 30826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 ses_element_id; 30926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 link_speed; 31026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 phys_target_id; 31126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[2]; 31226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 31326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* This is where fields specific to struct atto_vda_devinfo2 begin. Note 31426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * that the structure version started at one so applications that unionize this 31526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * structure with atto_vda_dev_info can differentiate them if desired. 31626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 31726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 31826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 version; 31926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVINFO_VERSION0 0x00 32026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVINFO_VERSION1 0x01 32126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVINFO_VERSION2 0x02 32226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVINFO_VERSION3 0x03 32326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADEVINFO_VERSION VDADEVINFO_VERSION3 32426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 32526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved2[3]; 32626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 32726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove /* sector scanning fields */ 32826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 32926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ss_curr_errors; 33026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 ss_curr_scanned; 33126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ss_curr_recvrd; 33226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ss_scan_length; 33326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ss_total_errors; 33426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ss_total_recvrd; 33526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ss_num_scans; 33626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 33726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove /* grp_name was added in version 2 of this structure. */ 33826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 33926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char grp_name[15]; 34026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved3[4]; 34126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 34226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove /* dev_addr_list was added in version 3 of this structure. */ 34326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 34426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 num_dev_addr; 34526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_dev_addr2 dev_addr_list[8]; 34626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 34726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 34826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 34926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_grp_info { 35026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 grp_index; 35126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_MAX_RAID_GROUPS 32 35226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 35326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char grp_name[15]; 35426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 capacity; 35526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 block_size; 35626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 interleave; 35726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 type; 35826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID0 0 35926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID1 1 36026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID4 4 36126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID5 5 36226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID6 6 36326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID10 10 36426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID40 40 36526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID50 50 36626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_RAID60 60 36726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_DVRAID_HS 252 36826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_DVRAID_NOHS 253 36926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_JBOD 254 37026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_TYPE_SPARE 255 37126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 37226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 37326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 status; 37426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_INVALID 0x00 37526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_NEW 0x01 37626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_WAITING 0x02 37726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_ONLINE 0x03 37826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_DEGRADED 0x04 37926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_OFFLINE 0x05 38026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_DELETED 0x06 38126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_RECOV_BASIC 0x07 38226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_STAT_RECOV_EXTREME 0x08 38326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 38426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_ctrl; 38526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_OP_CTRL_START 0x01 38626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_OP_CTRL_HALT 0x02 38726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_OP_CTRL_RESUME 0x03 38826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_OP_CTRL_CANCEL 0x04 38926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 39026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 39126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 rebuild_state; 39226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_NONE 0x00 39326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_REBUILD 0x01 39426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_ERASE 0x02 39526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_PATTERN 0x03 39626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_CONV 0x04 39726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_FULL_INIT 0x05 39826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_QUICK_INIT 0x06 39926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_SECT_SCAN 0x07 40026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_SECT_SCAN_PARITY 0x08 40126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_SECT_SCAN_PARITY_FIX 0x09 40226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_RECOV_REBUILD 0x0A 40326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_RECOV_BASIC 0x0B 40426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_RBLD_RECOV_EXTREME 0x0C 40526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 40626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 span_depth; 40726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 progress; 40826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 mirror_width; 40926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 stripe_width; 41026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 member_cnt; 41126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 41226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 41326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 members[32]; 41426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_MEMBER_MISSING 0xFFFF 41526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_MEMBER_NEW 0xFFFE 41626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 features_mask; 41726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 41826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 41926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 features; 42026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_HOTSWAP 0x0001 42126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_SPDRD_MASK 0x0006 42226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_SPDRD_DIS 0x0000 42326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_SPDRD_ENB 0x0002 42426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_SPDRD_AUTO 0x0004 42526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_IDENT 0x0008 42626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_RBLDPRI_MASK 0x0030 42726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_RBLDPRI_LOW 0x0010 42826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_RBLDPRI_SAME 0x0020 42926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_RBLDPRI_HIGH 0x0030 43026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_WRITE_CACHE 0x0040 43126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_RBLD_RESUME 0x0080 43226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_SECT_RESUME 0x0100 43326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_INIT_RESUME 0x0200 43426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_SSD 0x0400 43526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_GRP_FEAT_BOOT_DEV 0x0800 43626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 43726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove /* 43826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * for backward compatibility, a prefetch value of zero means the 43926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * setting is ignored/unsupported. therefore, the firmware supported 44026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * 0-6 values are incremented to 1-7. 44126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 44226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 44326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 prefetch; 44426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_status; 44526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPSTAT_MASK 0x0F 44626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPSTAT_INVALID 0x00 44726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPSTAT_OK 0x01 44826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPSTAT_FAULTED 0x02 44926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPSTAT_HALTED 0x03 45026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPSTAT_INT 0x04 45126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPPROC_MASK 0xF0 45226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPPROC_STARTABLE 0x10 45326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPPROC_CANCELABLE 0x20 45426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPPROC_RESUMABLE 0x40 45526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAGRPOPPROC_HALTABLE 0x80 45626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 over_provision; 45726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[3]; 45826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 45926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 46026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 46126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 46226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vdapart_info { 46326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 part_no; 46426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_MAX_PARTITIONS 128 46526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 46626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char grp_name[15]; 46726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 part_size; 46826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 start_lba; 46926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 block_size; 47026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 target_id; 47126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 LUN; 47226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char serial_no[41]; 47326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 features; 47426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAPI_FEAT_WRITE_CACHE 0x01 47526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 47626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[7]; 47726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 47826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 47926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 48026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_dh_info { 48126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 req_type; 48226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQTYPE_CACHE 0x01 48326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQTYPE_FETCH 0x02 48426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQTYPE_SET_STAT 0x03 48526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQTYPE_GET_STAT 0x04 48626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 48726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 req_qual; 48826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQQUAL_SMART 0x01 48926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQQUAL_MEDDEF 0x02 49026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_RQQUAL_INFOEXC 0x04 49126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 49226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 num_smart_attribs; 49326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 status; 49426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_STAT_DISABLE 0x00 49526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_STAT_ENABLE 0x01 49626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 49726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 med_defect_cnt; 49826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 info_exc_cnt; 49926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 smart_status; 50026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_SMARTSTAT_OK 0x00 50126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADH_SMARTSTAT_ERR 0x01 50226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 50326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[35]; 50426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 50526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 50626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 50726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 50826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_dh_smart { 50926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 attrib_id; 51026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 current_val; 51126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 worst; 51226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 threshold; 51326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 raw_data[6]; 51426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 raw_attrib_status; 51526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_RAWSTAT_PREFAIL_WARRANTY 0x01 51626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_RAWSTAT_ONLINE_COLLECTION 0x02 51726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_RAWSTAT_PERFORMANCE_ATTR 0x04 51826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_RAWSTAT_ERROR_RATE_ATTR 0x08 51926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_RAWSTAT_EVENT_COUNT_ATTR 0x10 52026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_RAWSTAT_SELF_PRESERVING_ATTR 0x20 52126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 52226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 calc_attrib_status; 52326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_CALCSTAT_UNKNOWN 0x00 52426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_CALCSTAT_GOOD 0x01 52526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_CALCSTAT_PREFAIL 0x02 52626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDADHSM_CALCSTAT_OLDAGE 0x03 52726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 52826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[4]; 52926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 53026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 53126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 53226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_metrics_info { 53326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 data_version; 53426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_VERSION0 0x00 53526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_VERSION VDAMET_VERSION0 53626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 53726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 metrics_action; 53826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_METACT_NONE 0x00 53926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_METACT_START 0x01 54026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_METACT_STOP 0x02 54126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_METACT_RETRIEVE 0x03 54226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_METACT_CLEAR 0x04 54326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 54426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 test_action; 54526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_TSTACT_NONE 0x00 54626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_TSTACT_STRT_INIT 0x01 54726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_TSTACT_STRT_READ 0x02 54826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_TSTACT_STRT_VERIFY 0x03 54926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_TSTACT_STRT_INIT_VERIFY 0x04 55026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_TSTACT_STOP 0x05 55126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 55226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 num_dev_indexes; 55326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMET_ALL_DEVICES 0xFF 55426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 55526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 dev_indexes[32]; 55626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[12]; 55726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 55826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 55926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 56026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 56126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_metrics_data { 56226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 dev_index; 56326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 length; 56426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMD_LEN_LAST 0x8000 56526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMD_LEN_MASK 0x0FFF 56626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 56726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 flags; 56826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_RUN 0x00000007 56926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_RUN_READ 0x00000001 57026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_RUN_WRITE 0x00000002 57126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_RUN_ALL 0x00000004 57226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_READ 0x00000010 57326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_WRITE 0x00000020 57426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_ALL 0x00000040 57526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_DRIVETEST 0x40000000 57626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAMDF_NEW 0x80000000 57726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 57826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 total_read_data; 57926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 total_write_data; 58026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 total_read_io; 58126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 total_write_io; 58226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 read_start_time; 58326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 read_stop_time; 58426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 write_start_time; 58526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 write_stop_time; 58626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 read_maxio_time; 58726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 wpvdadmetricsdatarite_maxio_time; 58826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 read_totalio_time; 58926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 write_totalio_time; 59026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 read_total_errs; 59126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 write_total_errs; 59226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 read_recvrd_errs; 59326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 write_recvrd_errs; 59426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 miscompares; 59526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 59626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 59726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 59826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_schedule_info { 59926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 schedule_type; 60026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_SCHTYPE_ONETIME 0x01 60126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_SCHTYPE_DAILY 0x02 60226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_SCHTYPE_WEEKLY 0x03 60326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 60426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 operation; 60526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_OP_NONE 0x00 60626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_OP_CREATE 0x01 60726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_OP_CANCEL 0x02 60826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 60926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 hour; 61026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 minute; 61126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 day; 61226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_DAY_NONE 0x00 61326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 61426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 progress; 61526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_PROG_NONE 0xFF 61626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 61726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 event_type; 61826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_EVTTYPE_SECT_SCAN 0x01 61926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_EVTTYPE_SECT_SCAN_PARITY 0x02 62026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_EVTTYPE_SECT_SCAN_PARITY_FIX 0x03 62126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 62226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 recurrences; 62326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_RECUR_FOREVER 0x00 62426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 62526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 id; 62626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDASI_ID_NONE 0x00 62726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 62826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char grp_name[15]; 62926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[85]; 63026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 63126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 63226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 63326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_n_vcache_info { 63426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 super_cap_status; 63526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_SUPERCAP_NOT_PRESENT 0x00 63626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_SUPERCAP_FULLY_CHARGED 0x01 63726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_SUPERCAP_NOT_CHARGED 0x02 63826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 63926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 nvcache_module_status; 64026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_NVCACHEMODULE_NOT_PRESENT 0x00 64126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_NVCACHEMODULE_PRESENT 0x01 64226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 64326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 protection_mode; 64426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_PROTMODE_HI_PROTECT 0x00 64526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDANVCI_PROTMODE_HI_PERFORM 0x01 64626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 64726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[109]; 64826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 64926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 65026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 65126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_buzzer_info { 65226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 status; 65326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDABUZZI_BUZZER_OFF 0x00 65426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDABUZZI_BUZZER_ON 0x01 65526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDABUZZI_BUZZER_LAST 0x02 65626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 65726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[3]; 65826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 duration; 65926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDABUZZI_DURATION_INDEFINITE 0xffffffff 66026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 66126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved2[104]; 66226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 66326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 66426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 66526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_adapter_info { 66626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 version; 66726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAADAPINFO_VERSION0 0x00 66826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAADAPINFO_VERSION VDAADAPINFO_VERSION0 66926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 67026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved; 67126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove signed short utc_offset; 67226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 utc_time; 67326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 features; 67426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ADAP_FEAT_IDENT 0x0001 67526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ADAP_FEAT_BUZZ_ERR 0x0002 67626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ADAP_FEAT_UTC_TIME 0x0004 67726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 67826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 valid_features; 67926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char active_config[33]; 68026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 temp_count; 68126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 fan_count; 68226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved3[61]; 68326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 68426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 68526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 68626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_temp_info { 68726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 temp_index; 68826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 max_op_temp; 68926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 min_op_temp; 69026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_temp_warn; 69126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 temperature; 69226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 type; 69326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_TEMP_TYPE_CPU 1 69426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 69526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[106]; 69626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 69726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 69826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 69926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_fan_info { 70026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 fan_index; 70126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 status; 70226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_FAN_STAT_UNKNOWN 0 70326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_FAN_STAT_NORMAL 1 70426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_FAN_STAT_FAIL 2 70526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 70626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 crit_pvdafaninfothreshold; 70726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 warn_threshold; 70826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 speed; 70926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[104]; 71026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 71126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 71226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 71326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* VDA management commands */ 71426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 71526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_SCAN 0x00 71626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_INFO 0x01 71726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_CLEAN 0x02 71826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_IDENTIFY 0x03 71926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_IDENTSTOP 0x04 72026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_PT_INFO 0x05 72126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_FEATURES 0x06 72226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_PT_FEATURES 0x07 72326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_HEALTH_REQ 0x08 72426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_METRICS 0x09 72526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_INFO2 0x0A 72626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_OPERATION 0x0B 72726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_DEV_INFO2_BYADDR 0x0C 72826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_INFO 0x10 72926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_CREATE 0x11 73026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_DELETE 0x12 73126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_ADD_STORAGE 0x13 73226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_MEMBER_ADD 0x14 73326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_COMMIT 0x15 73426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_REBUILD 0x16 73526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_COMMIT_INIT 0x17 73626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_QUICK_RAID 0x18 73726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_FEATURES 0x19 73826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_COMMIT_INIT_AUTOMAP 0x1A 73926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_QUICK_RAID_INIT_AUTOMAP 0x1B 74026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_GRP_OPERATION 0x1C 74126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_CFG_SAVE 0x20 74226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_LAST_ERROR 0x21 74326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_ADAP_INFO 0x22 74426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_ADAP_FEATURES 0x23 74526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_TEMP_INFO 0x24 74626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_FAN_INFO 0x25 74726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_PART_INFO 0x30 74826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_PART_MAP 0x31 74926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_PART_UNMAP 0x32 75026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_PART_AUTOMAP 0x33 75126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_PART_SPLIT 0x34 75226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_PART_MERGE 0x35 75326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_SPARE_LIST 0x40 75426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_SPARE_ADD 0x41 75526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_SPARE_REMOVE 0x42 75626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_LOCAL_SPARE_ADD 0x43 75726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_SCHEDULE_EVENT 0x50 75826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_SCHEDULE_INFO 0x51 75926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_NVCACHE_INFO 0x60 76026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_NVCACHE_SET 0x61 76126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_BUZZER_INFO 0x70 76226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAMGT_BUZZER_SET 0x71 76326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 76426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 76526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_hdr { 76626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bylength; 76726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byflags; 76826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDRF_EVENT_ACK 0x01 76926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 77026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byversion; 77126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_VER_0 0 77226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 77326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bytype; 77426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_RAID 1 77526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_LU 2 77626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_DISK 3 77726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_RESET 4 77826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_LOG_INFO 5 77926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_LOG_WARN 6 78026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_LOG_CRIT 7 78126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_LOG_FAIL 8 78226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_NVC 9 78326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_TLG_INFO 10 78426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_TLG_WARN 11 78526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_TLG_CRIT 12 78626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_PWRMGT 13 78726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_MUTE 14 78826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_HDR_TYPE_DEV 15 78926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 79026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 79126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 79226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_raid { 79326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 79426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwflags; 79526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GROUP_STATE 0x00000001 79626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_STATE 0x00000002 79726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_PROG 0x00000004 79826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_MEMBER_CHG 0x00000008 79926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_PART_CHG 0x00000010 80026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_MEM_STATE_CHG 0x00000020 80126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 80226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bygroup_state; 80326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_INVALID 0 80426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_NEW 1 80526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_WAITING 2 80626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_ONLINE 3 80726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_DEGRADED 4 80826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_OFFLINE 5 80926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_DELETED 6 81026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_BASIC 7 81126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_EXTREME 8 81226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RAID_UNKNOWN 9 81326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 81426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byrebuild_state; 81526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_NONE 0 81626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_REBUILD 1 81726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_ERASE 2 81826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_PATTERN 3 81926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_CONV 4 82026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_FULL_INIT 5 82126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_QUICK_INIT 6 82226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_SECT_SCAN 7 82326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_SECT_SCAN_PARITY 8 82426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_SECT_SCAN_PARITY_FIX 9 82526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_RECOV_REBUILD 10 82626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_RBLD_UNKNOWN 11 82726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 82826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byrebuild_progress; 82926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 op_status; 83026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPSTAT_MASK 0x0F 83126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPSTAT_INVALID 0x00 83226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPSTAT_OK 0x01 83326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPSTAT_FAULTED 0x02 83426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPSTAT_HALTED 0x03 83526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPSTAT_INT 0x04 83626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPPROC_MASK 0xF0 83726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPPROC_STARTABLE 0x10 83826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPPROC_CANCELABLE 0x20 83926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPPROC_RESUMABLE 0x40 84026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_GRPOPPROC_HALTABLE 0x80 84126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char acname[15]; 84226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byreserved; 84326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byreserved2[0x80 - 0x1C]; 84426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 84526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 84626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 84726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_lu_tgt_lun { 84826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 wtarget_id; 84926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bylun; 85026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byreserved; 85126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 85226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 85326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 85426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_lu_tgt_lun_raid { 85526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 wtarget_id; 85626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bylun; 85726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byreserved; 85826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwinterleave; 85926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwblock_size; 86026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 86126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 86226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 86326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_lu { 86426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 86526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwevent; 86626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_DISC 0x00000001 86726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_LOST 0x00000002 86826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_STATE 0x00000004 86926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_PASSTHROUGH 0x10000000 87026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_PHYS_ID 0x20000000 87126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 87226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bystate; 87326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_UNDEFINED 0 87426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_NOT_PRESENT 1 87526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_OFFLINE 2 87626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_ONLINE 3 87726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_DEGRADED 4 87826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_FACTORY_DISABLED 5 87926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_DELETED 6 88026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_BUSSCAN 7 88126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDAAE_LU_UNKNOWN 8 88226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 88326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 byreserved; 88426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 wphys_target_id; 88526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 88626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 88726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_lu_tgt_lun tgtlun; 88826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_lu_tgt_lun_raid tgtlun_raid; 88926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } id; 89026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 89126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 89226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 89326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_disk { 89426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 89526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 89626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 89726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 89826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAAE_LOG_STRSZ 64 89926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 90026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_log { 90126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 90226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char aclog_ascii[VDAAE_LOG_STRSZ]; 90326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 90426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 90526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 90626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDAAE_TLG_STRSZ 56 90726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 90826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_timestamp_log { 90926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 91026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwtimestamp; 91126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char aclog_ascii[VDAAE_TLG_STRSZ]; 91226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 91326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 91426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 91526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_nvc { 91626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 91726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 91826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 91926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 92026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_dev { 92126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 92226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_dev_addr devaddr; 92326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 92426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 92526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 92626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Groveunion atto_vda_ae { 92726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_hdr hdr; 92826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_disk disk; 92926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_lu lu; 93026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_raid raid; 93126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_log log; 93226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_timestamp_log tslog; 93326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_nvc nvcache; 93426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_dev dev; 93526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 93626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 93726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 93826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_date_and_time { 93926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 flags; 94026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_MASK 0x07 94126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_NONE 0x00 94226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_SUN 0x01 94326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_MON 0x02 94426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_TUE 0x03 94526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_WED 0x04 94626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_THU 0x05 94726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_FRI 0x06 94826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_DAY_SAT 0x07 94926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_PM 0x40 95026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DT_MILITARY 0x80 95126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 95226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 seconds; 95326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 minutes; 95426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 hours; 95526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 day; 95626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 month; 95726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 year; 95826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 95926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 96026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_LEN_LIMIT 0x003FFFFF /*! mask of segment length */ 96126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_LEN_MAX 0x003FF000 /*! maximum segment length */ 96226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_LAST 0x01000000 /*! last entry */ 96326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_ADDR_64 0x04000000 /*! 64-bit addressing flag */ 96426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_CHAIN 0x80000000 /*! chain descriptor flag */ 96526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_CHAIN_LEN 0x0000FFFF /*! mask of length in chain entries */ 96626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define SGE_CHAIN_SZ 0x00FF0000 /*! mask of size of chained buffer */ 96726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 96826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 96926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_cfg_init { 97026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_date_and_time date_time; 97126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 sgl_page_size; 97226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 vda_version; 97326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 fw_version; 97426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 fw_build; 97526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 fw_release; 97626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 epoch_time; 97726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ioctl_tunnel; 97826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_MEM_RW 0x00000001 97926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_TRACE 0x00000002 98026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_SCSI_PASS_THRU 0x00000004 98126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_GET_DEV_ADDR 0x00000008 98226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_PHY_CTRL 0x00000010 98326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_CONN_CTRL 0x00000020 98426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_ITF_GET_DEV_INFO 0x00000040 98526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 98626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 num_targets_backend; 98726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved[0x48]; 98826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 98926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 99026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 99126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* configuration commands */ 99226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 99326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_CFG_INIT 0x00 99426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_CFG_GET_INIT 0x01 99526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define VDA_CFG_GET_INIT2 0x02 99626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 99726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 99826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/*! physical region descriptor (PRD) aka scatter/gather entry */ 99926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 100026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_physical_region_description { 100126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 address; 100226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ctl_len; 100326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_LEN_LIMIT 0x003FFFFF 100426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_LEN_MAX 0x003FF000 100526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_NXT_PRD_CNT 0x0000007F 100626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_CHAIN 0x01000000 100726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_DATA 0x00000000 100826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL 0xF0000000 100926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL_F0 0x00000000 101026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL_F1 0x40000000 101126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL_F2 0x80000000 101226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL_F3 0xc0000000 101326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL_SRAM 0x10000000 101426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define PRD_INT_SEL_PBSR 0x20000000 101526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 101626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 101726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 101826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* Request types. NOTE that ALL requests have the same layout for the first 101926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove * few bytes. 102026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove */ 102126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_req_header { 102226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 102326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; 102426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 variable1; 102526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 102626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 102726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 102826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 102926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 103026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 103126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#define FCP_CDB_SIZE 16 103226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 103326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_scsi_req { 103426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 103526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_SCSI */ 103626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sense_len; 103726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 103826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 103926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 104026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 flags; 104126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_LUN_MASK 0x000000FF 104226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TA_MASK 0x00000700 104326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TA_SIMPL_Q 0x00000000 104426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TA_HEAD_Q 0x00000100 104526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TA_ORDRD_Q 0x00000200 104626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TA_ACA 0x00000400 104726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_PRI_MASK 0x00007800 104826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TM_MASK 0x00FF0000 104926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_ATS 0x00020000 105026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_CTS 0x00040000 105126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_LRS 0x00100000 105226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TRS 0x00200000 105326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_CLA 0x00400000 105426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_TRM 0x00800000 105526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_DATA_DIR 0x03000000 105626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_WRD 0x01000000 105726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define FCP_CMND_RDD 0x02000000 105826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 105926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 cdb[FCP_CDB_SIZE]; 106026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 106126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct __packed { 106226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 ppsense_buf; 106326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 target_id; 106426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 iblk_cnt_prd; 106526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved; 106626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 106726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 106826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description sense_buff_prd; 106926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 107026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 107126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 107226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 107326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 107426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 abort_handle; 107526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwords[245]; 107626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description prd[1]; 107726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } u; 107826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 107926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 108026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 108126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_flash_req { 108226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 108326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_FLASH */ 108426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sub_func; 108526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 108626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 108726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 108826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 flash_addr; 108926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 checksum; 109026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 rsvd[3]; 109126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 109226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 109326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct { 109426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove char file_name[16]; /* 8.3 fname, NULL term, wc=* */ 109526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 109626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } file; 109726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 109826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 109926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description prde[2]; 110026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } data; 110126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 110226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 110326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 110426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_diag_req { 110526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 110626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_DIAG */ 110726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sub_func; 110826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DIAG_STATUS 0x00 110926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DIAG_RESET 0x01 111026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DIAG_PAUSE 0x02 111126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DIAG_RESUME 0x03 111226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DIAG_READ 0x04 111326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define VDA_DIAG_WRITE 0x05 111426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 111526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 111626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 111726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 111826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 rsvd; 111926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u64 local_addr; 112026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 112126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 112226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 112326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 112426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_req { 112526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 112626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_AE */ 112726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved1; 112826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 112926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 113026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 113126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 113226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 113326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 113426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description prde[1]; 113526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 113626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 113726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 113826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 113926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_cli_req { 114026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 114126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_CLI */ 114226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved1; 114326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 114426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 114526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 114626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 cmd_rsp_len; 114726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 114826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 114926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 115026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 115126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ioctl_req { 115226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 115326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_IOCTL */ 115426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sub_func; 115526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 115626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 115726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 115826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 115926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 116026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge reserved_sge; 116126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description reserved_prde; 116226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 116326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 116426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 116526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct { 116626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 ctrl_code; 116726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 target_id; 116826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 lun; 116926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved; 117026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } csmi; 117126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 117226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 117326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 117426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[1]; 117526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description prde[1]; 117626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 117726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 117826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 117926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 118026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_cfg_req { 118126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 118226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_CFG */ 118326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sub_func; 118426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 rsvd1; 118526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 118626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 118726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 118826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 118926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bytes[116]; 119026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_cfg_init init; 119126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge; 119226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description prde; 119326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } data; 119426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 119526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 119626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 119726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_mgmt_req { 119826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 119926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 function; /* VDA_FUNC_MGT */ 120026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 mgt_func; 120126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 chain_offset; 120226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sg_list_offset; 120326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 120426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 scan_generation; 120526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 payld_sglst_offset; 120626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 dev_index; 120726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 payld_length; 120826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 pad; 120926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 121026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge sge[2]; 121126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_physical_region_description prde[2]; 121226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 121326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_sge payld_sge[1]; 121426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 121526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 121626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 121726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Groveunion atto_vda_req { 121826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_scsi_req scsi; 121926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_flash_req flash; 122026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_diag_req diag; 122126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_req ae; 122226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_cli_req cli; 122326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ioctl_req ioctl; 122426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_cfg_req cfg; 122526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_mgmt_req mgt; 122626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bytes[1024]; 122726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 122826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 122926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove/* Outbound response structures */ 123026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 123126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_scsi_rsp { 123226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 scsi_stat; 123326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sense_len; 123426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 rsvd[2]; 123526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 residual_length; 123626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 123726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 123826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_flash_rsp { 123926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 file_size; 124026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 124126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 124226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_rsp { 124326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 124426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 124526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 124626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_cli_rsp { 124726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 cmd_rsp_len; 124826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 124926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 125026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ioctl_rsp { 125126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 125226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct { 125326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 csmi_status; 125426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 target_id; 125526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 lun; 125626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 reserved; 125726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } csmi; 125826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove }; 125926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 126026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 126126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_cfg_rsp { 126226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 vda_version; 126326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 fw_release; 126426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 fw_build; 126526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 126626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 126726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_mgmt_rsp { 126826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 length; 126926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u16 dev_index; 127026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 scan_generation; 127126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 127226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 127326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Groveunion atto_vda_func_rsp { 127426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_scsi_rsp scsi_rsp; 127526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_flash_rsp flash_rsp; 127626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_rsp ae_rsp; 127726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_cli_rsp cli_rsp; 127826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ioctl_rsp ioctl_rsp; 127926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_cfg_rsp cfg_rsp; 128026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_mgmt_rsp mgt_rsp; 128126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 dwords[2]; 128226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 128326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 128426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ob_rsp { 128526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u32 handle; 128626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 req_stat; 128726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 rsvd[3]; 128826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 128926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union atto_vda_func_rsp 129026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove func_rsp; 129126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 129226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 129326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_ae_data { 129426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 event_data[256]; 129526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 129626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 129726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grovestruct __packed atto_vda_mgmt_data { 129826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove union { 129926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bytes[112]; 130026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_devinfo dev_info; 130126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_grp_info grp_info; 130226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vdapart_info part_info; 130326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_dh_info dev_health_info; 130426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_metrics_info metrics_info; 130526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_schedule_info sched_info; 130626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_n_vcache_info nvcache_info; 130726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_buzzer_info buzzer_info; 130826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove } data; 130926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 131026780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 131126780d9e12edf45c0b98315de272b1feff5a8e93Bradley Groveunion atto_vda_rsp_data { 131226780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_ae_data ae_data; 131326780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove struct atto_vda_mgmt_data mgt_data; 131426780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 sense_data[252]; 131526780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove #define SENSE_DATA_SZ 252; 131626780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove u8 bytes[256]; 131726780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove}; 131826780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove 131926780d9e12edf45c0b98315de272b1feff5a8e93Bradley Grove#endif 1320