103831d35Sstevel /* 203831d35Sstevel * CDDL HEADER START 303831d35Sstevel * 403831d35Sstevel * The contents of this file are subject to the terms of the 503831d35Sstevel * Common Development and Distribution License, Version 1.0 only 603831d35Sstevel * (the "License"). You may not use this file except in compliance 703831d35Sstevel * with the License. 803831d35Sstevel * 903831d35Sstevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 1003831d35Sstevel * or http://www.opensolaris.org/os/licensing. 1103831d35Sstevel * See the License for the specific language governing permissions 1203831d35Sstevel * and limitations under the License. 1303831d35Sstevel * 1403831d35Sstevel * When distributing Covered Code, include this CDDL HEADER in each 1503831d35Sstevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1603831d35Sstevel * If applicable, add the following below this CDDL HEADER, with the 1703831d35Sstevel * fields enclosed by brackets "[]" replaced with your own identifying 1803831d35Sstevel * information: Portions Copyright [yyyy] [name of copyright owner] 1903831d35Sstevel * 2003831d35Sstevel * CDDL HEADER END 2103831d35Sstevel */ 2203831d35Sstevel /* 2303831d35Sstevel * Copyright (c) 1999 by Sun Microsystems, Inc. 2403831d35Sstevel * All rights reserved. 25*2bcbf80cSPeter Tribble * Copyright (c) 2020 Peter Tribble. 2603831d35Sstevel */ 2703831d35Sstevel 2803831d35Sstevel #ifndef _PDEVINFO_SUN4U_H 2903831d35Sstevel #define _PDEVINFO_SUN4U_H 3003831d35Sstevel 3103831d35Sstevel #include <sys/obpdefs.h> 3203831d35Sstevel #include <sys/envctrl_gen.h> 3303831d35Sstevel #include <sys/envctrl_ue250.h> 3403831d35Sstevel #include <sys/envctrl_ue450.h> 3503831d35Sstevel 3603831d35Sstevel #ifdef __cplusplus 3703831d35Sstevel extern "C" { 3803831d35Sstevel #endif 3903831d35Sstevel 40*2bcbf80cSPeter Tribble /* 41*2bcbf80cSPeter Tribble * These were formerly defined in sys/ac.h, which was specific to sunfire, 42*2bcbf80cSPeter Tribble * but usage has leaked into generic code. 43*2bcbf80cSPeter Tribble */ 44*2bcbf80cSPeter Tribble #ifndef TRUE 45*2bcbf80cSPeter Tribble #define TRUE (1) 46*2bcbf80cSPeter Tribble #endif 47*2bcbf80cSPeter Tribble #ifndef FALSE 48*2bcbf80cSPeter Tribble #define FALSE (0) 49*2bcbf80cSPeter Tribble #endif 50*2bcbf80cSPeter Tribble 51*2bcbf80cSPeter Tribble /* 52*2bcbf80cSPeter Tribble * These were formerly defined as part of the board_type enum in sys/fhc.h, 53*2bcbf80cSPeter Tribble * which was specific to sunfire, but usage has leaked into generic code. 54*2bcbf80cSPeter Tribble */ 55*2bcbf80cSPeter Tribble #define UNKNOWN_BOARD 1 56*2bcbf80cSPeter Tribble #define CPU_BOARD 2 5703831d35Sstevel 5803831d35Sstevel /* Define names of nodes to search for */ 5903831d35Sstevel #define SBUS_NAME "sbus" 6003831d35Sstevel #define PCI_NAME "pci" 6103831d35Sstevel #define FFB_NAME "SUNW,ffb" 6203831d35Sstevel #define AFB_NAME "SUNW,afb" 6303831d35Sstevel 6403831d35Sstevel /* Environmental info for Tazmo */ 6503831d35Sstevel struct envctrl_kstat_data { 6603831d35Sstevel envctrl_ps_t ps_kstats[MAX_DEVS]; /* kstats for powersupplies */ 6703831d35Sstevel envctrl_fan_t fan_kstats[MAX_DEVS]; /* kstats for fans */ 6803831d35Sstevel envctrl_encl_t encl_kstats[MAX_DEVS]; /* kstats for enclosure */ 6903831d35Sstevel }; 7003831d35Sstevel 7103831d35Sstevel /* Environmental info for Javelin */ 7203831d35Sstevel struct envctrltwo_kstat_data { 7303831d35Sstevel envctrl_ps2_t ps_kstats[MAX_DEVS]; /* kstats for powersupplies */ 7403831d35Sstevel int num_ps_kstats; 7503831d35Sstevel envctrl_fan_t fan_kstats[MAX_DEVS]; /* kstats for fans */ 7603831d35Sstevel int num_fan_kstats; 7703831d35Sstevel envctrl_encl_t encl_kstats[MAX_DEVS]; /* kstats for enclosure */ 7803831d35Sstevel int num_encl_kstats; 7903831d35Sstevel envctrl_temp_t temp_kstats[MAX_DEVS]; /* kstats for temperatures */ 8003831d35Sstevel int num_temp_kstats; 8103831d35Sstevel envctrl_disk_t disk_kstats[MAX_DEVS]; /* kstats for disks */ 8203831d35Sstevel int num_disk_kstats; 8303831d35Sstevel }; 8403831d35Sstevel 8503831d35Sstevel struct system_kstat_data { 8603831d35Sstevel int sys_kstats_ok; /* successful kstat read occurred */ 8703831d35Sstevel struct envctrl_kstat_data env_data; /* environment data for Tazmo */ 8803831d35Sstevel int envctrl_kstat_ok; 8903831d35Sstevel struct envctrltwo_kstat_data envc_data; /* environ data for Javelin */ 9003831d35Sstevel int envctrltwo_kstat_ok; 9103831d35Sstevel }; 9203831d35Sstevel 9303831d35Sstevel #define MAXSTRLEN 256 9403831d35Sstevel 9503831d35Sstevel /* FFB info structure */ 9603831d35Sstevel struct ffbinfo { 9703831d35Sstevel int board; 9803831d35Sstevel int upa_id; 9903831d35Sstevel char *dev; 10003831d35Sstevel struct ffbinfo *next; 10103831d35Sstevel }; 10203831d35Sstevel 10303831d35Sstevel /* FFB strap reg union */ 10403831d35Sstevel union strap_un { 10503831d35Sstevel struct { 10603831d35Sstevel uint_t unused:24; 10703831d35Sstevel uint_t afb_flag:1; 10803831d35Sstevel uint_t major_rev:2; 10903831d35Sstevel uint_t board_rev:2; 11003831d35Sstevel uint_t board_mem:1; 11103831d35Sstevel uint_t cbuf:1; 11203831d35Sstevel uint_t bbuf:1; 11303831d35Sstevel } fld; 11403831d35Sstevel uint_t ffb_strap_bits; 11503831d35Sstevel }; 11603831d35Sstevel 11703831d35Sstevel /* known values for manufacturer's JED code */ 11803831d35Sstevel #define MANF_BROOKTREE 214 11903831d35Sstevel #define MANF_MITSUBISHI 28 12003831d35Sstevel 12103831d35Sstevel /* FFB mnufacturer union */ 12203831d35Sstevel union manuf { 12303831d35Sstevel struct { 12403831d35Sstevel uint_t version:4; /* version of part number */ 12503831d35Sstevel uint_t partno:16; /* part number */ 12603831d35Sstevel uint_t manf:11; /* manufacturer's JED code */ 12703831d35Sstevel uint_t one:1; /* always set to '1' */ 12803831d35Sstevel } fld; 12903831d35Sstevel uint_t encoded_id; 13003831d35Sstevel }; 13103831d35Sstevel 13203831d35Sstevel #define FFBIOC ('F' << 8) 13303831d35Sstevel #define FFB_SYS_INFO (FFBIOC| 80) 13403831d35Sstevel 13503831d35Sstevel struct ffb_sys_info { 13603831d35Sstevel unsigned int ffb_strap_bits; /* ffb_strapping register */ 13703831d35Sstevel #define FFB_B_BUFF 0x01 /* B buffer present */ 13803831d35Sstevel #define FFB_C_BUFF 0x02 /* C buffer present */ 13903831d35Sstevel #define FB_TYPE_AFB 0x80 /* AFB or FFB */ 14003831d35Sstevel unsigned int fbc_version; /* revision of FBC chip */ 14103831d35Sstevel unsigned int dac_version; /* revision of DAC chip */ 14203831d35Sstevel unsigned int fbram_version; /* revision of FBRAMs chip */ 14303831d35Sstevel unsigned int flags; /* miscellaneous flags */ 14403831d35Sstevel #define FFB_KSIM 0x00000001 /* kernel simulator */ 14503831d35Sstevel #define FFB_PAGE_FILL_BUG 0x00000002 /* FBRAM has page fill bug */ 14603831d35Sstevel unsigned int afb_nfloats; /* no. of Float asics in AFB */ 14703831d35Sstevel unsigned int pad[58]; /* padding for AFB chips & misc. */ 14803831d35Sstevel }; 14903831d35Sstevel 15003831d35Sstevel int get_id(Prom_node *); 15103831d35Sstevel 15203831d35Sstevel #ifdef __cplusplus 15303831d35Sstevel } 15403831d35Sstevel #endif 15503831d35Sstevel 15603831d35Sstevel #endif /* _PDEVINFO_SUN4U_H */ 157