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 33extern "C" { 34#endif 35 36/* 37 * local driver defines and structures 38 */ 39 40#define LW8_DEFAULT_MAX_MBOX_WAIT_TIME 30 41 42typedef 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 76typedef struct lw8_get_led_payload { 77 char value[(3 * (MAX_FRUS - 1)) + MAX_LEDS_PER_FRU]; 78} lw8_get_led_payload_t; 79 80typedef struct lw8_set_led_payload { 81 char offset; 82 char value; 83} lw8_set_led_payload_t; 84 85typedef 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 93typedef 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 100typedef 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 */ 114typedef 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 */ 131typedef 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