/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright (C) 2013 Hewlett-Packard Development Company, L.P. */ #ifndef _CPQARY3_IOCTL_H #define _CPQARY3_IOCTL_H #ifdef __cplusplus extern "C" { #endif /* * USED in Ioctls */ #define CPQARY3_SCSI_IN 0 #define CPQARY3_SCSI_OUT 1 #define CPQARY3_NODATA_XFER 2 #define SUCCESS 0 #define FAILURE -1 /* for SAS support */ /* BMIC Commands */ #define HPSAS_ID_LOG_DRIVE 0x10 #define HPSAS_ID_CONTROLLER 0x11 #define HPSAS_SENSE_LOG_DRIVE 0x12 #define HPSAS_ID_PHYSICAL_DRIVE 0x15 #define HPSAS_READ 0x20 #define HPSAS_WRITE 0x30 #define HPSAS_WRITE_THROUGH 0x31 #define HPSAS_SENSE_CONFIG 0x50 #define HPSAS_SET_CONFIG 0x51 #define HPSAS_BYPASS_VOL_STATE 0x52 #define HPSAS_CHANGE_CONFIG 0x54 #define HPSAS_SENSE_ORIG_CONFIG 0x55 #define HPSAS_LABEL_LOG_DRIVE 0x57 #define HPSAS_SENSE_BUS_PARAMS 0x65 #define HPSAS_TAPE_INQUIRY 0x92 #define HPSAS_RESUME_BKGND_ACTIVITY 0x99 #define HPSAS_SENSE_MP_STAT 0xA0 #define HPSAS_SET_MP_THRESHOLD 0xA1 #define HPSAS_MP_PARAM_CONTROL 0xA4 #define HPSAS_SENSE_DRV_ERR_LOG 0xA6 #define HPSAS_FLUSH_CACHE 0xc2 #define HPSAS_REPORT_LOGICAL_LUN 0xC2 #define HPSAS_REPORT_PHYSICAL_LUN 0xC3 #define HPSAS_SET_MP_VALUE 0xF3 #define HPSAS_BMIC_CMD_LEN 16 #pragma pack(1) typedef struct cpqary3_ioctl_request { uint32_t len; /* Data Buffer length */ uint32_t reserved; /* For future enhancements */ uint64_t argp; /* Data or data Buffer of the request */ } cpqary3_ioctl_request_t; typedef struct cpqary3_drvrev { uint8_t minor; /* Version info */ uint8_t major; uint8_t mm; /* Revision Date */ uint8_t dd; uint16_t yyyy; } cpqary3_drvrev_t; typedef struct cpqary3_driver_info { int8_t name[16]; /* Null Term. ASCII driver name */ cpqary3_drvrev_t version; /* Driver version and revision */ uint32_t num_ctlr; /* Num of ctlrs currently handled */ uint32_t max_num_ctlr; /* Max num ctlrs supported */ int8_t reserved[98]; /* Structure size = 128 bytes */ } cpqary3_driver_info_t; typedef struct cpqary3_ctlr_info { uint16_t state; /* currently set to active */ uint32_t board_id; /* controllers board_id */ uint32_t subsystem_id; /* controllers subsystem_id */ uint8_t bus; /* controllers PCI Bus number */ uint8_t dev : 5; /* 5 bit device number */ uint8_t fun : 3; /* 3 bit function number */ uint16_t slot_num; /* physical slot number */ uint8_t num_of_tgts; /* No of Logical Drives */ uint32_t controller_instance; /* Ap id number */ int8_t reserved[109]; /* Structure size = 128 bytes */ } cpqary3_ctlr_info_t; typedef struct cpqary3_bmic_pass { uint8_t lun_addr[8]; /* 8 byte LUN address */ uint8_t cmd; /* BMIC command opcode */ uint8_t cmd_len; /* BMIC command length */ uint16_t unit_number; /* Unit number */ uint32_t blk_number; /* BMIC Detail */ uint16_t bmic_index; /* bmic_index */ uint16_t timeout; /* timeout for command */ uint8_t io_direction; /* IN(0) or OUT(1) */ uint8_t err_status; /* command completion status */ ErrorInfo_t err_info; /* error info */ uint16_t buf_len; /* buffer/transfer length */ uint64_t buf; /* buffer */ } cpqary3_bmic_pass_t; typedef struct cpqary3_scsi_pass { uint8_t lun_addr[8]; /* 8 byte LUN address */ uint8_t cdb[16]; /* 16 byte CDB */ uint8_t cdb_len; /* SCSI CDB length */ uint16_t timeout; /* timeout for command */ uint8_t io_direction; /* IN(0) or OUT(1) */ uint8_t err_status; /* command completion status */ ErrorInfo_t err_info; /* error info */ uint16_t buf_len; /* buffer/transfer length */ uint64_t buf; /* buffer */ } cpqary3_scsi_pass_t; #pragma pack() #ifdef __cplusplus } #endif #endif /* _CPQARY3_IOCTL_H */