1df54c2f9SSascha Wildner /* 2df54c2f9SSascha Wildner * Copyright (c) 2004-07 Applied Micro Circuits Corporation. 3df54c2f9SSascha Wildner * Copyright (c) 2004-05 Vinod Kashyap 4df54c2f9SSascha Wildner * All rights reserved. 5df54c2f9SSascha Wildner * 6df54c2f9SSascha Wildner * Redistribution and use in source and binary forms, with or without 7df54c2f9SSascha Wildner * modification, are permitted provided that the following conditions 8df54c2f9SSascha Wildner * are met: 9df54c2f9SSascha Wildner * 1. Redistributions of source code must retain the above copyright 10df54c2f9SSascha Wildner * notice, this list of conditions and the following disclaimer. 11df54c2f9SSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 12df54c2f9SSascha Wildner * notice, this list of conditions and the following disclaimer in the 13df54c2f9SSascha Wildner * documentation and/or other materials provided with the distribution. 14df54c2f9SSascha Wildner * 15df54c2f9SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16df54c2f9SSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17df54c2f9SSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18df54c2f9SSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19df54c2f9SSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20df54c2f9SSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21df54c2f9SSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22df54c2f9SSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23df54c2f9SSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24df54c2f9SSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25df54c2f9SSascha Wildner * SUCH DAMAGE. 26df54c2f9SSascha Wildner * 27*1e0dd9ddSSascha Wildner * $FreeBSD: head/sys/dev/twa/tw_cl_ioctl.h 169400 2007-05-09 04:16:32Z scottl $ 28df54c2f9SSascha Wildner */ 29df54c2f9SSascha Wildner 30df54c2f9SSascha Wildner /* 31df54c2f9SSascha Wildner * AMCC'S 3ware driver for 9000 series storage controllers. 32df54c2f9SSascha Wildner * 33df54c2f9SSascha Wildner * Author: Vinod Kashyap 34df54c2f9SSascha Wildner * Modifications by: Adam Radford 35df54c2f9SSascha Wildner */ 36df54c2f9SSascha Wildner 37df54c2f9SSascha Wildner 38df54c2f9SSascha Wildner 39df54c2f9SSascha Wildner #ifndef TW_CL_IOCTL_H 40df54c2f9SSascha Wildner 41df54c2f9SSascha Wildner #define TW_CL_IOCTL_H 42df54c2f9SSascha Wildner 43df54c2f9SSascha Wildner 44df54c2f9SSascha Wildner /* 45df54c2f9SSascha Wildner * Macros and structures for Common Layer handled ioctls. 46df54c2f9SSascha Wildner */ 47df54c2f9SSascha Wildner 48df54c2f9SSascha Wildner 49df54c2f9SSascha Wildner #define TW_CL_AEN_NOT_RETRIEVED 0x1 50df54c2f9SSascha Wildner #define TW_CL_AEN_RETRIEVED 0x2 51df54c2f9SSascha Wildner 52df54c2f9SSascha Wildner #define TW_CL_ERROR_AEN_NO_EVENTS 0x1003 /* No more events */ 53df54c2f9SSascha Wildner #define TW_CL_ERROR_AEN_OVERFLOW 0x1004 /* AEN overflow occurred */ 54df54c2f9SSascha Wildner 55df54c2f9SSascha Wildner #define TW_CL_ERROR_IOCTL_LOCK_NOT_HELD 0x1001 /* Not locked */ 56df54c2f9SSascha Wildner #define TW_CL_ERROR_IOCTL_LOCK_ALREADY_HELD 0x1002 /* Already locked */ 57df54c2f9SSascha Wildner 58df54c2f9SSascha Wildner 59df54c2f9SSascha Wildner #pragma pack(1) 60df54c2f9SSascha Wildner 61df54c2f9SSascha Wildner /* Structure used to handle GET/RELEASE LOCK ioctls. */ 62df54c2f9SSascha Wildner struct tw_cl_lock_packet { 63df54c2f9SSascha Wildner TW_UINT32 timeout_msec; 64df54c2f9SSascha Wildner TW_UINT32 time_remaining_msec; 65df54c2f9SSascha Wildner TW_UINT32 force_flag; 66df54c2f9SSascha Wildner }; 67df54c2f9SSascha Wildner 68df54c2f9SSascha Wildner 69df54c2f9SSascha Wildner /* Structure used to handle GET COMPATIBILITY INFO ioctl. */ 70df54c2f9SSascha Wildner struct tw_cl_compatibility_packet { 71df54c2f9SSascha Wildner TW_UINT8 driver_version[32];/* driver version */ 72df54c2f9SSascha Wildner TW_UINT16 working_srl; /* driver & firmware negotiated srl */ 73df54c2f9SSascha Wildner TW_UINT16 working_branch; /* branch # of the firmware that the 74df54c2f9SSascha Wildner driver is compatible with */ 75df54c2f9SSascha Wildner TW_UINT16 working_build; /* build # of the firmware that the 76df54c2f9SSascha Wildner driver is compatible with */ 77df54c2f9SSascha Wildner TW_UINT16 driver_srl_high;/* highest driver supported srl */ 78df54c2f9SSascha Wildner TW_UINT16 driver_branch_high;/* highest driver supported branch */ 79df54c2f9SSascha Wildner TW_UINT16 driver_build_high;/* highest driver supported build */ 80df54c2f9SSascha Wildner TW_UINT16 driver_srl_low;/* lowest driver supported srl */ 81df54c2f9SSascha Wildner TW_UINT16 driver_branch_low;/* lowest driver supported branch */ 82df54c2f9SSascha Wildner TW_UINT16 driver_build_low;/* lowest driver supported build */ 83df54c2f9SSascha Wildner TW_UINT16 fw_on_ctlr_srl; /* srl of running firmware */ 84df54c2f9SSascha Wildner TW_UINT16 fw_on_ctlr_branch;/* branch # of running firmware */ 85df54c2f9SSascha Wildner TW_UINT16 fw_on_ctlr_build;/* build # of running firmware */ 86df54c2f9SSascha Wildner }; 87df54c2f9SSascha Wildner 88df54c2f9SSascha Wildner 89df54c2f9SSascha Wildner /* Driver understandable part of the ioctl packet built by the API. */ 90df54c2f9SSascha Wildner struct tw_cl_driver_packet { 91df54c2f9SSascha Wildner TW_UINT32 control_code; 92df54c2f9SSascha Wildner TW_UINT32 status; 93df54c2f9SSascha Wildner TW_UINT32 unique_id; 94df54c2f9SSascha Wildner TW_UINT32 sequence_id; 95df54c2f9SSascha Wildner TW_UINT32 os_status; 96df54c2f9SSascha Wildner TW_UINT32 buffer_length; 97df54c2f9SSascha Wildner }; 98df54c2f9SSascha Wildner 99df54c2f9SSascha Wildner 100df54c2f9SSascha Wildner /* ioctl packet built by the API. */ 101df54c2f9SSascha Wildner struct tw_cl_ioctl_packet { 102df54c2f9SSascha Wildner struct tw_cl_driver_packet driver_pkt; 103df54c2f9SSascha Wildner TW_INT8 padding[488]; 104df54c2f9SSascha Wildner struct tw_cl_command_packet cmd_pkt; 105df54c2f9SSascha Wildner TW_INT8 data_buf[1]; 106df54c2f9SSascha Wildner }; 107df54c2f9SSascha Wildner 108df54c2f9SSascha Wildner #pragma pack() 109df54c2f9SSascha Wildner 110df54c2f9SSascha Wildner 111df54c2f9SSascha Wildner 112df54c2f9SSascha Wildner #endif /* TW_CL_IOCTL_H */ 113