xref: /dflybsd-src/sys/dev/raid/twa/tw_cl_ioctl.h (revision 1e0dd9dd32a69a1d3bbe6a9e41c3a63aae59fb4d)
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