/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_SSM_H #define _SYS_SSM_H #pragma ident "%Z%%M% %I% %E% SMI" #ifdef __cplusplus extern "C" { #endif #include /* needed by */ #include /* needed for definition of dev_info_t */ #include /* * ssm soft state macros: IIIIMMMM * instance-minor no */ #define SSM_INSTANCE_SHIFT 4 #define SSM_BOARD_MASK 0xff struct ssm_soft_state { dev_info_t *dip; /* own dev info */ int ssm_nodeid; /* node id */ dev_info_t *top_node; int initialized; /* instance has been initialized */ kmutex_t ssm_sft_lock; /* protects this struct */ ddi_iblock_cookie_t ssm_fm_ibc; /* returned ibc from our parent */ int ssm_fm_cap; /* our fm capability */ }; typedef struct { int instance; /* instance for this wildcat node */ int wnode; /* node num */ } ssm_sbdp_info_t; /* * useful debugging stuff */ #define SSM_ATTACH_DEBUG 0x0002 #define SSM_CTLOPS_DEBUG 0x0004 #define SSM_EVENT_DEBUG 0x0008 #define _SSM_IOCTL (('m' << 16) | ('p' << 8)) #define SSM_TEARDOWN_SBD (_SSM_IOCTL | 0x1) #ifdef DEBUG #define CMD2EVNT(m) ((m) == SGDR_BD_ABSENT ? SG_EVT_BOARD_ABSENT : \ (m) == SGDR_BD_PRESENT ? SG_EVT_BOARD_PRESENT :\ (m) == SGDR_UNASSIGN ? SG_EVT_UNASSIGN : \ (m) == SGDR_ASSIGN ? SG_EVT_ASSIGN : \ (m) == SGDR_UNAVAILABLE ? SG_EVT_UNAVAILABLE :\ (m) == SGDR_AVAILABLE ? SG_EVT_AVAILABLE : \ (m) == SGDR_POWER_OFF ? SG_EVT_POWER_OFF : \ (m) == SGDR_POWER_ON ? SG_EVT_POWER_ON : \ (m) == SGDR_PASSED_TEST ? SG_EVT_PASSED_TEST :\ (m) == SGDR_FAILED_TEST ? SG_EVT_FAILED_TEST :\ 0) #define EVNT2STR(c) ((c) == SG_EVT_BOARD_ABSENT ? "board_absent" :\ (c) == SG_EVT_BOARD_PRESENT ? "board_present" :\ (c) == SG_EVT_UNASSIGN ? "unassign" : \ (c) == SG_EVT_ASSIGN ? "assign" : \ (c) == SG_EVT_UNAVAILABLE ? "unavailable" : \ (c) == SG_EVT_AVAILABLE ? "available" : \ (c) == SG_EVT_POWER_OFF ? "power_off" : \ (c) == SG_EVT_POWER_ON ? "power_on" : \ (c) == SG_EVT_PASSED_TEST ? "passed_test" : \ (c) == SG_EVT_FAILED_TEST ? "failed_test" : \ NULL) #endif #ifdef __cplusplus } #endif #endif /* _SYS_SSM_H */