1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifndef _SYS_LW8_IMPL_H 28 #define _SYS_LW8_IMPL_H 29 30 #pragma ident "%Z%%M% %I% %E% SMI" 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif 35 36 /* 37 * local driver defines and structures 38 */ 39 40 #define LW8_DEFAULT_MAX_MBOX_WAIT_TIME 30 41 42 typedef struct lw8_event { 43 int32_t event_type; 44 } lw8_event_t; 45 46 /* 47 * mailbox commands 48 */ 49 #define LW8_MBOX_UPDATE_FW 0 50 #define LW8_MBOX_GET_INFO 1 51 #define LW8_MBOX_SET_CTL 2 52 #define LW8_MBOX_GET_LED 3 53 #define LW8_MBOX_SET_LED 4 54 #define LW8_MBOX_GET_EVENTS 5 55 #define LW8_MBOX_GET_NEXT_MSG 6 56 #define LW8_MBOX_WDT_GET 7 57 #define LW8_MBOX_WDT_SET 8 58 59 /* 60 * mailbox events 61 */ 62 #define LW8_EVENT_REQUESTED_SHUTDOWN 0 63 #define LW8_EVENT_VOLTAGE_SHUTDOWN 1 64 #define LW8_EVENT_TEMPERATURE_SHUTDOWN 2 65 #define LW8_EVENT_FANFAIL_SHUTDOWN 3 66 #define LW8_EVENT_NO_SCC_SHUTDOWN 4 67 #define LW8_EVENT_NEW_LOG_MSG 5 68 #define LW8_EVENT_SC_RESTARTED 6 69 70 /* 71 * led requests 72 */ 73 #define MAX_LEDS_PER_FRU 9 74 #define MAX_FRUS 24 75 76 typedef struct lw8_get_led_payload { 77 char value[(3 * (MAX_FRUS - 1)) + MAX_LEDS_PER_FRU]; 78 } lw8_get_led_payload_t; 79 80 typedef struct lw8_set_led_payload { 81 char offset; 82 char value; 83 } lw8_set_led_payload_t; 84 85 typedef struct { 86 int num; /* no. events requested and no. returned */ 87 int level; /* level of events requested */ 88 } lom_eventreq_t; 89 90 #define MAX_EVENTS 128 91 #define MAX_EVENT_STR 80 92 93 typedef struct { 94 int num; /* no. events requested and no. returned */ 95 int level; /* level of events requested */ 96 char string[MAX_EVENTS][MAX_EVENT_STR]; 97 } lom_eventresp_t; 98 99 #define MAX_MSG_STR 1012 100 typedef struct { 101 int level; /* syslog msg level */ 102 int msg_valid; /* 1 if valid, 0 if not valid */ 103 int num_remaining; /* num of msg's left to retrieve after this */ 104 char msg[MAX_MSG_STR]; /* the message text */ 105 } lw8_logmsg_t; 106 107 /* 108 * LW8_MBOX_WDT_GET message: SC <-> Solaris 109 * 110 * SC and Solaris use this message to learn what its peer has 111 * as their current state for these watchdog state-machine 112 * variables. 113 */ 114 typedef struct { 115 int recovery_enabled; /* 1/0 => {en,dis}abled */ 116 int watchdog_enabled; /* 1/0 => {en,dis}abled */ 117 int timeout; /* in seconds */ 118 } lw8_get_wdt_t; 119 120 /* 121 * LW8_MBOX_WDT_SET message: SC <- Solaris 122 * 123 * Solaris uses this to update the SC with the latest 124 * 'value' for the specified 'property_id'. 125 * 126 * Eg, to specify that the watchdog state-machine is in 127 * System Mode, <property_id, value> would be set to: 128 * 129 * <LW8_WDT_PROP_MODE, LW8_PROP_MODE_SWDT> 130 */ 131 typedef struct { 132 int property_id; 133 int value; 134 } lw8_set_wdt_t; 135 136 /* choices for 'property_id' field: */ 137 #define LW8_WDT_PROP_RECOV 0 /* recovery_enabled */ 138 #define LW8_WDT_PROP_WDT 1 /* watchdog_enabled */ 139 #define LW8_WDT_PROP_TO 2 /* timeout duration */ 140 #define LW8_WDT_PROP_MODE 3 /* mode: AWDT or SWDT */ 141 142 /* 143 * choices for 'value' field (for the specified 'property_id'): 144 */ 145 /* LW8_WDT_PROP_RECOV */ 146 #define LW8_PROP_RECOV_ENABLED 1 147 #define LW8_PROP_RECOV_DISABLED 0 148 149 /* LW8_WDT_PROP_WDT */ 150 #define LW8_PROP_WDT_ENABLED 1 151 #define LW8_PROP_WDT_DISABLED 0 152 153 /* LW8_WDT_PROP_TO: integral number of seconds */ 154 155 /* LW8_WDT_PROP_MODE */ 156 #define LW8_PROP_MODE_AWDT 1 /* App wdog mode */ 157 #define LW8_PROP_MODE_SWDT 0 /* System wdog mode */ 158 159 #ifdef __cplusplus 160 } 161 #endif 162 163 #endif /* _SYS_LW8_IMPL_H */ 164