1991554f2SKenneth D. Merry /*- 2991554f2SKenneth D. Merry * Copyright (c) 2008 Yahoo!, Inc. 3991554f2SKenneth D. Merry * All rights reserved. 4991554f2SKenneth D. Merry * Written by: John Baldwin <jhb@FreeBSD.org> 5991554f2SKenneth D. Merry * 6991554f2SKenneth D. Merry * Redistribution and use in source and binary forms, with or without 7991554f2SKenneth D. Merry * modification, are permitted provided that the following conditions 8991554f2SKenneth D. Merry * are met: 9991554f2SKenneth D. Merry * 1. Redistributions of source code must retain the above copyright 10991554f2SKenneth D. Merry * notice, this list of conditions and the following disclaimer. 11991554f2SKenneth D. Merry * 2. Redistributions in binary form must reproduce the above copyright 12991554f2SKenneth D. Merry * notice, this list of conditions and the following disclaimer in the 13991554f2SKenneth D. Merry * documentation and/or other materials provided with the distribution. 14991554f2SKenneth D. Merry * 3. Neither the name of the author nor the names of any co-contributors 15991554f2SKenneth D. Merry * may be used to endorse or promote products derived from this software 16991554f2SKenneth D. Merry * without specific prior written permission. 17991554f2SKenneth D. Merry * 18991554f2SKenneth D. Merry * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19991554f2SKenneth D. Merry * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20991554f2SKenneth D. Merry * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21991554f2SKenneth D. Merry * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22991554f2SKenneth D. Merry * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23991554f2SKenneth D. Merry * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24991554f2SKenneth D. Merry * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25991554f2SKenneth D. Merry * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26991554f2SKenneth D. Merry * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27991554f2SKenneth D. Merry * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28991554f2SKenneth D. Merry * SUCH DAMAGE. 29991554f2SKenneth D. Merry * 3046b23587SKashyap D Desai * Broadcom Inc. (LSI) MPT-Fusion Host Adapter FreeBSD userland interface 31991554f2SKenneth D. Merry */ 32991554f2SKenneth D. Merry /*- 33a2c14879SStephen McConnell * Copyright (c) 2011-2015 LSI Corp. 347a2a6a1aSStephen McConnell * Copyright (c) 2013-2016 Avago Technologies 3546b23587SKashyap D Desai * Copyright 2000-2020 Broadcom Inc. 36991554f2SKenneth D. Merry * All rights reserved. 37991554f2SKenneth D. Merry * 38991554f2SKenneth D. Merry * Redistribution and use in source and binary forms, with or without 39991554f2SKenneth D. Merry * modification, are permitted provided that the following conditions 40991554f2SKenneth D. Merry * are met: 41991554f2SKenneth D. Merry * 1. Redistributions of source code must retain the above copyright 42991554f2SKenneth D. Merry * notice, this list of conditions and the following disclaimer. 43991554f2SKenneth D. Merry * 2. Redistributions in binary form must reproduce the above copyright 44991554f2SKenneth D. Merry * notice, this list of conditions and the following disclaimer in the 45991554f2SKenneth D. Merry * documentation and/or other materials provided with the distribution. 46991554f2SKenneth D. Merry * 47991554f2SKenneth D. Merry * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 48991554f2SKenneth D. Merry * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 49991554f2SKenneth D. Merry * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 50991554f2SKenneth D. Merry * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 51991554f2SKenneth D. Merry * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 52991554f2SKenneth D. Merry * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 53991554f2SKenneth D. Merry * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 54991554f2SKenneth D. Merry * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 55991554f2SKenneth D. Merry * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 56991554f2SKenneth D. Merry * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 57991554f2SKenneth D. Merry * SUCH DAMAGE. 58991554f2SKenneth D. Merry * 5946b23587SKashyap D Desai * Broadcom Inc. (LSI) MPT-Fusion Host Adapter FreeBSD 60991554f2SKenneth D. Merry */ 61991554f2SKenneth D. Merry 62991554f2SKenneth D. Merry #ifndef _MPR_IOCTL_H_ 63991554f2SKenneth D. Merry #define _MPR_IOCTL_H_ 64991554f2SKenneth D. Merry 65991554f2SKenneth D. Merry #include <dev/mpr/mpi/mpi2_type.h> 66991554f2SKenneth D. Merry #include <dev/mpr/mpi/mpi2.h> 67991554f2SKenneth D. Merry #include <dev/mpr/mpi/mpi2_cnfg.h> 68991554f2SKenneth D. Merry #include <dev/mpr/mpi/mpi2_sas.h> 69991554f2SKenneth D. Merry 70991554f2SKenneth D. Merry /* 71991554f2SKenneth D. Merry * For the read header requests, the header should include the page 72991554f2SKenneth D. Merry * type or extended page type, page number, and page version. The 73991554f2SKenneth D. Merry * buffer and length are unused. The completed header is returned in 74991554f2SKenneth D. Merry * the 'header' member. 75991554f2SKenneth D. Merry * 76991554f2SKenneth D. Merry * For the read page and write page requests, 'buf' should point to a 77991554f2SKenneth D. Merry * buffer of 'len' bytes which holds the entire page (including the 78991554f2SKenneth D. Merry * header). 79991554f2SKenneth D. Merry * 80991554f2SKenneth D. Merry * All requests specify the page address in 'page_address'. 81991554f2SKenneth D. Merry */ 82991554f2SKenneth D. Merry struct mpr_cfg_page_req { 83991554f2SKenneth D. Merry MPI2_CONFIG_PAGE_HEADER header; 84991554f2SKenneth D. Merry uint32_t page_address; 85991554f2SKenneth D. Merry void *buf; 86991554f2SKenneth D. Merry int len; 87991554f2SKenneth D. Merry uint16_t ioc_status; 88991554f2SKenneth D. Merry }; 89991554f2SKenneth D. Merry 90991554f2SKenneth D. Merry struct mpr_ext_cfg_page_req { 91991554f2SKenneth D. Merry MPI2_CONFIG_EXTENDED_PAGE_HEADER header; 92991554f2SKenneth D. Merry uint32_t page_address; 93991554f2SKenneth D. Merry void *buf; 94991554f2SKenneth D. Merry int len; 95991554f2SKenneth D. Merry uint16_t ioc_status; 96991554f2SKenneth D. Merry }; 97991554f2SKenneth D. Merry 98991554f2SKenneth D. Merry struct mpr_raid_action { 99991554f2SKenneth D. Merry uint8_t action; 100991554f2SKenneth D. Merry uint8_t volume_bus; 101991554f2SKenneth D. Merry uint8_t volume_id; 102991554f2SKenneth D. Merry uint8_t phys_disk_num; 103991554f2SKenneth D. Merry uint32_t action_data_word; 104991554f2SKenneth D. Merry void *buf; 105991554f2SKenneth D. Merry int len; 106991554f2SKenneth D. Merry uint32_t volume_status; 107991554f2SKenneth D. Merry uint32_t action_data[4]; 108991554f2SKenneth D. Merry uint16_t action_status; 109991554f2SKenneth D. Merry uint16_t ioc_status; 110991554f2SKenneth D. Merry uint8_t write; 111991554f2SKenneth D. Merry }; 112991554f2SKenneth D. Merry 113991554f2SKenneth D. Merry struct mpr_usr_command { 114991554f2SKenneth D. Merry void *req; 115991554f2SKenneth D. Merry uint32_t req_len; 116991554f2SKenneth D. Merry void *rpl; 117991554f2SKenneth D. Merry uint32_t rpl_len; 118991554f2SKenneth D. Merry void *buf; 119991554f2SKenneth D. Merry int len; 120991554f2SKenneth D. Merry uint32_t flags; 121991554f2SKenneth D. Merry }; 122991554f2SKenneth D. Merry 123991554f2SKenneth D. Merry typedef struct mpr_pci_bits 124991554f2SKenneth D. Merry { 125991554f2SKenneth D. Merry union { 126991554f2SKenneth D. Merry struct { 127991554f2SKenneth D. Merry uint32_t DeviceNumber :5; 128991554f2SKenneth D. Merry uint32_t FunctionNumber :3; 129991554f2SKenneth D. Merry uint32_t BusNumber :24; 130991554f2SKenneth D. Merry } bits; 131991554f2SKenneth D. Merry uint32_t AsDWORD; 132991554f2SKenneth D. Merry } u; 133991554f2SKenneth D. Merry uint32_t PciSegmentId; 134991554f2SKenneth D. Merry } mpr_pci_bits_t; 135991554f2SKenneth D. Merry 136991554f2SKenneth D. Merry /* 137991554f2SKenneth D. Merry * The following is the MPRIOCTL_GET_ADAPTER_DATA data structure. This data 138991554f2SKenneth D. Merry * structure is setup so that we hopefully are properly aligned for both 139991554f2SKenneth D. Merry * 32-bit and 64-bit mode applications. 140991554f2SKenneth D. Merry * 141991554f2SKenneth D. Merry * Adapter Type - Value = 6 = SCSI Protocol through SAS-3 adapter 142991554f2SKenneth D. Merry * 143991554f2SKenneth D. Merry * MPI Port Number - The PCI Function number for this device 144991554f2SKenneth D. Merry * 145991554f2SKenneth D. Merry * PCI Device HW Id - The PCI device number for this device 146991554f2SKenneth D. Merry * 147991554f2SKenneth D. Merry */ 148991554f2SKenneth D. Merry #define MPRIOCTL_ADAPTER_TYPE_SAS3 6 1495f5baf0eSAlexander Motin #define MPRIOCTL_ADAPTER_TYPE_SAS35 7 150991554f2SKenneth D. Merry typedef struct mpr_adapter_data 151991554f2SKenneth D. Merry { 152991554f2SKenneth D. Merry uint32_t StructureLength; 153991554f2SKenneth D. Merry uint32_t AdapterType; 154991554f2SKenneth D. Merry uint32_t MpiPortNumber; 155991554f2SKenneth D. Merry uint32_t PCIDeviceHwId; 156991554f2SKenneth D. Merry uint32_t PCIDeviceHwRev; 157991554f2SKenneth D. Merry uint32_t SubSystemId; 158991554f2SKenneth D. Merry uint32_t SubsystemVendorId; 159991554f2SKenneth D. Merry uint32_t Reserved1; 160991554f2SKenneth D. Merry uint32_t MpiFirmwareVersion; 161991554f2SKenneth D. Merry uint32_t BiosVersion; 162991554f2SKenneth D. Merry uint8_t DriverVersion[32]; 163991554f2SKenneth D. Merry uint8_t Reserved2; 164991554f2SKenneth D. Merry uint8_t ScsiId; 165991554f2SKenneth D. Merry uint16_t Reserved3; 166991554f2SKenneth D. Merry mpr_pci_bits_t PciInformation; 167991554f2SKenneth D. Merry } mpr_adapter_data_t; 168991554f2SKenneth D. Merry 169991554f2SKenneth D. Merry typedef struct mpr_update_flash 170991554f2SKenneth D. Merry { 171991554f2SKenneth D. Merry uint64_t PtrBuffer; 172991554f2SKenneth D. Merry uint32_t ImageChecksum; 173991554f2SKenneth D. Merry uint32_t ImageOffset; 174991554f2SKenneth D. Merry uint32_t ImageSize; 175991554f2SKenneth D. Merry uint32_t ImageType; 176991554f2SKenneth D. Merry } mpr_update_flash_t; 177991554f2SKenneth D. Merry 178991554f2SKenneth D. Merry #define MPR_PASS_THRU_DIRECTION_NONE 0 179991554f2SKenneth D. Merry #define MPR_PASS_THRU_DIRECTION_READ 1 180991554f2SKenneth D. Merry #define MPR_PASS_THRU_DIRECTION_WRITE 2 181991554f2SKenneth D. Merry #define MPR_PASS_THRU_DIRECTION_BOTH 3 182991554f2SKenneth D. Merry 183991554f2SKenneth D. Merry typedef struct mpr_pass_thru 184991554f2SKenneth D. Merry { 185991554f2SKenneth D. Merry uint64_t PtrRequest; 186991554f2SKenneth D. Merry uint64_t PtrReply; 187991554f2SKenneth D. Merry uint64_t PtrData; 188991554f2SKenneth D. Merry uint32_t RequestSize; 189991554f2SKenneth D. Merry uint32_t ReplySize; 190991554f2SKenneth D. Merry uint32_t DataSize; 191991554f2SKenneth D. Merry uint32_t DataDirection; 192991554f2SKenneth D. Merry uint64_t PtrDataOut; 193991554f2SKenneth D. Merry uint32_t DataOutSize; 194991554f2SKenneth D. Merry uint32_t Timeout; 195991554f2SKenneth D. Merry } mpr_pass_thru_t; 196991554f2SKenneth D. Merry 197991554f2SKenneth D. Merry /* 198991554f2SKenneth D. Merry * Event queue defines 199991554f2SKenneth D. Merry */ 2005f5baf0eSAlexander Motin #define MPR_EVENT_QUEUE_SIZE (200) /* Max Events stored in driver */ 201991554f2SKenneth D. Merry #define MPR_MAX_EVENT_DATA_LENGTH (48) /* Size of each event in Dwords */ 202991554f2SKenneth D. Merry 203991554f2SKenneth D. Merry typedef struct mpr_event_query 204991554f2SKenneth D. Merry { 205991554f2SKenneth D. Merry uint16_t Entries; 206991554f2SKenneth D. Merry uint16_t Reserved; 207991554f2SKenneth D. Merry uint32_t Types[4]; 208991554f2SKenneth D. Merry } mpr_event_query_t; 209991554f2SKenneth D. Merry 210991554f2SKenneth D. Merry typedef struct mpr_event_enable 211991554f2SKenneth D. Merry { 212991554f2SKenneth D. Merry uint32_t Types[4]; 213991554f2SKenneth D. Merry } mpr_event_enable_t; 214991554f2SKenneth D. Merry 215991554f2SKenneth D. Merry /* 216991554f2SKenneth D. Merry * Event record entry for ioctl. 217991554f2SKenneth D. Merry */ 218991554f2SKenneth D. Merry typedef struct mpr_event_entry 219991554f2SKenneth D. Merry { 220991554f2SKenneth D. Merry uint32_t Type; 221991554f2SKenneth D. Merry uint32_t Number; 222991554f2SKenneth D. Merry uint32_t Data[MPR_MAX_EVENT_DATA_LENGTH]; 223991554f2SKenneth D. Merry } mpr_event_entry_t; 224991554f2SKenneth D. Merry 225991554f2SKenneth D. Merry typedef struct mpr_event_report 226991554f2SKenneth D. Merry { 227991554f2SKenneth D. Merry uint32_t Size; 228991554f2SKenneth D. Merry uint64_t PtrEvents; 229991554f2SKenneth D. Merry } mpr_event_report_t; 230991554f2SKenneth D. Merry 231991554f2SKenneth D. Merry typedef struct mpr_pci_info 232991554f2SKenneth D. Merry { 233991554f2SKenneth D. Merry uint32_t BusNumber; 234991554f2SKenneth D. Merry uint8_t DeviceNumber; 235991554f2SKenneth D. Merry uint8_t FunctionNumber; 236991554f2SKenneth D. Merry uint16_t InterruptVector; 237991554f2SKenneth D. Merry uint8_t PciHeader[256]; 238991554f2SKenneth D. Merry } mpr_pci_info_t; 239991554f2SKenneth D. Merry 240991554f2SKenneth D. Merry typedef struct mpr_diag_action 241991554f2SKenneth D. Merry { 242991554f2SKenneth D. Merry uint32_t Action; 243991554f2SKenneth D. Merry uint32_t Length; 244991554f2SKenneth D. Merry uint64_t PtrDiagAction; 245991554f2SKenneth D. Merry uint32_t ReturnCode; 246991554f2SKenneth D. Merry } mpr_diag_action_t; 247991554f2SKenneth D. Merry 248991554f2SKenneth D. Merry #define MPR_FW_DIAGNOSTIC_UID_NOT_FOUND (0xFF) 249991554f2SKenneth D. Merry 250991554f2SKenneth D. Merry #define MPR_FW_DIAG_NEW (0x806E6577) 251991554f2SKenneth D. Merry 252991554f2SKenneth D. Merry #define MPR_FW_DIAG_TYPE_REGISTER (0x00000001) 253991554f2SKenneth D. Merry #define MPR_FW_DIAG_TYPE_UNREGISTER (0x00000002) 254991554f2SKenneth D. Merry #define MPR_FW_DIAG_TYPE_QUERY (0x00000003) 255991554f2SKenneth D. Merry #define MPR_FW_DIAG_TYPE_READ_BUFFER (0x00000004) 256991554f2SKenneth D. Merry #define MPR_FW_DIAG_TYPE_RELEASE (0x00000005) 257991554f2SKenneth D. Merry 258991554f2SKenneth D. Merry #define MPR_FW_DIAG_INVALID_UID (0x00000000) 259991554f2SKenneth D. Merry 260991554f2SKenneth D. Merry #define MPR_DIAG_SUCCESS 0 261991554f2SKenneth D. Merry #define MPR_DIAG_FAILURE 1 262991554f2SKenneth D. Merry 263991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_SUCCESS (0x00000000) 264991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_FAILURE (0x00000001) 265991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_INVALID_PARAMETER (0x00000002) 266991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_POST_FAILED (0x00000010) 267991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_INVALID_UID (0x00000011) 268991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_RELEASE_FAILED (0x00000012) 269991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_NO_BUFFER (0x00000013) 270991554f2SKenneth D. Merry #define MPR_FW_DIAG_ERROR_ALREADY_RELEASED (0x00000014) 271991554f2SKenneth D. Merry 272991554f2SKenneth D. Merry typedef struct mpr_fw_diag_register 273991554f2SKenneth D. Merry { 274991554f2SKenneth D. Merry uint8_t ExtendedType; 275991554f2SKenneth D. Merry uint8_t BufferType; 276991554f2SKenneth D. Merry uint16_t ApplicationFlags; 277991554f2SKenneth D. Merry uint32_t DiagnosticFlags; 278991554f2SKenneth D. Merry uint32_t ProductSpecific[23]; 279991554f2SKenneth D. Merry uint32_t RequestedBufferSize; 280991554f2SKenneth D. Merry uint32_t UniqueId; 281991554f2SKenneth D. Merry } mpr_fw_diag_register_t; 282991554f2SKenneth D. Merry 283991554f2SKenneth D. Merry typedef struct mpr_fw_diag_unregister 284991554f2SKenneth D. Merry { 285991554f2SKenneth D. Merry uint32_t UniqueId; 286991554f2SKenneth D. Merry } mpr_fw_diag_unregister_t; 287991554f2SKenneth D. Merry 288991554f2SKenneth D. Merry #define MPR_FW_DIAG_FLAG_APP_OWNED (0x0001) 289991554f2SKenneth D. Merry #define MPR_FW_DIAG_FLAG_BUFFER_VALID (0x0002) 290991554f2SKenneth D. Merry #define MPR_FW_DIAG_FLAG_FW_BUFFER_ACCESS (0x0004) 291991554f2SKenneth D. Merry 292991554f2SKenneth D. Merry typedef struct mpr_fw_diag_query 293991554f2SKenneth D. Merry { 294991554f2SKenneth D. Merry uint8_t ExtendedType; 295991554f2SKenneth D. Merry uint8_t BufferType; 296991554f2SKenneth D. Merry uint16_t ApplicationFlags; 297991554f2SKenneth D. Merry uint32_t DiagnosticFlags; 298991554f2SKenneth D. Merry uint32_t ProductSpecific[23]; 299991554f2SKenneth D. Merry uint32_t TotalBufferSize; 300991554f2SKenneth D. Merry uint32_t DriverAddedBufferSize; 301991554f2SKenneth D. Merry uint32_t UniqueId; 302991554f2SKenneth D. Merry } mpr_fw_diag_query_t; 303991554f2SKenneth D. Merry 304991554f2SKenneth D. Merry typedef struct mpr_fw_diag_release 305991554f2SKenneth D. Merry { 306991554f2SKenneth D. Merry uint32_t UniqueId; 307991554f2SKenneth D. Merry } mpr_fw_diag_release_t; 308991554f2SKenneth D. Merry 309991554f2SKenneth D. Merry #define MPR_FW_DIAG_FLAG_REREGISTER (0x0001) 310991554f2SKenneth D. Merry #define MPR_FW_DIAG_FLAG_FORCE_RELEASE (0x0002) 311991554f2SKenneth D. Merry 312991554f2SKenneth D. Merry typedef struct mpr_diag_read_buffer 313991554f2SKenneth D. Merry { 314991554f2SKenneth D. Merry uint8_t Status; 315991554f2SKenneth D. Merry uint8_t Reserved; 316991554f2SKenneth D. Merry uint16_t Flags; 317991554f2SKenneth D. Merry uint32_t StartingOffset; 318991554f2SKenneth D. Merry uint32_t BytesToRead; 319991554f2SKenneth D. Merry uint32_t UniqueId; 320991554f2SKenneth D. Merry uint64_t PtrDataBuffer; 321991554f2SKenneth D. Merry } mpr_diag_read_buffer_t; 322991554f2SKenneth D. Merry 323991554f2SKenneth D. Merry /* 324991554f2SKenneth D. Merry * Register Access 325991554f2SKenneth D. Merry */ 326991554f2SKenneth D. Merry #define REG_IO_READ 1 327991554f2SKenneth D. Merry #define REG_IO_WRITE 2 328991554f2SKenneth D. Merry #define REG_MEM_READ 3 329991554f2SKenneth D. Merry #define REG_MEM_WRITE 4 330991554f2SKenneth D. Merry 331991554f2SKenneth D. Merry typedef struct mpr_reg_access 332991554f2SKenneth D. Merry { 333991554f2SKenneth D. Merry uint32_t Command; 334991554f2SKenneth D. Merry uint32_t RegOffset; 335991554f2SKenneth D. Merry uint32_t RegData; 336991554f2SKenneth D. Merry } mpr_reg_access_t; 337991554f2SKenneth D. Merry 338991554f2SKenneth D. Merry typedef struct mpr_btdh_mapping 339991554f2SKenneth D. Merry { 340991554f2SKenneth D. Merry uint16_t TargetID; 341991554f2SKenneth D. Merry uint16_t Bus; 342991554f2SKenneth D. Merry uint16_t DevHandle; 343991554f2SKenneth D. Merry uint16_t Reserved; 344991554f2SKenneth D. Merry } mpr_btdh_mapping_t; 345991554f2SKenneth D. Merry 346991554f2SKenneth D. Merry #define MPRIO_MPR_COMMAND_FLAG_VERBOSE 0x01 347991554f2SKenneth D. Merry #define MPRIO_MPR_COMMAND_FLAG_DEBUG 0x02 348991554f2SKenneth D. Merry #define MPRIO_READ_CFG_HEADER _IOWR('M', 200, struct mpr_cfg_page_req) 349991554f2SKenneth D. Merry #define MPRIO_READ_CFG_PAGE _IOWR('M', 201, struct mpr_cfg_page_req) 350991554f2SKenneth D. Merry #define MPRIO_READ_EXT_CFG_HEADER _IOWR('M', 202, struct mpr_ext_cfg_page_req) 351991554f2SKenneth D. Merry #define MPRIO_READ_EXT_CFG_PAGE _IOWR('M', 203, struct mpr_ext_cfg_page_req) 352991554f2SKenneth D. Merry #define MPRIO_WRITE_CFG_PAGE _IOWR('M', 204, struct mpr_cfg_page_req) 353991554f2SKenneth D. Merry #define MPRIO_RAID_ACTION _IOWR('M', 205, struct mpr_raid_action) 354991554f2SKenneth D. Merry #define MPRIO_MPR_COMMAND _IOWR('M', 210, struct mpr_usr_command) 355991554f2SKenneth D. Merry 3568fae77f5SScott Long #ifndef MPTIOCTL 357991554f2SKenneth D. Merry #define MPTIOCTL ('I') 358991554f2SKenneth D. Merry #define MPTIOCTL_GET_ADAPTER_DATA _IOWR(MPTIOCTL, 1,\ 359991554f2SKenneth D. Merry struct mpr_adapter_data) 360991554f2SKenneth D. Merry #define MPTIOCTL_UPDATE_FLASH _IOWR(MPTIOCTL, 2,\ 361991554f2SKenneth D. Merry struct mpr_update_flash) 362991554f2SKenneth D. Merry #define MPTIOCTL_RESET_ADAPTER _IO(MPTIOCTL, 3) 363991554f2SKenneth D. Merry #define MPTIOCTL_PASS_THRU _IOWR(MPTIOCTL, 4,\ 364991554f2SKenneth D. Merry struct mpr_pass_thru) 365991554f2SKenneth D. Merry #define MPTIOCTL_EVENT_QUERY _IOWR(MPTIOCTL, 5,\ 366991554f2SKenneth D. Merry struct mpr_event_query) 367991554f2SKenneth D. Merry #define MPTIOCTL_EVENT_ENABLE _IOWR(MPTIOCTL, 6,\ 368991554f2SKenneth D. Merry struct mpr_event_enable) 369991554f2SKenneth D. Merry #define MPTIOCTL_EVENT_REPORT _IOWR(MPTIOCTL, 7,\ 370991554f2SKenneth D. Merry struct mpr_event_report) 371991554f2SKenneth D. Merry #define MPTIOCTL_GET_PCI_INFO _IOWR(MPTIOCTL, 8,\ 372991554f2SKenneth D. Merry struct mpr_pci_info) 373991554f2SKenneth D. Merry #define MPTIOCTL_DIAG_ACTION _IOWR(MPTIOCTL, 9,\ 374991554f2SKenneth D. Merry struct mpr_diag_action) 375991554f2SKenneth D. Merry #define MPTIOCTL_REG_ACCESS _IOWR(MPTIOCTL, 10,\ 376991554f2SKenneth D. Merry struct mpr_reg_access) 377991554f2SKenneth D. Merry #define MPTIOCTL_BTDH_MAPPING _IOWR(MPTIOCTL, 11,\ 378991554f2SKenneth D. Merry struct mpr_btdh_mapping) 3798fae77f5SScott Long #endif /* MPTIOCTL */ 380991554f2SKenneth D. Merry 381991554f2SKenneth D. Merry #endif /* !_MPR_IOCTL_H_ */ 382