tw_cl_ioctl.h revision 169400
1251881Speter/*
2251881Speter * Copyright (c) 2004-07 Applied Micro Circuits Corporation.
3251881Speter * Copyright (c) 2004-05 Vinod Kashyap
4251881Speter * All rights reserved.
5251881Speter *
6251881Speter * Redistribution and use in source and binary forms, with or without
7251881Speter * modification, are permitted provided that the following conditions
8251881Speter * are met:
9251881Speter * 1. Redistributions of source code must retain the above copyright
10251881Speter *    notice, this list of conditions and the following disclaimer.
11251881Speter * 2. Redistributions in binary form must reproduce the above copyright
12251881Speter *    notice, this list of conditions and the following disclaimer in the
13251881Speter *    documentation and/or other materials provided with the distribution.
14251881Speter *
15251881Speter * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16251881Speter * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17251881Speter * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18251881Speter * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19251881Speter * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20251881Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21251881Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22251881Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23251881Speter * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24251881Speter * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25251881Speter * SUCH DAMAGE.
26251881Speter *
27251881Speter *	$FreeBSD: head/sys/dev/twa/tw_cl_ioctl.h 169400 2007-05-09 04:16:32Z scottl $
28251881Speter */
29251881Speter
30251881Speter/*
31251881Speter * AMCC'S 3ware driver for 9000 series storage controllers.
32251881Speter *
33251881Speter * Author: Vinod Kashyap
34251881Speter * Modifications by: Adam Radford
35251881Speter */
36251881Speter
37251881Speter
38251881Speter
39251881Speter#ifndef TW_CL_IOCTL_H
40251881Speter
41251881Speter#define TW_CL_IOCTL_H
42251881Speter
43251881Speter
44251881Speter/*
45251881Speter * Macros and structures for Common Layer handled ioctls.
46251881Speter */
47251881Speter
48251881Speter
49251881Speter#define TW_CL_AEN_NOT_RETRIEVED	0x1
50251881Speter#define TW_CL_AEN_RETRIEVED	0x2
51251881Speter
52251881Speter#define TW_CL_ERROR_AEN_NO_EVENTS	0x1003	/* No more events */
53251881Speter#define TW_CL_ERROR_AEN_OVERFLOW	0x1004	/* AEN overflow occurred */
54251881Speter
55251881Speter#define TW_CL_ERROR_IOCTL_LOCK_NOT_HELD		0x1001   /* Not locked */
56251881Speter#define TW_CL_ERROR_IOCTL_LOCK_ALREADY_HELD	0x1002   /* Already locked */
57251881Speter
58251881Speter
59251881Speter#pragma pack(1)
60251881Speter
61251881Speter/* Structure used to handle GET/RELEASE LOCK ioctls. */
62251881Speterstruct tw_cl_lock_packet {
63251881Speter	TW_UINT32	timeout_msec;
64251881Speter	TW_UINT32	time_remaining_msec;
65251881Speter	TW_UINT32	force_flag;
66251881Speter};
67251881Speter
68251881Speter
69251881Speter/* Structure used to handle GET COMPATIBILITY INFO ioctl. */
70251881Speterstruct tw_cl_compatibility_packet {
71251881Speter	TW_UINT8	driver_version[32];/* driver version */
72251881Speter	TW_UINT16	working_srl;	/* driver & firmware negotiated srl */
73251881Speter	TW_UINT16	working_branch;	/* branch # of the firmware that the
74251881Speter					driver is compatible with */
75251881Speter	TW_UINT16	working_build;	/* build # of the firmware that the
76251881Speter					driver is compatible with */
77251881Speter	TW_UINT16	driver_srl_high;/* highest driver supported srl */
78251881Speter	TW_UINT16	driver_branch_high;/* highest driver supported branch */
79251881Speter	TW_UINT16	driver_build_high;/* highest driver supported build */
80251881Speter	TW_UINT16	driver_srl_low;/* lowest driver supported srl */
81251881Speter	TW_UINT16	driver_branch_low;/* lowest driver supported branch */
82251881Speter	TW_UINT16	driver_build_low;/* lowest driver supported build */
83251881Speter	TW_UINT16	fw_on_ctlr_srl;	/* srl of running firmware */
84251881Speter	TW_UINT16	fw_on_ctlr_branch;/* branch # of running firmware */
85251881Speter	TW_UINT16	fw_on_ctlr_build;/* build # of running firmware */
86251881Speter};
87251881Speter
88251881Speter
89251881Speter/* Driver understandable part of the ioctl packet built by the API. */
90251881Speterstruct tw_cl_driver_packet {
91251881Speter	TW_UINT32	control_code;
92251881Speter	TW_UINT32	status;
93251881Speter	TW_UINT32	unique_id;
94251881Speter	TW_UINT32	sequence_id;
95251881Speter	TW_UINT32	os_status;
96251881Speter	TW_UINT32	buffer_length;
97251881Speter};
98251881Speter
99251881Speter
100251881Speter/* ioctl packet built by the API. */
101251881Speterstruct tw_cl_ioctl_packet {
102251881Speter	struct tw_cl_driver_packet	driver_pkt;
103251881Speter	TW_INT8				padding[488];
104251881Speter	struct tw_cl_command_packet	cmd_pkt;
105251881Speter	TW_INT8				data_buf[1];
106251881Speter};
107251881Speter
108251881Speter#pragma pack()
109251881Speter
110251881Speter
111251881Speter
112251881Speter#endif /* TW_CL_IOCTL_H */
113251881Speter