dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / libprtdiag / inc / pdevinfo_sun4u.h
blob7273d62b8d0ed18e320338b25ab9b9ad348c6de7
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright (c) 1999 by Sun Microsystems, Inc.
24 * All rights reserved.
27 #ifndef _PDEVINFO_SUN4U_H
28 #define _PDEVINFO_SUN4U_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #include <sys/obpdefs.h>
33 #include <sys/fhc.h>
34 #include <sys/sysctrl.h>
35 #include <sys/environ.h>
36 #include <sys/envctrl_gen.h>
37 #include <sys/envctrl_ue250.h>
38 #include <sys/envctrl_ue450.h>
39 #include <sys/simmstat.h>
40 #include <sys/ac.h>
41 #include <sys/sram.h>
42 #include <reset_info.h>
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
48 #define UNIX "unix"
50 /* Define names of nodes to search for */
51 #define CPU_NAME "SUNW,UltraSPARC"
52 #define SBUS_NAME "sbus"
53 #define PCI_NAME "pci"
54 #define FFB_NAME "SUNW,ffb"
55 #define AFB_NAME "SUNW,afb"
57 struct mem_stat_data {
58 enum ac_bank_status status; /* bank status values */
59 enum ac_bank_condition condition; /* bank conditions */
62 struct bd_kstat_data {
63 u_longlong_t ac_memctl; /* Memctl register contents */
64 u_longlong_t ac_memdecode[2]; /* memory decode registers . */
65 int ac_kstats_ok; /* successful kstat read occurred */
66 uint_t fhc_bsr; /* FHC Board Status Register */
67 uint_t fhc_csr; /* FHC Control Status Register */
68 int fhc_kstats_ok; /* successful kstat read occurred */
69 uchar_t simm_status[SIMM_COUNT]; /* SIMM status */
70 int simmstat_kstats_ok; /* successful read occurred */
71 struct temp_stats tempstat;
72 int temp_kstat_ok;
73 struct mem_stat_data mem_stat[2]; /* raw kstat bank information */
74 int ac_memstat_ok; /* successful read of memory status */
78 * Hot plug info structure. If a hotplug kstat is found, the bd_info
79 * structure from the kstat is filled in the the hp_info structure
80 * is marked OK.
82 struct hp_info {
83 struct bd_info bd_info;
84 int kstat_ok;
87 /* Environmental info for Tazmo */
88 struct envctrl_kstat_data {
89 envctrl_ps_t ps_kstats[MAX_DEVS]; /* kstats for powersupplies */
90 envctrl_fan_t fan_kstats[MAX_DEVS]; /* kstats for fans */
91 envctrl_encl_t encl_kstats[MAX_DEVS]; /* kstats for enclosure */
94 /* Environmental info for Javelin */
95 struct envctrltwo_kstat_data {
96 envctrl_ps2_t ps_kstats[MAX_DEVS]; /* kstats for powersupplies */
97 int num_ps_kstats;
98 envctrl_fan_t fan_kstats[MAX_DEVS]; /* kstats for fans */
99 int num_fan_kstats;
100 envctrl_encl_t encl_kstats[MAX_DEVS]; /* kstats for enclosure */
101 int num_encl_kstats;
102 envctrl_temp_t temp_kstats[MAX_DEVS]; /* kstats for temperatures */
103 int num_temp_kstats;
104 envctrl_disk_t disk_kstats[MAX_DEVS]; /* kstats for disks */
105 int num_disk_kstats;
108 struct system_kstat_data {
109 uchar_t sysctrl; /* sysctrl register contents */
110 uchar_t sysstat1; /* system status1 register contents. */
111 uchar_t sysstat2; /* system status2 register contents. */
112 uchar_t ps_shadow[SYS_PS_COUNT]; /* power supply shadow */
113 int psstat_kstat_ok;
114 uchar_t clk_freq2; /* clock frequency register 2 contents */
115 uchar_t fan_status; /* shadow fan status */
116 uchar_t keysw_status; /* status of the key switch */
117 enum power_state power_state; /* redundant power state */
118 uchar_t clk_ver; /* clock version register */
119 int sys_kstats_ok; /* successful kstat read occurred */
120 struct temp_stats tempstat;
121 int temp_kstat_ok;
122 struct reset_info reset_info;
123 int reset_kstats_ok; /* kstat read OK */
124 struct bd_kstat_data bd_ksp_list[MAX_BOARDS];
125 struct hp_info hp_info[MAX_BOARDS];
126 struct ft_list *ft_array; /* fault array */
127 int nfaults; /* number of faults in fault array */
128 int ft_kstat_ok; /* Fault kstats OK */
129 struct envctrl_kstat_data env_data; /* environment data for Tazmo */
130 int envctrl_kstat_ok;
131 struct envctrltwo_kstat_data envc_data; /* environ data for Javelin */
132 int envctrltwo_kstat_ok;
135 /* Description of a single memory group */
136 struct grp {
137 int valid; /* active memory group present */
138 u_longlong_t base; /* Phyiscal base of group */
139 uint_t size; /* size in bytes */
140 uint_t curr_size; /* current size in bytes */
141 int board; /* board number */
142 enum board_type type; /* board type */
143 int group; /* group # on board (0 or 1) */
144 int factor; /* interleave factor (0,2,4,8,16) */
145 int speed; /* Memory speed (in ns) */
146 char groupid; /* Alpha tag for group ID */
147 enum ac_bank_status status; /* bank status values */
148 enum ac_bank_condition condition; /* bank conditions */
151 #define MAX_GROUPS 32
152 #define MAXSTRLEN 256
154 /* Array of all possible groups in the system. */
155 struct grp_info {
156 struct grp grp[MAX_GROUPS];
159 /* A memory interleave structure */
160 struct inter_grp {
161 u_longlong_t base; /* Physical base of group */
162 int valid;
163 int count;
164 char groupid;
167 /* Array of all possible memory interleave structures */
168 struct mem_inter {
169 struct inter_grp i_grp[MAX_GROUPS];
172 /* FFB info structure */
173 struct ffbinfo {
174 int board;
175 int upa_id;
176 char *dev;
177 struct ffbinfo *next;
180 /* FFB strap reg union */
181 union strap_un {
182 struct {
183 uint_t unused:24;
184 uint_t afb_flag:1;
185 uint_t major_rev:2;
186 uint_t board_rev:2;
187 uint_t board_mem:1;
188 uint_t cbuf:1;
189 uint_t bbuf:1;
190 } fld;
191 uint_t ffb_strap_bits;
194 /* known values for manufacturer's JED code */
195 #define MANF_BROOKTREE 214
196 #define MANF_MITSUBISHI 28
198 /* FFB mnufacturer union */
199 union manuf {
200 struct {
201 uint_t version:4; /* version of part number */
202 uint_t partno:16; /* part number */
203 uint_t manf:11; /* manufacturer's JED code */
204 uint_t one:1; /* always set to '1' */
205 } fld;
206 uint_t encoded_id;
209 #define FFBIOC ('F' << 8)
210 #define FFB_SYS_INFO (FFBIOC| 80)
212 struct ffb_sys_info {
213 unsigned int ffb_strap_bits; /* ffb_strapping register */
214 #define FFB_B_BUFF 0x01 /* B buffer present */
215 #define FFB_C_BUFF 0x02 /* C buffer present */
216 #define FB_TYPE_AFB 0x80 /* AFB or FFB */
217 unsigned int fbc_version; /* revision of FBC chip */
218 unsigned int dac_version; /* revision of DAC chip */
219 unsigned int fbram_version; /* revision of FBRAMs chip */
220 unsigned int flags; /* miscellaneous flags */
221 #define FFB_KSIM 0x00000001 /* kernel simulator */
222 #define FFB_PAGE_FILL_BUG 0x00000002 /* FBRAM has page fill bug */
223 unsigned int afb_nfloats; /* no. of Float asics in AFB */
224 unsigned int pad[58]; /* padding for AFB chips & misc. */
227 int get_id(Prom_node *);
229 #ifdef __cplusplus
231 #endif
233 #endif /* _PDEVINFO_SUN4U_H */