1144966Svkashyap/* 2169400Sscottl * Copyright (c) 2004-07 Applied Micro Circuits Corporation. 3144966Svkashyap * Copyright (c) 2004-05 Vinod Kashyap. 4144966Svkashyap * All rights reserved. 5144966Svkashyap * 6144966Svkashyap * Redistribution and use in source and binary forms, with or without 7144966Svkashyap * modification, are permitted provided that the following conditions 8144966Svkashyap * are met: 9144966Svkashyap * 1. Redistributions of source code must retain the above copyright 10144966Svkashyap * notice, this list of conditions and the following disclaimer. 11144966Svkashyap * 2. Redistributions in binary form must reproduce the above copyright 12144966Svkashyap * notice, this list of conditions and the following disclaimer in the 13144966Svkashyap * documentation and/or other materials provided with the distribution. 14144966Svkashyap * 15144966Svkashyap * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16144966Svkashyap * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17144966Svkashyap * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18144966Svkashyap * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19144966Svkashyap * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20144966Svkashyap * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21144966Svkashyap * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22144966Svkashyap * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23144966Svkashyap * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24144966Svkashyap * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25144966Svkashyap * SUCH DAMAGE. 26144966Svkashyap * 27144966Svkashyap * $FreeBSD$ 28144966Svkashyap */ 29144966Svkashyap 30144966Svkashyap/* 31144966Svkashyap * AMCC'S 3ware driver for 9000 series storage controllers. 32144966Svkashyap * 33144966Svkashyap * Author: Vinod Kashyap 34169400Sscottl * Modifications by: Adam Radford 35144966Svkashyap */ 36144966Svkashyap 37144966Svkashyap 38144966Svkashyap 39144966Svkashyap#ifndef TW_OSL_IOCTL_H 40144966Svkashyap 41144966Svkashyap#define TW_OSL_IOCTL_H 42144966Svkashyap 43144966Svkashyap 44144966Svkashyap/* 45144966Svkashyap * Macros and structures for OS Layer/Common Layer handled ioctls. 46144966Svkashyap */ 47144966Svkashyap 48144966Svkashyap 49144966Svkashyap 50149968Sobrien#include <dev/twa/tw_cl_fwif.h> 51149968Sobrien#include <dev/twa/tw_cl_ioctl.h> 52144966Svkashyap 53144966Svkashyap 54144966Svkashyap 55144966Svkashyap#pragma pack(1) 56144966Svkashyap/* 57144966Svkashyap * We need the structure below to ensure that the first byte of 58144966Svkashyap * data_buf is not overwritten by the kernel, after we return 59144966Svkashyap * from the ioctl call. Note that cmd_pkt has been reduced 60144966Svkashyap * to an array of 1024 bytes even though it's actually 2048 bytes 61144966Svkashyap * in size. This is because, we don't expect requests from user 62144966Svkashyap * land requiring 2048 (273 sg elements) byte cmd pkts. 63144966Svkashyap */ 64144966Svkashyaptypedef struct tw_osli_ioctl_no_data_buf { 65144966Svkashyap struct tw_cl_driver_packet driver_pkt; 66144966Svkashyap TW_VOID *pdata; /* points to data_buf */ 67144966Svkashyap TW_INT8 padding[488 - sizeof(TW_VOID *)]; 68144966Svkashyap struct tw_cl_command_packet cmd_pkt; 69144966Svkashyap} TW_OSLI_IOCTL_NO_DATA_BUF; 70144966Svkashyap 71144966Svkashyap#pragma pack() 72144966Svkashyap 73144966Svkashyap/* ioctl cmds handled by the OS Layer */ 74144966Svkashyap#define TW_OSL_IOCTL_SCAN_BUS \ 75144966Svkashyap _IO('T', 200) 76144966Svkashyap#define TW_OSL_IOCTL_FIRMWARE_PASS_THROUGH \ 77144966Svkashyap _IOWR('T', 202, TW_OSLI_IOCTL_NO_DATA_BUF) 78144966Svkashyap 79144966Svkashyap 80144966Svkashyap#include <sys/ioccom.h> 81144966Svkashyap 82144966Svkashyap#pragma pack(1) 83144966Svkashyap 84144966Svkashyaptypedef struct tw_osli_ioctl_with_payload { 85144966Svkashyap struct tw_cl_driver_packet driver_pkt; 86144966Svkashyap TW_INT8 padding[488]; 87144966Svkashyap struct tw_cl_command_packet cmd_pkt; 88144966Svkashyap union { 89144966Svkashyap struct tw_cl_event_packet event_pkt; 90144966Svkashyap struct tw_cl_lock_packet lock_pkt; 91144966Svkashyap struct tw_cl_compatibility_packet compat_pkt; 92144966Svkashyap TW_INT8 data_buf[1]; 93144966Svkashyap } payload; 94144966Svkashyap} TW_OSLI_IOCTL_WITH_PAYLOAD; 95144966Svkashyap 96144966Svkashyap#pragma pack() 97144966Svkashyap 98144966Svkashyap/* ioctl cmds handled by the Common Layer */ 99144966Svkashyap#define TW_CL_IOCTL_GET_FIRST_EVENT \ 100144966Svkashyap _IOWR('T', 203, TW_OSLI_IOCTL_WITH_PAYLOAD) 101144966Svkashyap#define TW_CL_IOCTL_GET_LAST_EVENT \ 102144966Svkashyap _IOWR('T', 204, TW_OSLI_IOCTL_WITH_PAYLOAD) 103144966Svkashyap#define TW_CL_IOCTL_GET_NEXT_EVENT \ 104144966Svkashyap _IOWR('T', 205, TW_OSLI_IOCTL_WITH_PAYLOAD) 105144966Svkashyap#define TW_CL_IOCTL_GET_PREVIOUS_EVENT \ 106144966Svkashyap _IOWR('T', 206, TW_OSLI_IOCTL_WITH_PAYLOAD) 107144966Svkashyap#define TW_CL_IOCTL_GET_LOCK \ 108144966Svkashyap _IOWR('T', 207, TW_OSLI_IOCTL_WITH_PAYLOAD) 109144966Svkashyap#define TW_CL_IOCTL_RELEASE_LOCK \ 110144966Svkashyap _IOWR('T', 208, TW_OSLI_IOCTL_WITH_PAYLOAD) 111144966Svkashyap#define TW_CL_IOCTL_GET_COMPATIBILITY_INFO \ 112144966Svkashyap _IOWR('T', 209, TW_OSLI_IOCTL_WITH_PAYLOAD) 113144966Svkashyap 114144966Svkashyap 115144966Svkashyap 116144966Svkashyap#endif /* TW_OSL_IOCTL_H */ 117