1c12c399aSSascha Wildner /*- 2c12c399aSSascha Wildner * Copyright (c) 2008 Yahoo!, Inc. 3c12c399aSSascha Wildner * All rights reserved. 4c12c399aSSascha Wildner * Written by: John Baldwin <jhb@FreeBSD.org> 5c12c399aSSascha Wildner * 6c12c399aSSascha Wildner * Redistribution and use in source and binary forms, with or without 7c12c399aSSascha Wildner * modification, are permitted provided that the following conditions 8c12c399aSSascha Wildner * are met: 9c12c399aSSascha Wildner * 1. Redistributions of source code must retain the above copyright 10c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer. 11c12c399aSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 12c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer in the 13c12c399aSSascha Wildner * documentation and/or other materials provided with the distribution. 14c12c399aSSascha Wildner * 3. Neither the name of the author nor the names of any co-contributors 15c12c399aSSascha Wildner * may be used to endorse or promote products derived from this software 16c12c399aSSascha Wildner * without specific prior written permission. 17c12c399aSSascha Wildner * 18c12c399aSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19c12c399aSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20c12c399aSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21c12c399aSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22c12c399aSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23c12c399aSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24c12c399aSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25c12c399aSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26c12c399aSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27c12c399aSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28c12c399aSSascha Wildner * SUCH DAMAGE. 29c12c399aSSascha Wildner * 30c12c399aSSascha Wildner * LSI MPT-Fusion Host Adapter FreeBSD userland interface 31c12c399aSSascha Wildner * 32c12c399aSSascha Wildner * $FreeBSD: src/sys/dev/mps/mps_ioctl.h,v 1.3 2012/01/26 18:17:21 ken Exp $ 33c12c399aSSascha Wildner */ 34c12c399aSSascha Wildner /*- 35c12c399aSSascha Wildner * Copyright (c) 2011 LSI Corp. 36c12c399aSSascha Wildner * All rights reserved. 37c12c399aSSascha Wildner * 38c12c399aSSascha Wildner * Redistribution and use in source and binary forms, with or without 39c12c399aSSascha Wildner * modification, are permitted provided that the following conditions 40c12c399aSSascha Wildner * are met: 41c12c399aSSascha Wildner * 1. Redistributions of source code must retain the above copyright 42c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer. 43c12c399aSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 44c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer in the 45c12c399aSSascha Wildner * documentation and/or other materials provided with the distribution. 46c12c399aSSascha Wildner * 47c12c399aSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 48c12c399aSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 49c12c399aSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 50c12c399aSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 51c12c399aSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 52c12c399aSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 53c12c399aSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 54c12c399aSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 55c12c399aSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 56c12c399aSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 57c12c399aSSascha Wildner * SUCH DAMAGE. 58c12c399aSSascha Wildner * 59c12c399aSSascha Wildner * LSI MPT-Fusion Host Adapter FreeBSD 60c12c399aSSascha Wildner * 61c12c399aSSascha Wildner * $FreeBSD: src/sys/dev/mps/mps_ioctl.h,v 1.3 2012/01/26 18:17:21 ken Exp $ 62c12c399aSSascha Wildner */ 63c12c399aSSascha Wildner 64c12c399aSSascha Wildner #ifndef _MPS_IOCTL_H_ 65c12c399aSSascha Wildner #define _MPS_IOCTL_H_ 66c12c399aSSascha Wildner 67*ffe53622SSascha Wildner #include <sys/ioccom.h> 68*ffe53622SSascha Wildner 69c12c399aSSascha Wildner #include <dev/raid/mps/mpi/mpi2_type.h> 70c12c399aSSascha Wildner #include <dev/raid/mps/mpi/mpi2.h> 71c12c399aSSascha Wildner #include <dev/raid/mps/mpi/mpi2_cnfg.h> 72c12c399aSSascha Wildner #include <dev/raid/mps/mpi/mpi2_sas.h> 73c12c399aSSascha Wildner 74c12c399aSSascha Wildner /* 75c12c399aSSascha Wildner * For the read header requests, the header should include the page 76c12c399aSSascha Wildner * type or extended page type, page number, and page version. The 77c12c399aSSascha Wildner * buffer and length are unused. The completed header is returned in 78c12c399aSSascha Wildner * the 'header' member. 79c12c399aSSascha Wildner * 80c12c399aSSascha Wildner * For the read page and write page requests, 'buf' should point to a 81c12c399aSSascha Wildner * buffer of 'len' bytes which holds the entire page (including the 82c12c399aSSascha Wildner * header). 83c12c399aSSascha Wildner * 84c12c399aSSascha Wildner * All requests specify the page address in 'page_address'. 85c12c399aSSascha Wildner */ 86c12c399aSSascha Wildner struct mps_cfg_page_req { 87c12c399aSSascha Wildner MPI2_CONFIG_PAGE_HEADER header; 88c12c399aSSascha Wildner uint32_t page_address; 89c12c399aSSascha Wildner void *buf; 90c12c399aSSascha Wildner int len; 91c12c399aSSascha Wildner uint16_t ioc_status; 92c12c399aSSascha Wildner }; 93c12c399aSSascha Wildner 94c12c399aSSascha Wildner struct mps_ext_cfg_page_req { 95c12c399aSSascha Wildner MPI2_CONFIG_EXTENDED_PAGE_HEADER header; 96c12c399aSSascha Wildner uint32_t page_address; 97c12c399aSSascha Wildner void *buf; 98c12c399aSSascha Wildner int len; 99c12c399aSSascha Wildner uint16_t ioc_status; 100c12c399aSSascha Wildner }; 101c12c399aSSascha Wildner 102c12c399aSSascha Wildner struct mps_raid_action { 103c12c399aSSascha Wildner uint8_t action; 104c12c399aSSascha Wildner uint8_t volume_bus; 105c12c399aSSascha Wildner uint8_t volume_id; 106c12c399aSSascha Wildner uint8_t phys_disk_num; 107c12c399aSSascha Wildner uint32_t action_data_word; 108c12c399aSSascha Wildner void *buf; 109c12c399aSSascha Wildner int len; 110c12c399aSSascha Wildner uint32_t volume_status; 111c12c399aSSascha Wildner uint32_t action_data[4]; 112c12c399aSSascha Wildner uint16_t action_status; 113c12c399aSSascha Wildner uint16_t ioc_status; 114c12c399aSSascha Wildner uint8_t write; 115c12c399aSSascha Wildner }; 116c12c399aSSascha Wildner 117c12c399aSSascha Wildner struct mps_usr_command { 118c12c399aSSascha Wildner void *req; 119c12c399aSSascha Wildner uint32_t req_len; 120c12c399aSSascha Wildner void *rpl; 121c12c399aSSascha Wildner uint32_t rpl_len; 122c12c399aSSascha Wildner void *buf; 123c12c399aSSascha Wildner int len; 124c12c399aSSascha Wildner uint32_t flags; 125c12c399aSSascha Wildner }; 126c12c399aSSascha Wildner 127c12c399aSSascha Wildner typedef struct mps_pci_bits 128c12c399aSSascha Wildner { 129c12c399aSSascha Wildner union { 130c12c399aSSascha Wildner struct { 131c12c399aSSascha Wildner uint32_t DeviceNumber :5; 132c12c399aSSascha Wildner uint32_t FunctionNumber :3; 133c12c399aSSascha Wildner uint32_t BusNumber :24; 134c12c399aSSascha Wildner } bits; 135c12c399aSSascha Wildner uint32_t AsDWORD; 136c12c399aSSascha Wildner } u; 137c12c399aSSascha Wildner uint32_t PciSegmentId; 138c12c399aSSascha Wildner } mps_pci_bits_t; 139c12c399aSSascha Wildner 140c12c399aSSascha Wildner /* 141c12c399aSSascha Wildner * The following is the MPSIOCTL_GET_ADAPTER_DATA data structure. This data 142c12c399aSSascha Wildner * structure is setup so that we hopefully are properly aligned for both 143c12c399aSSascha Wildner * 32-bit and 64-bit mode applications. 144c12c399aSSascha Wildner * 145c12c399aSSascha Wildner * Adapter Type - Value = 4 = SCSI Protocol through SAS-2 adapter 146c12c399aSSascha Wildner * 147c12c399aSSascha Wildner * MPI Port Number - The PCI Function number for this device 148c12c399aSSascha Wildner * 149c12c399aSSascha Wildner * PCI Device HW Id - The PCI device number for this device 150c12c399aSSascha Wildner * 151c12c399aSSascha Wildner */ 152c12c399aSSascha Wildner #define MPSIOCTL_ADAPTER_TYPE_SAS2 4 153c12c399aSSascha Wildner #define MPSIOCTL_ADAPTER_TYPE_SAS2_SSS6200 5 154c12c399aSSascha Wildner typedef struct mps_adapter_data 155c12c399aSSascha Wildner { 156c12c399aSSascha Wildner uint32_t StructureLength; 157c12c399aSSascha Wildner uint32_t AdapterType; 158c12c399aSSascha Wildner uint32_t MpiPortNumber; 159c12c399aSSascha Wildner uint32_t PCIDeviceHwId; 160c12c399aSSascha Wildner uint32_t PCIDeviceHwRev; 161c12c399aSSascha Wildner uint32_t SubSystemId; 162c12c399aSSascha Wildner uint32_t SubsystemVendorId; 163c12c399aSSascha Wildner uint32_t Reserved1; 164c12c399aSSascha Wildner uint32_t MpiFirmwareVersion; 165c12c399aSSascha Wildner uint32_t BiosVersion; 166c12c399aSSascha Wildner uint8_t DriverVersion[32]; 167c12c399aSSascha Wildner uint8_t Reserved2; 168c12c399aSSascha Wildner uint8_t ScsiId; 169c12c399aSSascha Wildner uint16_t Reserved3; 170c12c399aSSascha Wildner mps_pci_bits_t PciInformation; 171c12c399aSSascha Wildner } mps_adapter_data_t; 172c12c399aSSascha Wildner 173c12c399aSSascha Wildner 174c12c399aSSascha Wildner typedef struct mps_update_flash 175c12c399aSSascha Wildner { 176c12c399aSSascha Wildner uint64_t PtrBuffer; 177c12c399aSSascha Wildner uint32_t ImageChecksum; 178c12c399aSSascha Wildner uint32_t ImageOffset; 179c12c399aSSascha Wildner uint32_t ImageSize; 180c12c399aSSascha Wildner uint32_t ImageType; 181c12c399aSSascha Wildner } mps_update_flash_t; 182c12c399aSSascha Wildner 183c12c399aSSascha Wildner 184c12c399aSSascha Wildner #define MPS_PASS_THRU_DIRECTION_NONE 0 185c12c399aSSascha Wildner #define MPS_PASS_THRU_DIRECTION_READ 1 186c12c399aSSascha Wildner #define MPS_PASS_THRU_DIRECTION_WRITE 2 187c12c399aSSascha Wildner #define MPS_PASS_THRU_DIRECTION_BOTH 3 188c12c399aSSascha Wildner 189c12c399aSSascha Wildner typedef struct mps_pass_thru 190c12c399aSSascha Wildner { 191c12c399aSSascha Wildner uint64_t PtrRequest; 192c12c399aSSascha Wildner uint64_t PtrReply; 193c12c399aSSascha Wildner uint64_t PtrData; 194c12c399aSSascha Wildner uint32_t RequestSize; 195c12c399aSSascha Wildner uint32_t ReplySize; 196c12c399aSSascha Wildner uint32_t DataSize; 197c12c399aSSascha Wildner uint32_t DataDirection; 198c12c399aSSascha Wildner uint64_t PtrDataOut; 199c12c399aSSascha Wildner uint32_t DataOutSize; 200c12c399aSSascha Wildner uint32_t Timeout; 201c12c399aSSascha Wildner } mps_pass_thru_t; 202c12c399aSSascha Wildner 203c12c399aSSascha Wildner 204c12c399aSSascha Wildner /* 205c12c399aSSascha Wildner * Event queue defines 206c12c399aSSascha Wildner */ 207c12c399aSSascha Wildner #define MPS_EVENT_QUEUE_SIZE (50) /* Max Events stored in driver */ 208c12c399aSSascha Wildner #define MPS_MAX_EVENT_DATA_LENGTH (48) /* Size of each event in Dwords */ 209c12c399aSSascha Wildner 210c12c399aSSascha Wildner typedef struct mps_event_query 211c12c399aSSascha Wildner { 212c12c399aSSascha Wildner uint16_t Entries; 213c12c399aSSascha Wildner uint16_t Reserved; 214c12c399aSSascha Wildner uint32_t Types[4]; 215c12c399aSSascha Wildner } mps_event_query_t; 216c12c399aSSascha Wildner 217c12c399aSSascha Wildner typedef struct mps_event_enable 218c12c399aSSascha Wildner { 219c12c399aSSascha Wildner uint32_t Types[4]; 220c12c399aSSascha Wildner } mps_event_enable_t; 221c12c399aSSascha Wildner 222c12c399aSSascha Wildner /* 223c12c399aSSascha Wildner * Event record entry for ioctl. 224c12c399aSSascha Wildner */ 225c12c399aSSascha Wildner typedef struct mps_event_entry 226c12c399aSSascha Wildner { 227c12c399aSSascha Wildner uint32_t Type; 228c12c399aSSascha Wildner uint32_t Number; 229c12c399aSSascha Wildner uint32_t Data[MPS_MAX_EVENT_DATA_LENGTH]; 230c12c399aSSascha Wildner } mps_event_entry_t; 231c12c399aSSascha Wildner 232c12c399aSSascha Wildner typedef struct mps_event_report 233c12c399aSSascha Wildner { 234c12c399aSSascha Wildner uint32_t Size; 235c12c399aSSascha Wildner uint64_t PtrEvents; 236c12c399aSSascha Wildner } mps_event_report_t; 237c12c399aSSascha Wildner 238c12c399aSSascha Wildner 239c12c399aSSascha Wildner typedef struct mps_pci_info 240c12c399aSSascha Wildner { 241c12c399aSSascha Wildner uint32_t BusNumber; 242c12c399aSSascha Wildner uint8_t DeviceNumber; 243c12c399aSSascha Wildner uint8_t FunctionNumber; 244c12c399aSSascha Wildner uint16_t InterruptVector; 245c12c399aSSascha Wildner uint8_t PciHeader[256]; 246c12c399aSSascha Wildner } mps_pci_info_t; 247c12c399aSSascha Wildner 248c12c399aSSascha Wildner 249c12c399aSSascha Wildner typedef struct mps_diag_action 250c12c399aSSascha Wildner { 251c12c399aSSascha Wildner uint32_t Action; 252c12c399aSSascha Wildner uint32_t Length; 253c12c399aSSascha Wildner uint64_t PtrDiagAction; 254c12c399aSSascha Wildner uint32_t ReturnCode; 255c12c399aSSascha Wildner } mps_diag_action_t; 256c12c399aSSascha Wildner 257c12c399aSSascha Wildner #define MPS_FW_DIAGNOSTIC_UID_NOT_FOUND (0xFF) 258c12c399aSSascha Wildner 259c12c399aSSascha Wildner #define MPS_FW_DIAG_NEW (0x806E6577) 260c12c399aSSascha Wildner 261c12c399aSSascha Wildner #define MPS_FW_DIAG_TYPE_REGISTER (0x00000001) 262c12c399aSSascha Wildner #define MPS_FW_DIAG_TYPE_UNREGISTER (0x00000002) 263c12c399aSSascha Wildner #define MPS_FW_DIAG_TYPE_QUERY (0x00000003) 264c12c399aSSascha Wildner #define MPS_FW_DIAG_TYPE_READ_BUFFER (0x00000004) 265c12c399aSSascha Wildner #define MPS_FW_DIAG_TYPE_RELEASE (0x00000005) 266c12c399aSSascha Wildner 267c12c399aSSascha Wildner #define MPS_FW_DIAG_INVALID_UID (0x00000000) 268c12c399aSSascha Wildner 269c12c399aSSascha Wildner #define MPS_DIAG_SUCCESS 0 270c12c399aSSascha Wildner #define MPS_DIAG_FAILURE 1 271c12c399aSSascha Wildner 272c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_SUCCESS (0x00000000) 273c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_FAILURE (0x00000001) 274c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_INVALID_PARAMETER (0x00000002) 275c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_POST_FAILED (0x00000010) 276c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_INVALID_UID (0x00000011) 277c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_RELEASE_FAILED (0x00000012) 278c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_NO_BUFFER (0x00000013) 279c12c399aSSascha Wildner #define MPS_FW_DIAG_ERROR_ALREADY_RELEASED (0x00000014) 280c12c399aSSascha Wildner 281c12c399aSSascha Wildner 282c12c399aSSascha Wildner typedef struct mps_fw_diag_register 283c12c399aSSascha Wildner { 284c12c399aSSascha Wildner uint8_t ExtendedType; 285c12c399aSSascha Wildner uint8_t BufferType; 286c12c399aSSascha Wildner uint16_t ApplicationFlags; 287c12c399aSSascha Wildner uint32_t DiagnosticFlags; 288c12c399aSSascha Wildner uint32_t ProductSpecific[23]; 289c12c399aSSascha Wildner uint32_t RequestedBufferSize; 290c12c399aSSascha Wildner uint32_t UniqueId; 291c12c399aSSascha Wildner } mps_fw_diag_register_t; 292c12c399aSSascha Wildner 293c12c399aSSascha Wildner typedef struct mps_fw_diag_unregister 294c12c399aSSascha Wildner { 295c12c399aSSascha Wildner uint32_t UniqueId; 296c12c399aSSascha Wildner } mps_fw_diag_unregister_t; 297c12c399aSSascha Wildner 298c12c399aSSascha Wildner #define MPS_FW_DIAG_FLAG_APP_OWNED (0x0001) 299c12c399aSSascha Wildner #define MPS_FW_DIAG_FLAG_BUFFER_VALID (0x0002) 300c12c399aSSascha Wildner #define MPS_FW_DIAG_FLAG_FW_BUFFER_ACCESS (0x0004) 301c12c399aSSascha Wildner 302c12c399aSSascha Wildner typedef struct mps_fw_diag_query 303c12c399aSSascha Wildner { 304c12c399aSSascha Wildner uint8_t ExtendedType; 305c12c399aSSascha Wildner uint8_t BufferType; 306c12c399aSSascha Wildner uint16_t ApplicationFlags; 307c12c399aSSascha Wildner uint32_t DiagnosticFlags; 308c12c399aSSascha Wildner uint32_t ProductSpecific[23]; 309c12c399aSSascha Wildner uint32_t TotalBufferSize; 310c12c399aSSascha Wildner uint32_t DriverAddedBufferSize; 311c12c399aSSascha Wildner uint32_t UniqueId; 312c12c399aSSascha Wildner } mps_fw_diag_query_t; 313c12c399aSSascha Wildner 314c12c399aSSascha Wildner typedef struct mps_fw_diag_release 315c12c399aSSascha Wildner { 316c12c399aSSascha Wildner uint32_t UniqueId; 317c12c399aSSascha Wildner } mps_fw_diag_release_t; 318c12c399aSSascha Wildner 319c12c399aSSascha Wildner #define MPS_FW_DIAG_FLAG_REREGISTER (0x0001) 320c12c399aSSascha Wildner #define MPS_FW_DIAG_FLAG_FORCE_RELEASE (0x0002) 321c12c399aSSascha Wildner 322c12c399aSSascha Wildner typedef struct mps_diag_read_buffer 323c12c399aSSascha Wildner { 324c12c399aSSascha Wildner uint8_t Status; 325c12c399aSSascha Wildner uint8_t Reserved; 326c12c399aSSascha Wildner uint16_t Flags; 327c12c399aSSascha Wildner uint32_t StartingOffset; 328c12c399aSSascha Wildner uint32_t BytesToRead; 329c12c399aSSascha Wildner uint32_t UniqueId; 330c12c399aSSascha Wildner uint64_t PtrDataBuffer; 331c12c399aSSascha Wildner } mps_diag_read_buffer_t; 332c12c399aSSascha Wildner 333c12c399aSSascha Wildner /* 334c12c399aSSascha Wildner * Register Access 335c12c399aSSascha Wildner */ 336c12c399aSSascha Wildner #define REG_IO_READ 1 337c12c399aSSascha Wildner #define REG_IO_WRITE 2 338c12c399aSSascha Wildner #define REG_MEM_READ 3 339c12c399aSSascha Wildner #define REG_MEM_WRITE 4 340c12c399aSSascha Wildner 341c12c399aSSascha Wildner typedef struct mps_reg_access 342c12c399aSSascha Wildner { 343c12c399aSSascha Wildner uint32_t Command; 344c12c399aSSascha Wildner uint32_t RegOffset; 345c12c399aSSascha Wildner uint32_t RegData; 346c12c399aSSascha Wildner } mps_reg_access_t; 347c12c399aSSascha Wildner 348c12c399aSSascha Wildner typedef struct mps_btdh_mapping 349c12c399aSSascha Wildner { 350c12c399aSSascha Wildner uint16_t TargetID; 351c12c399aSSascha Wildner uint16_t Bus; 352c12c399aSSascha Wildner uint16_t DevHandle; 353c12c399aSSascha Wildner uint16_t Reserved; 354c12c399aSSascha Wildner } mps_btdh_mapping_t; 355c12c399aSSascha Wildner 356c12c399aSSascha Wildner #define MPSIO_MPS_COMMAND_FLAG_VERBOSE 0x01 357c12c399aSSascha Wildner #define MPSIO_MPS_COMMAND_FLAG_DEBUG 0x02 358c12c399aSSascha Wildner #define MPSIO_READ_CFG_HEADER _IOWR('M', 200, struct mps_cfg_page_req) 359c12c399aSSascha Wildner #define MPSIO_READ_CFG_PAGE _IOWR('M', 201, struct mps_cfg_page_req) 360c12c399aSSascha Wildner #define MPSIO_READ_EXT_CFG_HEADER _IOWR('M', 202, struct mps_ext_cfg_page_req) 361c12c399aSSascha Wildner #define MPSIO_READ_EXT_CFG_PAGE _IOWR('M', 203, struct mps_ext_cfg_page_req) 362c12c399aSSascha Wildner #define MPSIO_WRITE_CFG_PAGE _IOWR('M', 204, struct mps_cfg_page_req) 363c12c399aSSascha Wildner #define MPSIO_RAID_ACTION _IOWR('M', 205, struct mps_raid_action) 364c12c399aSSascha Wildner #define MPSIO_MPS_COMMAND _IOWR('M', 210, struct mps_usr_command) 365c12c399aSSascha Wildner 366c12c399aSSascha Wildner #define MPTIOCTL ('I') 367c12c399aSSascha Wildner #define MPTIOCTL_GET_ADAPTER_DATA _IOWR(MPTIOCTL, 1,\ 368c12c399aSSascha Wildner struct mps_adapter_data) 369c12c399aSSascha Wildner #define MPTIOCTL_UPDATE_FLASH _IOWR(MPTIOCTL, 2,\ 370c12c399aSSascha Wildner struct mps_update_flash) 371c12c399aSSascha Wildner #define MPTIOCTL_RESET_ADAPTER _IO(MPTIOCTL, 3) 372c12c399aSSascha Wildner #define MPTIOCTL_PASS_THRU _IOWR(MPTIOCTL, 4,\ 373c12c399aSSascha Wildner struct mps_pass_thru) 374c12c399aSSascha Wildner #define MPTIOCTL_EVENT_QUERY _IOWR(MPTIOCTL, 5,\ 375c12c399aSSascha Wildner struct mps_event_query) 376c12c399aSSascha Wildner #define MPTIOCTL_EVENT_ENABLE _IOWR(MPTIOCTL, 6,\ 377c12c399aSSascha Wildner struct mps_event_enable) 378c12c399aSSascha Wildner #define MPTIOCTL_EVENT_REPORT _IOWR(MPTIOCTL, 7,\ 379c12c399aSSascha Wildner struct mps_event_report) 380c12c399aSSascha Wildner #define MPTIOCTL_GET_PCI_INFO _IOWR(MPTIOCTL, 8,\ 381c12c399aSSascha Wildner struct mps_pci_info) 382c12c399aSSascha Wildner #define MPTIOCTL_DIAG_ACTION _IOWR(MPTIOCTL, 9,\ 383c12c399aSSascha Wildner struct mps_diag_action) 384c12c399aSSascha Wildner #define MPTIOCTL_REG_ACCESS _IOWR(MPTIOCTL, 10,\ 385c12c399aSSascha Wildner struct mps_reg_access) 386c12c399aSSascha Wildner #define MPTIOCTL_BTDH_MAPPING _IOWR(MPTIOCTL, 11,\ 387c12c399aSSascha Wildner struct mps_btdh_mapping) 388c12c399aSSascha Wildner 389c12c399aSSascha Wildner #endif /* !_MPS_IOCTL_H_ */ 390