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_NOE_H 17 #define _CPQARY3_NOE_H 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 /* 24 * Information from CPQARY3 on Notification of Events 25 * View Hardware API for more information 26 */ 27 28 #define CISS_NOE_CDB_LEN 0x0D 29 #define CISS_CANCEL_NOE_CDB_LEN 0x10 30 #define BMIC_NOTIFY_ON_EVENT 0xD0 31 #define BMIC_CANCEL_NOTIFY_ON_EVENT 0xD1 32 #define NOE_BUFFER_LENGTH 0x200 33 34 #pragma pack(1) 35 36 typedef struct Noe_Buffer { 37 uint32_t relative_controller_time; 38 uint16_t event_class_code; 39 uint16_t event_subclass_code; 40 uint16_t event_detail_code; 41 uint8_t event_specific_data[64]; 42 uint8_t ascii_message[80]; 43 uint32_t event_tag; 44 uint16_t month_day; 45 uint16_t year; 46 uint32_t hms; 47 uint16_t pre_powerup_time; 48 uint8_t device_address[8]; 49 uint8_t reserved[336]; 50 } NoeBuffer; 51 52 #pragma pack() 53 54 #define CPQARY3_NOE_INIT 0 55 #define CPQARY3_NOE_RESUBMIT 1 56 #define CPQARY3_NOE_FAILED 3 57 58 /* 59 * This hierarchy is described in the firmware spec. 60 * It provides various categories of reports to provide for 61 * notification to host regarding asynchronous phenomena. 62 */ 63 #define CLASS_PROTOCOL 0 /* Event Notifier Protocol */ 64 #define SUB_CLASS_NON_EVENT 0 65 #define DETAIL_DISABLED 1 66 #define SUB_CLASS_PROTOCOL_ERR 1 67 #define DETAIL_EVENT_Q_OVERFLOW 0 68 69 #define CLASS_HOT_PLUG 1 /* All Hot-Plug Operations */ 70 #define SUB_CLASS_HP_CHANGE 0 71 72 /* 73 * New events for HP Smart Array controllers - FW revision greater than 5.14 74 * or later 75 */ 76 77 /* Storage Box HotPlug or Cabling Change */ 78 #define SUB_CLASS_SB_HP_CHANGE 6 79 #define DETAIL_STORAGEBOX_REMOVED 0 /* Storage box Removed */ 80 #define DETAIL_STORAGEBOX_ADDED 1 /* Storage Box Added */ 81 /* Storage Box Redundant I/O Module Removed */ 82 #define DETAIL_PATH_REMOVED 2 83 /* Storage Box Redundant I/O Module (or its path) Added */ 84 #define DETAIL_PATH_ADDED 3 85 /* Storage Box (or its first path) Repaired (re-added after failure) */ 86 #define DETIAL_STORAGEBOX_REPAIRED 4 87 /* Storage Box Redundant I/O Module (or its path) Repaired */ 88 #define DETAIL_PATH_REPAIRED 5 89 90 /* Disk Drive Redundant Path Change */ 91 #define SUB_CLASS_DD_PATH_CHANGE 7 92 /* Redundant path to configured disk drive is Hot Removed */ 93 #define DETAIL_DD_HOT_REMOVED 0 94 95 #define CLASS_HARDWARE 2 /* Cable, Memory, Fan */ 96 #define SUB_CLASS_RC_CHANGE 7 /* Redundant Cabling Change */ 97 /* Unsupported Configuration Occurred Online */ 98 #define DETAIL_UNSUPPORTED_CONFIGURATION 0 99 #define CLASS_ENVIRONMENT 3 /* Temperature, Power, Chasis, UPS */ 100 101 #define CLASS_PHYSICAL_DRIVE 4 /* Physical drive Changes */ 102 103 #define CLASS_LOGICAL_DRIVE 5 /* Logical drive Changes */ 104 #define SUB_CLASS_STATUS 0 105 #define DETAIL_CHANGE 0 106 #define MEDIA_EXCHANGE 1 107 108 /* Spare Status States */ 109 #define SPARE_UNDEFINED 0x00 110 #define SPARES_DESIGNATED 0x01 111 #define SPARE_REBUILDING 0x02 112 #define SPARE_REBUILT 0x04 113 #define SPARES_BAD 0x08 114 #define SPARE_ACTIVE 0x10 115 #define SPARE_AVAILABLE 0x20 116 117 #ifdef __cplusplus 118 } 119 #endif 120 121 #endif /* _CPQARY3_NOE_H */ 122