mps_ioctl.h revision 212420
1212420Sken/*- 2212420Sken * Copyright (c) 2008 Yahoo!, Inc. 3212420Sken * All rights reserved. 4212420Sken * Written by: John Baldwin <jhb@FreeBSD.org> 5212420Sken * 6212420Sken * Redistribution and use in source and binary forms, with or without 7212420Sken * modification, are permitted provided that the following conditions 8212420Sken * are met: 9212420Sken * 1. Redistributions of source code must retain the above copyright 10212420Sken * notice, this list of conditions and the following disclaimer. 11212420Sken * 2. Redistributions in binary form must reproduce the above copyright 12212420Sken * notice, this list of conditions and the following disclaimer in the 13212420Sken * documentation and/or other materials provided with the distribution. 14212420Sken * 3. Neither the name of the author nor the names of any co-contributors 15212420Sken * may be used to endorse or promote products derived from this software 16212420Sken * without specific prior written permission. 17212420Sken * 18212420Sken * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19212420Sken * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20212420Sken * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21212420Sken * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22212420Sken * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23212420Sken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24212420Sken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25212420Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26212420Sken * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27212420Sken * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28212420Sken * SUCH DAMAGE. 29212420Sken * 30212420Sken * LSI MPT-Fusion Host Adapter FreeBSD userland interface 31212420Sken * 32212420Sken * $FreeBSD: head/sys/dev/mps/mps_ioctl.h 212420 2010-09-10 15:03:56Z ken $ 33212420Sken */ 34212420Sken 35212420Sken#ifndef _MPS_IOCTL_H_ 36212420Sken#define _MPS_IOCTL_H_ 37212420Sken 38212420Sken#include <dev/mps/mpi/mpi2_type.h> 39212420Sken#include <dev/mps/mpi/mpi2.h> 40212420Sken#include <dev/mps/mpi/mpi2_cnfg.h> 41212420Sken#include <dev/mps/mpi/mpi2_sas.h> 42212420Sken 43212420Sken/* 44212420Sken * For the read header requests, the header should include the page 45212420Sken * type or extended page type, page number, and page version. The 46212420Sken * buffer and length are unused. The completed header is returned in 47212420Sken * the 'header' member. 48212420Sken * 49212420Sken * For the read page and write page requests, 'buf' should point to a 50212420Sken * buffer of 'len' bytes which holds the entire page (including the 51212420Sken * header). 52212420Sken * 53212420Sken * All requests specify the page address in 'page_address'. 54212420Sken */ 55212420Skenstruct mps_cfg_page_req { 56212420Sken MPI2_CONFIG_PAGE_HEADER header; 57212420Sken uint32_t page_address; 58212420Sken void *buf; 59212420Sken int len; 60212420Sken uint16_t ioc_status; 61212420Sken}; 62212420Sken 63212420Skenstruct mps_ext_cfg_page_req { 64212420Sken MPI2_CONFIG_EXTENDED_PAGE_HEADER header; 65212420Sken uint32_t page_address; 66212420Sken void *buf; 67212420Sken int len; 68212420Sken uint16_t ioc_status; 69212420Sken}; 70212420Sken 71212420Skenstruct mps_raid_action { 72212420Sken uint8_t action; 73212420Sken uint8_t volume_bus; 74212420Sken uint8_t volume_id; 75212420Sken uint8_t phys_disk_num; 76212420Sken uint32_t action_data_word; 77212420Sken void *buf; 78212420Sken int len; 79212420Sken uint32_t volume_status; 80212420Sken uint32_t action_data[4]; 81212420Sken uint16_t action_status; 82212420Sken uint16_t ioc_status; 83212420Sken uint8_t write; 84212420Sken}; 85212420Sken 86212420Skenstruct mps_usr_command { 87212420Sken void *req; 88212420Sken uint32_t req_len; 89212420Sken void *rpl; 90212420Sken uint32_t rpl_len; 91212420Sken void *buf; 92212420Sken int len; 93212420Sken uint32_t flags; 94212420Sken}; 95212420Sken 96212420Sken#define MPSIO_MPS_COMMAND_FLAG_VERBOSE 0x01 97212420Sken#define MPSIO_MPS_COMMAND_FLAG_DEBUG 0x02 98212420Sken#define MPSIO_READ_CFG_HEADER _IOWR('M', 200, struct mps_cfg_page_req) 99212420Sken#define MPSIO_READ_CFG_PAGE _IOWR('M', 201, struct mps_cfg_page_req) 100212420Sken#define MPSIO_READ_EXT_CFG_HEADER _IOWR('M', 202, struct mps_ext_cfg_page_req) 101212420Sken#define MPSIO_READ_EXT_CFG_PAGE _IOWR('M', 203, struct mps_ext_cfg_page_req) 102212420Sken#define MPSIO_WRITE_CFG_PAGE _IOWR('M', 204, struct mps_cfg_page_req) 103212420Sken#define MPSIO_RAID_ACTION _IOWR('M', 205, struct mps_raid_action) 104212420Sken#define MPSIO_MPS_COMMAND _IOWR('M', 210, struct mps_usr_command) 105212420Sken 106212420Sken#if defined(__amd64__) 107212420Skenstruct mps_cfg_page_req32 { 108212420Sken MPI2_CONFIG_PAGE_HEADER header; 109212420Sken uint32_t page_address; 110212420Sken uint32_t buf; 111212420Sken int len; 112212420Sken uint16_t ioc_status; 113212420Sken}; 114212420Sken 115212420Skenstruct mps_ext_cfg_page_req32 { 116212420Sken MPI2_CONFIG_EXTENDED_PAGE_HEADER header; 117212420Sken uint32_t page_address; 118212420Sken uint32_t buf; 119212420Sken int len; 120212420Sken uint16_t ioc_status; 121212420Sken}; 122212420Sken 123212420Skenstruct mps_raid_action32 { 124212420Sken uint8_t action; 125212420Sken uint8_t volume_bus; 126212420Sken uint8_t volume_id; 127212420Sken uint8_t phys_disk_num; 128212420Sken uint32_t action_data_word; 129212420Sken uint32_t buf; 130212420Sken int len; 131212420Sken uint32_t volume_status; 132212420Sken uint32_t action_data[4]; 133212420Sken uint16_t action_status; 134212420Sken uint16_t ioc_status; 135212420Sken uint8_t write; 136212420Sken}; 137212420Sken 138212420Sken#define MPSIO_READ_CFG_HEADER32 _IOWR('M', 100, struct mps_cfg_page_req32) 139212420Sken#define MPSIO_READ_CFG_PAGE32 _IOWR('M', 101, struct mps_cfg_page_req32) 140212420Sken#define MPSIO_READ_EXT_CFG_HEADER32 _IOWR('M', 102, struct mps_ext_cfg_page_req32) 141212420Sken#define MPSIO_READ_EXT_CFG_PAGE32 _IOWR('M', 103, struct mps_ext_cfg_page_req32) 142212420Sken#define MPSIO_WRITE_CFG_PAGE32 _IOWR('M', 104, struct mps_cfg_page_req32) 143212420Sken#define MPSIO_RAID_ACTION32 _IOWR('M', 105, struct mps_raid_action32) 144212420Sken#endif 145212420Sken 146212420Sken#endif /* !_MPS_IOCTL_H_ */ 147