1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright (c) 1999, 2000 by Sun Microsystems, Inc. 24*7c478bd9Sstevel@tonic-gate * All rights reserved. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate #ifndef _MONTECARLO_SYS_MCT_TOPOLOGY_H 28*7c478bd9Sstevel@tonic-gate #define _MONTECARLO_SYS_MCT_TOPOLOGY_H 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*7c478bd9Sstevel@tonic-gate 32*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 33*7c478bd9Sstevel@tonic-gate extern "C" { 34*7c478bd9Sstevel@tonic-gate #endif 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate /* 37*7c478bd9Sstevel@tonic-gate * mct_topology.h 38*7c478bd9Sstevel@tonic-gate * MonteCarlo / Tonga topology structures and types for the scsb driver 39*7c478bd9Sstevel@tonic-gate * and its kstat structure "env_topology", to be available to applications 40*7c478bd9Sstevel@tonic-gate * like envmond and snmp agents. 41*7c478bd9Sstevel@tonic-gate */ 42*7c478bd9Sstevel@tonic-gate /* 43*7c478bd9Sstevel@tonic-gate * SCB information also defined in scsb.h, which file is not available to 44*7c478bd9Sstevel@tonic-gate * applications. 45*7c478bd9Sstevel@tonic-gate */ 46*7c478bd9Sstevel@tonic-gate #define SCB_P10_NOK_LED_REGS 4 47*7c478bd9Sstevel@tonic-gate #define SCB_P10_OK_LED_REGS 4 48*7c478bd9Sstevel@tonic-gate #define SCB_P10_BLINK_LED_REGS 2 49*7c478bd9Sstevel@tonic-gate #define SCB_P10_LED_REGS 10 50*7c478bd9Sstevel@tonic-gate #define SCB_P15_NOK_LED_REGS 3 51*7c478bd9Sstevel@tonic-gate #define SCB_P15_OK_LED_REGS 3 52*7c478bd9Sstevel@tonic-gate #define SCB_P15_BLINK_LED_REGS 3 53*7c478bd9Sstevel@tonic-gate #define SCB_P15_LED_REGS 9 54*7c478bd9Sstevel@tonic-gate 55*7c478bd9Sstevel@tonic-gate /* Save this existing definition, but use it as the MAX */ 56*7c478bd9Sstevel@tonic-gate #define SCSB_LEDDATA_REGISTERS SCB_P10_LED_REGS 57*7c478bd9Sstevel@tonic-gate 58*7c478bd9Sstevel@tonic-gate #define MC_MAX_SLOTS 8 /* CPU, ALRM, cPCI Slots */ 59*7c478bd9Sstevel@tonic-gate #define MC_MAX_FAN 2 60*7c478bd9Sstevel@tonic-gate #define MC_MAX_PDU 2 61*7c478bd9Sstevel@tonic-gate #define MC_MAX_PS 2 62*7c478bd9Sstevel@tonic-gate #define MC_MAX_DISK 3 63*7c478bd9Sstevel@tonic-gate #define MC_MAX_SCB 1 64*7c478bd9Sstevel@tonic-gate #define MC_MAX_AC 1 65*7c478bd9Sstevel@tonic-gate #define MC_MAX_CFTM 1 66*7c478bd9Sstevel@tonic-gate #define MC_MAX_CRTM 1 67*7c478bd9Sstevel@tonic-gate #define MC_MAX_PRTM 1 68*7c478bd9Sstevel@tonic-gate 69*7c478bd9Sstevel@tonic-gate #define TG_MAX_SLOTS 5 /* CPU, ALRM, cPCI Slots */ 70*7c478bd9Sstevel@tonic-gate #define TG_MAX_FAN 2 71*7c478bd9Sstevel@tonic-gate #define TG_MAX_PS 1 72*7c478bd9Sstevel@tonic-gate #define TG_MAX_PDU 1 73*7c478bd9Sstevel@tonic-gate #define TG_MAX_DISK 1 74*7c478bd9Sstevel@tonic-gate #define TG_MAX_SCB 1 75*7c478bd9Sstevel@tonic-gate #define TG_MAX_AC 1 76*7c478bd9Sstevel@tonic-gate #define TG_MAX_CFTM 1 77*7c478bd9Sstevel@tonic-gate #define TG_MAX_CRTM 1 78*7c478bd9Sstevel@tonic-gate #define TG_MAX_PRTM 1 79*7c478bd9Sstevel@tonic-gate 80*7c478bd9Sstevel@tonic-gate /* 81*7c478bd9Sstevel@tonic-gate * Maximum number of FRUs in MCT systems, 82*7c478bd9Sstevel@tonic-gate * used for sizeof fru_id_table[] and index check 83*7c478bd9Sstevel@tonic-gate */ 84*7c478bd9Sstevel@tonic-gate #define MCT_MAX_FRUS 32 85*7c478bd9Sstevel@tonic-gate 86*7c478bd9Sstevel@tonic-gate /* 87*7c478bd9Sstevel@tonic-gate * The I2C addresses of System I2C devices 88*7c478bd9Sstevel@tonic-gate * from "MonteCarlo: Programming Interface Specifications" Version 0.9 89*7c478bd9Sstevel@tonic-gate */ 90*7c478bd9Sstevel@tonic-gate #define MCT_I2C_CPUPWR 0x72 91*7c478bd9Sstevel@tonic-gate #define MCT_I2C_FAN1 0x74 92*7c478bd9Sstevel@tonic-gate #define MCT_I2C_FAN2 0x76 93*7c478bd9Sstevel@tonic-gate #define MCT_I2C_FAN3 0x78 94*7c478bd9Sstevel@tonic-gate #define MCT_I2C_PS1 0x7c 95*7c478bd9Sstevel@tonic-gate #define MCT_I2C_PS2 0x7e 96*7c478bd9Sstevel@tonic-gate #define MCT_I2C_SCB 0x80 97*7c478bd9Sstevel@tonic-gate #define MCT_I2C_CPUTEMP 0x9e 98*7c478bd9Sstevel@tonic-gate 99*7c478bd9Sstevel@tonic-gate /* 100*7c478bd9Sstevel@tonic-gate * CFG1_MPID masks 101*7c478bd9Sstevel@tonic-gate */ 102*7c478bd9Sstevel@tonic-gate #define SCTRL_MPID_MASK 0xf 103*7c478bd9Sstevel@tonic-gate #define SCTRL_MPID_HALF 0x0 104*7c478bd9Sstevel@tonic-gate #define SCTRL_MPID_QUARTER 0x1 105*7c478bd9Sstevel@tonic-gate #define SCTRL_MPID_QUARTER_NODSK 0x3 106*7c478bd9Sstevel@tonic-gate 107*7c478bd9Sstevel@tonic-gate /* 108*7c478bd9Sstevel@tonic-gate * Interrupt Event Codes 109*7c478bd9Sstevel@tonic-gate * Also used by "scsb" to locate fruid_table index, 110*7c478bd9Sstevel@tonic-gate * so the order is very important. 111*7c478bd9Sstevel@tonic-gate */ 112*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_NONE 0x0000 113*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT1 0x00000001 114*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT2 0x00000002 115*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT3 0x00000004 116*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT4 0x00000008 117*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT5 0x00000010 118*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT6 0x00000020 119*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT7 0x00000040 120*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT8 0x00000080 121*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT9 0x00000100 122*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SLOT10 0x00000200 123*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_PDU1 0x00000400 124*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_PDU2 0x00000800 125*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_PS1 0x00001000 126*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_PS2 0x00002000 127*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_DISK1 0x00004000 128*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_DISK2 0x00008000 129*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_DISK3 0x00010000 130*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_FAN1 0x00020000 131*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_FAN2 0x00040000 132*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_FAN3 0x00080000 133*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_ALARM 0x00100000 134*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SCB 0x00200000 135*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_SSB 0x00400000 136*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_CRTM 0x00800000 137*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_CFTM 0x01000000 138*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_PRTM 0x02000000 139*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_PWRDWN 0x04000000 140*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_REPLACE 0x08000000 141*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_ALARM_INT 0x10000000 142*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_ALARM_INSERTION 0x20000000 143*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_ALARM_REMOVAL 0x40000000 144*7c478bd9Sstevel@tonic-gate #define SCTRL_EVENT_OTHER 0x80000000 145*7c478bd9Sstevel@tonic-gate 146*7c478bd9Sstevel@tonic-gate 147*7c478bd9Sstevel@tonic-gate 148*7c478bd9Sstevel@tonic-gate typedef uchar_t topo_id_t; 149*7c478bd9Sstevel@tonic-gate typedef uchar_t fru_id_t; 150*7c478bd9Sstevel@tonic-gate typedef uint16_t fru_version_t; 151*7c478bd9Sstevel@tonic-gate typedef uint16_t fru_max_t; 152*7c478bd9Sstevel@tonic-gate typedef uint16_t scsb_unum_t; 153*7c478bd9Sstevel@tonic-gate 154*7c478bd9Sstevel@tonic-gate typedef enum { 155*7c478bd9Sstevel@tonic-gate MCT_HEALTH_NA = 0, 156*7c478bd9Sstevel@tonic-gate MCT_HEALTH_OK = 1, 157*7c478bd9Sstevel@tonic-gate MCT_HEALTH_NOK = 2 158*7c478bd9Sstevel@tonic-gate } fru_health_t; 159*7c478bd9Sstevel@tonic-gate 160*7c478bd9Sstevel@tonic-gate /* 161*7c478bd9Sstevel@tonic-gate * Known MC/Tg Slot occupants, and UNKN for unknown 162*7c478bd9Sstevel@tonic-gate * NOTE: the CTC occupant is the CFTM FRU type on MonteCarlo 163*7c478bd9Sstevel@tonic-gate */ 164*7c478bd9Sstevel@tonic-gate typedef enum { 165*7c478bd9Sstevel@tonic-gate OC_UNKN = 0, 166*7c478bd9Sstevel@tonic-gate OC_CPU = 1, 167*7c478bd9Sstevel@tonic-gate OC_AC = 2, 168*7c478bd9Sstevel@tonic-gate OC_BHS = 3, 169*7c478bd9Sstevel@tonic-gate OC_FHS = 4, 170*7c478bd9Sstevel@tonic-gate OC_HAHS = 5, 171*7c478bd9Sstevel@tonic-gate OC_QFE = 6, 172*7c478bd9Sstevel@tonic-gate OC_FRCH = 7, 173*7c478bd9Sstevel@tonic-gate OC_COMBO = 8, 174*7c478bd9Sstevel@tonic-gate OC_PMC = 9, 175*7c478bd9Sstevel@tonic-gate OC_ATM = 10, 176*7c478bd9Sstevel@tonic-gate OC_CTC = 11 177*7c478bd9Sstevel@tonic-gate } mct_slot_occupant_t; 178*7c478bd9Sstevel@tonic-gate 179*7c478bd9Sstevel@tonic-gate typedef enum { 180*7c478bd9Sstevel@tonic-gate SLOT = 0, 181*7c478bd9Sstevel@tonic-gate PDU = 1, 182*7c478bd9Sstevel@tonic-gate PS = 2, 183*7c478bd9Sstevel@tonic-gate DISK = 3, 184*7c478bd9Sstevel@tonic-gate FAN = 4, 185*7c478bd9Sstevel@tonic-gate ALARM = 5, 186*7c478bd9Sstevel@tonic-gate SCB = 6, 187*7c478bd9Sstevel@tonic-gate SSB = 7, 188*7c478bd9Sstevel@tonic-gate CFTM = 8, 189*7c478bd9Sstevel@tonic-gate CRTM = 9, 190*7c478bd9Sstevel@tonic-gate PRTM = 10, 191*7c478bd9Sstevel@tonic-gate MIDPLANE = 11 192*7c478bd9Sstevel@tonic-gate } scsb_utype_t; 193*7c478bd9Sstevel@tonic-gate 194*7c478bd9Sstevel@tonic-gate #define SCSB_UNIT_TYPES 11 /* w/o MIDPLANE */ 195*7c478bd9Sstevel@tonic-gate 196*7c478bd9Sstevel@tonic-gate typedef enum scsb_fru_status { 197*7c478bd9Sstevel@tonic-gate FRU_NOT_PRESENT, 198*7c478bd9Sstevel@tonic-gate FRU_PRESENT, 199*7c478bd9Sstevel@tonic-gate FRU_NOT_AVAILABLE 200*7c478bd9Sstevel@tonic-gate } scsb_fru_status_t; 201*7c478bd9Sstevel@tonic-gate 202*7c478bd9Sstevel@tonic-gate typedef enum { 203*7c478bd9Sstevel@tonic-gate SWAP_NOT, SWAP_BASIC, SWAP_FULL, SWAP_HA 204*7c478bd9Sstevel@tonic-gate } cpci_swap_type_t; 205*7c478bd9Sstevel@tonic-gate 206*7c478bd9Sstevel@tonic-gate typedef struct fru_options { 207*7c478bd9Sstevel@tonic-gate char *board_name; 208*7c478bd9Sstevel@tonic-gate cpci_swap_type_t swap_type; 209*7c478bd9Sstevel@tonic-gate struct fru_options *next; 210*7c478bd9Sstevel@tonic-gate } fru_options_t; 211*7c478bd9Sstevel@tonic-gate 212*7c478bd9Sstevel@tonic-gate typedef struct fru_i2c_info { 213*7c478bd9Sstevel@tonic-gate uchar_t syscfg_reg; 214*7c478bd9Sstevel@tonic-gate uchar_t syscfg_bit; 215*7c478bd9Sstevel@tonic-gate uchar_t ledata_reg; 216*7c478bd9Sstevel@tonic-gate uchar_t ledata_bit; 217*7c478bd9Sstevel@tonic-gate uchar_t blink_reg; 218*7c478bd9Sstevel@tonic-gate uchar_t blink_bit; 219*7c478bd9Sstevel@tonic-gate } fru_i2c_info_t; 220*7c478bd9Sstevel@tonic-gate 221*7c478bd9Sstevel@tonic-gate typedef struct fru_info { 222*7c478bd9Sstevel@tonic-gate scsb_fru_status_t fru_status; /* FRU present status */ 223*7c478bd9Sstevel@tonic-gate scsb_unum_t fru_unit; /* FRU external unit number */ 224*7c478bd9Sstevel@tonic-gate scsb_utype_t fru_type; /* also an index to FRU lists */ 225*7c478bd9Sstevel@tonic-gate fru_id_t fru_id; /* I2C address, SCSIID, Slot Num */ 226*7c478bd9Sstevel@tonic-gate fru_version_t fru_version; /* version number where possible */ 227*7c478bd9Sstevel@tonic-gate fru_options_t *type_list; /* list of possible boards for slots */ 228*7c478bd9Sstevel@tonic-gate fru_i2c_info_t *i2c_info; /* for I2C devices */ 229*7c478bd9Sstevel@tonic-gate struct fru_info *next; 230*7c478bd9Sstevel@tonic-gate } fru_info_t; 231*7c478bd9Sstevel@tonic-gate 232*7c478bd9Sstevel@tonic-gate struct system_info { 233*7c478bd9Sstevel@tonic-gate fru_info_t mid_plane; /* one always present */ 234*7c478bd9Sstevel@tonic-gate fru_max_t max_units[SCSB_UNIT_TYPES]; 235*7c478bd9Sstevel@tonic-gate fru_info_t *fru_info_list[SCSB_UNIT_TYPES]; 236*7c478bd9Sstevel@tonic-gate }; 237*7c478bd9Sstevel@tonic-gate 238*7c478bd9Sstevel@tonic-gate /* 239*7c478bd9Sstevel@tonic-gate * scsb kstat types 240*7c478bd9Sstevel@tonic-gate */ 241*7c478bd9Sstevel@tonic-gate #define SCSB_KS_LEDDATA "scsb_leddata" 242*7c478bd9Sstevel@tonic-gate #define SCSB_KS_STATE "scsb_state" 243*7c478bd9Sstevel@tonic-gate #define SCSB_KS_EVC_REGISTER "scsb_evc_register" 244*7c478bd9Sstevel@tonic-gate #define SCSB_KS_TOPOLOGY "env_topology" 245*7c478bd9Sstevel@tonic-gate 246*7c478bd9Sstevel@tonic-gate typedef struct ks_fru_info { 247*7c478bd9Sstevel@tonic-gate scsb_fru_status_t fru_status; /* FRU presence/availability status */ 248*7c478bd9Sstevel@tonic-gate scsb_unum_t fru_unit; /* FRU external unit number */ 249*7c478bd9Sstevel@tonic-gate scsb_utype_t fru_type; /* and occupant type for solts */ 250*7c478bd9Sstevel@tonic-gate fru_id_t fru_id; /* I2C address, SCSIID, Slot Num */ 251*7c478bd9Sstevel@tonic-gate fru_version_t fru_version; /* version number where possible */ 252*7c478bd9Sstevel@tonic-gate fru_health_t fru_health; /* From NOK LED, if available */ 253*7c478bd9Sstevel@tonic-gate } ks_fru_info_t; 254*7c478bd9Sstevel@tonic-gate 255*7c478bd9Sstevel@tonic-gate typedef union scsb_leddata { 256*7c478bd9Sstevel@tonic-gate uchar_t scb_led_regs[SCSB_LEDDATA_REGISTERS]; 257*7c478bd9Sstevel@tonic-gate union { 258*7c478bd9Sstevel@tonic-gate struct { 259*7c478bd9Sstevel@tonic-gate uchar_t nok_leds[SCB_P10_NOK_LED_REGS]; 260*7c478bd9Sstevel@tonic-gate uchar_t ok_leds[SCB_P10_OK_LED_REGS]; 261*7c478bd9Sstevel@tonic-gate uchar_t blink_leds[SCB_P10_BLINK_LED_REGS]; 262*7c478bd9Sstevel@tonic-gate } p10; 263*7c478bd9Sstevel@tonic-gate struct { 264*7c478bd9Sstevel@tonic-gate uchar_t nok_leds[SCB_P15_NOK_LED_REGS]; 265*7c478bd9Sstevel@tonic-gate uchar_t ok_leds[SCB_P15_OK_LED_REGS]; 266*7c478bd9Sstevel@tonic-gate uchar_t blink_leds[SCB_P15_BLINK_LED_REGS]; 267*7c478bd9Sstevel@tonic-gate } p15; 268*7c478bd9Sstevel@tonic-gate } leds; 269*7c478bd9Sstevel@tonic-gate } scsb_ks_leddata_t; 270*7c478bd9Sstevel@tonic-gate 271*7c478bd9Sstevel@tonic-gate typedef struct { 272*7c478bd9Sstevel@tonic-gate uint8_t scb_present; /* SCB is present */ 273*7c478bd9Sstevel@tonic-gate uint8_t ssb_present; /* SSB is present */ 274*7c478bd9Sstevel@tonic-gate uint8_t scsb_frozen; /* SCB swap state */ 275*7c478bd9Sstevel@tonic-gate uint8_t scsb_mode; /* driver access mode */ 276*7c478bd9Sstevel@tonic-gate uint8_t unused_1; 277*7c478bd9Sstevel@tonic-gate uint8_t unused_2; 278*7c478bd9Sstevel@tonic-gate uint8_t unused_3; 279*7c478bd9Sstevel@tonic-gate uint8_t unused_4; 280*7c478bd9Sstevel@tonic-gate uint32_t event_code; /* event code bit map */ 281*7c478bd9Sstevel@tonic-gate } scsb_ks_state_t; 282*7c478bd9Sstevel@tonic-gate 283*7c478bd9Sstevel@tonic-gate typedef struct { 284*7c478bd9Sstevel@tonic-gate ks_fru_info_t mid_plane; 285*7c478bd9Sstevel@tonic-gate fru_max_t max_units[SCSB_UNIT_TYPES]; 286*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_slots[MC_MAX_SLOTS]; 287*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_pdu[MC_MAX_PDU]; 288*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_ps[MC_MAX_PS]; 289*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_disk[MC_MAX_DISK]; 290*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_fan[MC_MAX_FAN]; 291*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_scb[MC_MAX_SCB]; 292*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_ssb[MC_MAX_SCB]; 293*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_alarm[MC_MAX_AC]; 294*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_cftm[MC_MAX_CFTM]; 295*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_crtm[MC_MAX_CRTM]; 296*7c478bd9Sstevel@tonic-gate ks_fru_info_t mct_prtm[MC_MAX_PRTM]; 297*7c478bd9Sstevel@tonic-gate } mct_topology_t; 298*7c478bd9Sstevel@tonic-gate 299*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 300*7c478bd9Sstevel@tonic-gate } 301*7c478bd9Sstevel@tonic-gate #endif 302*7c478bd9Sstevel@tonic-gate 303*7c478bd9Sstevel@tonic-gate #endif /* _MONTECARLO_SYS_MCT_TOPOLOGY_H */ 304