/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (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 (c) 1999 by Sun Microsystems, Inc. * All rights reserved. */ #ifndef _RESET_INFO_H #define _RESET_INFO_H #pragma ident "%Z%%M% %I% %E% SMI" #ifdef __cplusplus extern "C" { #endif /* * All of the following data structures and defines come from sun4u server * POST. If the data in POST changes, then these structures must reflect * those changes. */ #include /* To get MAX_BOARDS constant */ /* BDA bit assignments */ #define BOARD_PRESENT (1<<0) #define BOARD_OK (1<<1) #define BOARD_TYPE_MSK (7<<2) #define BOARD_TYPE(x) (((x) & BOARD_TYPE_MSK) >> 2) /* Board state mask and defines */ #define BD_STATE_MASK 0x3 #define BD_LPM_FZN 0 #define BD_ONLINE_FAIL 1 #define BD_NOT_PRESENT 2 #define BD_ONLINE_NORMAL 3 /* define CPU 0 fields */ #define CPU0_PRESENT (1<<8) #define CPU0_OK (1<<9) #define CPU0_FAIL_CODE_MSK (7<<10) /* define CPU 1 fields */ #define CPU1_PRESENT (1<<16) #define CPU1_OK (1<<17) #define CPU1_FAIL_CODE_MSK (7<<18) /* supported board types */ #define CPU_TYPE 0 #define MEM_TYPE 1 /* CPU/MEM board with only memory */ #define IO_TYPE1 2 #define IO_TYPE2 3 #define IO_TYPE3 4 #define IO_TYPE4 5 /* same as IO TYPE 1 but no HM or PHY chip */ #define CLOCK_TYPE 7 /* for CPU type UPA ports */ typedef struct { u_longlong_t afsr; /* Fault status register for CPU */ u_longlong_t afar; /* Fault address register for CPU */ } cpu_reset_state; /* For the clock board */ typedef struct { unsigned long clk_ssr_1; /* reset status for the clock board */ } clock_reset_state; struct board_info { u_longlong_t board_desc; cpu_reset_state cpu[2]; /* could be a CPU */ u_longlong_t ac_error_status; u_longlong_t dc_shadow_chain; uint_t fhc_csr; uint_t fhc_rcsr; }; struct reset_info { int length; /* size of the structure */ int version; /* Version of the structure */ struct board_info bd_reset_info[MAX_BOARDS]; clock_reset_state clk; /* one clock board */ unsigned char tod_timestamp[7]; }; #ifdef __cplusplus } #endif #endif /* _RESET_INFO_H */