1 /* 2 * This file and its contents are supplied under the terms of the 3 * Common Development and Distribution License ("CDDL"), version 1.0. 4 * You may only use this file in accordance with the terms of version 5 * 1.0 of the CDDL. 6 * 7 * A full copy of the text of the CDDL should have accompanied this 8 * source. A copy of the CDDL is also available via the Internet at 9 * http://www.illumos.org/license/CDDL. 10 */ 11 12 /* 13 * Copyright (C) 2013 Hewlett-Packard Development Company, L.P. 14 */ 15 16 #ifndef _CPQARY3_IOCTL_H 17 #define _CPQARY3_IOCTL_H 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 /* 24 * USED in Ioctls 25 */ 26 27 #define CPQARY3_SCSI_IN 0 28 #define CPQARY3_SCSI_OUT 1 29 #define CPQARY3_NODATA_XFER 2 30 #define SUCCESS 0 31 #define FAILURE -1 32 33 /* for SAS support */ 34 /* BMIC Commands */ 35 #define HPSAS_ID_LOG_DRIVE 0x10 36 #define HPSAS_ID_CONTROLLER 0x11 37 #define HPSAS_SENSE_LOG_DRIVE 0x12 38 #define HPSAS_ID_PHYSICAL_DRIVE 0x15 39 #define HPSAS_READ 0x20 40 #define HPSAS_WRITE 0x30 41 #define HPSAS_WRITE_THROUGH 0x31 42 #define HPSAS_SENSE_CONFIG 0x50 43 #define HPSAS_SET_CONFIG 0x51 44 #define HPSAS_BYPASS_VOL_STATE 0x52 45 #define HPSAS_CHANGE_CONFIG 0x54 46 #define HPSAS_SENSE_ORIG_CONFIG 0x55 47 #define HPSAS_LABEL_LOG_DRIVE 0x57 48 #define HPSAS_SENSE_BUS_PARAMS 0x65 49 #define HPSAS_TAPE_INQUIRY 0x92 50 #define HPSAS_RESUME_BKGND_ACTIVITY 0x99 51 #define HPSAS_SENSE_MP_STAT 0xA0 52 #define HPSAS_SET_MP_THRESHOLD 0xA1 53 #define HPSAS_MP_PARAM_CONTROL 0xA4 54 #define HPSAS_SENSE_DRV_ERR_LOG 0xA6 55 #define HPSAS_FLUSH_CACHE 0xc2 56 #define HPSAS_REPORT_LOGICAL_LUN 0xC2 57 #define HPSAS_REPORT_PHYSICAL_LUN 0xC3 58 #define HPSAS_SET_MP_VALUE 0xF3 59 #define HPSAS_BMIC_CMD_LEN 16 60 61 62 #pragma pack(1) 63 64 typedef struct cpqary3_ioctl_request { 65 uint32_t len; /* Data Buffer length */ 66 uint32_t reserved; /* For future enhancements */ 67 uint64_t argp; /* Data or data Buffer of the request */ 68 } cpqary3_ioctl_request_t; 69 70 typedef struct cpqary3_drvrev { 71 uint8_t minor; /* Version info */ 72 uint8_t major; 73 uint8_t mm; /* Revision Date */ 74 uint8_t dd; 75 uint16_t yyyy; 76 } cpqary3_drvrev_t; 77 78 typedef struct cpqary3_driver_info { 79 int8_t name[16]; /* Null Term. ASCII driver name */ 80 cpqary3_drvrev_t version; /* Driver version and revision */ 81 uint32_t num_ctlr; /* Num of ctlrs currently handled */ 82 uint32_t max_num_ctlr; /* Max num ctlrs supported */ 83 int8_t reserved[98]; /* Structure size = 128 bytes */ 84 } cpqary3_driver_info_t; 85 86 typedef struct cpqary3_ctlr_info { 87 uint16_t state; /* currently set to active */ 88 uint32_t board_id; /* controllers board_id */ 89 uint32_t subsystem_id; /* controllers subsystem_id */ 90 uint8_t bus; /* controllers PCI Bus number */ 91 uint8_t dev : 5; /* 5 bit device number */ 92 uint8_t fun : 3; /* 3 bit function number */ 93 uint16_t slot_num; /* physical slot number */ 94 uint8_t num_of_tgts; /* No of Logical Drives */ 95 uint32_t controller_instance; /* Ap id number */ 96 int8_t reserved[109]; /* Structure size = 128 bytes */ 97 } cpqary3_ctlr_info_t; 98 99 typedef struct cpqary3_bmic_pass { 100 uint8_t lun_addr[8]; /* 8 byte LUN address */ 101 uint8_t cmd; /* BMIC command opcode */ 102 uint8_t cmd_len; /* BMIC command length */ 103 uint16_t unit_number; /* Unit number */ 104 uint32_t blk_number; /* BMIC Detail */ 105 uint16_t bmic_index; /* bmic_index */ 106 uint16_t timeout; /* timeout for command */ 107 uint8_t io_direction; /* IN(0) or OUT(1) */ 108 uint8_t err_status; /* command completion status */ 109 ErrorInfo_t err_info; /* error info */ 110 uint16_t buf_len; /* buffer/transfer length */ 111 uint64_t buf; /* buffer */ 112 } cpqary3_bmic_pass_t; 113 114 typedef struct cpqary3_scsi_pass { 115 uint8_t lun_addr[8]; /* 8 byte LUN address */ 116 uint8_t cdb[16]; /* 16 byte CDB */ 117 uint8_t cdb_len; /* SCSI CDB length */ 118 uint16_t timeout; /* timeout for command */ 119 uint8_t io_direction; /* IN(0) or OUT(1) */ 120 uint8_t err_status; /* command completion status */ 121 ErrorInfo_t err_info; /* error info */ 122 uint16_t buf_len; /* buffer/transfer length */ 123 uint64_t buf; /* buffer */ 124 } cpqary3_scsi_pass_t; 125 126 #pragma pack() 127 128 #ifdef __cplusplus 129 } 130 #endif 131 132 #endif /* _CPQARY3_IOCTL_H */ 133