1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
24 * Copyright 2020 Joyent, Inc.
25 */
26
27#ifndef _TOPO_HC_H
28#define	_TOPO_HC_H
29
30#ifdef	__cplusplus
31extern "C" {
32#endif
33
34/*
35 * Allowable hardware component names for hc FMRIs
36 */
37#define	BANK		"bank"
38#define	BAY		"bay"
39#define	BLADE		"blade"
40#define	BRANCH		"branch"
41#define	CMP		"CMP"
42#define	CENTERPLANE	"centerplane"
43#define	CHASSIS		"chassis"
44#define	CHIP		"chip"
45#define	CHIPSET		"chipset"
46#define	CORE		"core"
47#define	STRAND		"strand"
48#define	CHIP_SELECT	"chip-select"
49#define	CONTROLLER	"controller"
50#define	CPU		"cpu"
51#define	CPUBOARD	"cpuboard"
52#define	DIMM		"dimm"
53#define	DISK		"disk"
54#define	DRAM		"dram"
55#define	DRAMCHANNEL	"dram-channel"
56#define	FAN		"fan"
57#define	FANBOARD	"fanboard"
58#define	FANMODULE	"fanmodule"
59#define	HBA		"hba"
60#define	HOSTBRIDGE	"hostbridge"
61#define	INTERCONNECT	"interconnect"
62#define	IOBOARD		"ioboard"
63#define	IPORT		"iport"
64#define	MEMBOARD	"memboard"
65#define	MEMORYBUFFER	"memory-buffer"
66#define	MEMORYCONTROL	"memory-controller"
67#define	MICROCORE	"micro-core"
68#define	MOTHERBOARD	"motherboard"
69#define	NIU		"niu"
70#define	NIUFN		"niufn"
71#define	NVME		"nvme"
72#define	PCI_BUS		"pcibus"
73#define	PCI_DEVICE	"pcidev"
74#define	PCI_FUNCTION    "pcifn"
75#define	PCIEX_BUS	"pciexbus"
76#define	PCIEX_DEVICE	"pciexdev"
77#define	PCIEX_FUNCTION  "pciexfn"
78#define	PCIEX_ROOT	"pciexrc"
79#define	PCIEX_SWUP	"pciexswu"
80#define	PCIEX_SWDWN	"pciexswd"
81#define	PORT		"port"
82#define	POWERBOARD	"powerboard"
83#define	POWERMODULE	"powermodule"
84#define	PSU		"psu"
85#define	RANK		"rank"
86#define	RECEPTACLE	"receptacle"
87#define	RISER		"riser"
88#define	SASEXPANDER	"sas-expander"
89#define	SHELF		"shelf"
90#define	SCSI_DEVICE	"scsi-device"
91#define	SES_ENCLOSURE	"ses-enclosure"
92#define	SLOT		"slot"
93#define	SMP_DEVICE	"smp-device"
94#define	SP		"sp"
95#define	SUBCHASSIS	"subchassis"
96#define	SYSTEMBOARD	"systemboard"
97#define	TRANSCEIVER	"transceiver"
98#define	UFM		"ufm"
99#define	USB_DEVICE	"usb-device"
100#define	XAUI		"xaui"
101#define	XFP		"xfp"
102
103/*
104 * Allowable hc node property group and property names
105 */
106#define	TOPO_PGROUP_IO		"io"
107#define	TOPO_IO_DEVTYPE		"devtype"
108#define	TOPO_IO_DRIVER		"driver"
109#define	TOPO_IO_INSTANCE	"instance"
110#define	TOPO_IO_MODULE		"module"
111#define	TOPO_IO_DEV		"dev"
112#define	TOPO_IO_DEVID		"devid"
113#define	TOPO_IO_DEV_PATH	"devfs-path"
114#define	TOPO_IO_AP_PATH		"ap-path"
115#define	TOPO_IO_PHYS_PATH	"phys-path"
116
117#define	TOPO_PGROUP_PCI		"pci"
118#define	TOPO_PCI_VENDID		"vendor-id"
119#define	TOPO_PCI_VENDNM		"vendor-name"
120#define	TOPO_PCI_SUBSYSNM	"subsystem-name"
121#define	TOPO_PCI_DEVID		"device-id"
122#define	TOPO_PCI_DEVNM		"device-name"
123#define	TOPO_PCI_EXCAP		"extended-capabilities"
124#define	TOPO_PCI_BDF		"BDF"
125#define	TOPO_PCI_CLASS		"class-code"
126#define	TOPO_PCI_AADDR		"assigned-addresses"
127
128#define	TOPO_PCI_MAX_WIDTH	"link-maximum-width"
129#define	TOPO_PCI_CUR_WIDTH	"link-current-width"
130#define	TOPO_PCI_MAX_SPEED	"link-maximum-speed"
131#define	TOPO_PCI_CUR_SPEED	"link-current-speed"
132#define	TOPO_PCI_SUP_SPEED	"link-supported-speeds"
133#define	TOPO_PCI_ADMIN_SPEED	"link-admin-target-speed"
134
135#define	TOPO_PGROUP_BINDING	"binding"
136#define	TOPO_BINDING_OCCUPANT	"occupant-path"
137#define	TOPO_BINDING_DRIVER	"driver"
138#define	TOPO_BINDING_DEVCTL	"devctl"
139#define	TOPO_BINDING_ENCLOSURE	"enclosure"
140#define	TOPO_BINDING_SLOT	"slot"
141#define	TOPO_BINDING_PORT	"port"
142#define	TOPO_BINDING_PARENT_DEV	"parent-device"
143
144#define	TOPO_PGROUP_STORAGE	"storage"
145#define	TOPO_STORAGE_INITIATOR_PORT	"initiator-port"
146#define	TOPO_STORAGE_INITIATOR_PORT_PM	"initiator-port-pm"
147#define	TOPO_STORAGE_TARGET_PORT	"target-port"
148#define	TOPO_STORAGE_TARGET_PORT_L0ID	"target-port-l0id"
149#define	TOPO_STORAGE_TARGET_PORT_L0IDS	"target-port-l0ids"
150#define	TOPO_STORAGE_ATTACHED_PORT	"attached-port"
151#define	TOPO_STORAGE_TARGET_PORT_PM	"target-port-pm"
152#define	TOPO_STORAGE_ATTACHED_PORT_PM	"attached-port-pm"
153#define	TOPO_STORAGE_DEVID		"devid"
154#define	TOPO_STORAGE_LUN64		"lun64"
155#define	TOPO_STORAGE_DEVICE_TYPE	"inquiry-device-type"
156#define	TOPO_STORAGE_MANUFACTURER	"manufacturer"
157#define	TOPO_STORAGE_MODEL		"model"
158#define	TOPO_STORAGE_FIRMWARE_REV	"firmware-revision"
159#define	TOPO_STORAGE_SAS_PHY_MASK	"receptacle-pm"
160#define	TOPO_STORAGE_SAS_CONNECTOR_TYPE	"sas-connector-type"
161
162#define	TOPO_PGROUP_SES		"ses"
163/* Applied  any SES standard related topo node. */
164#define	TOPO_PROP_NODE_ID	"node-id"
165#define	TOPO_PROP_TARGET_PATH	"target-path"
166#define	TOPO_PROP_SES_DEVID	"ses-devid"
167#define	TOPO_PROP_SES_DEV_PATH	"ses-devfs-path"
168#define	TOPO_PROP_SES_PHYS_PATH	"ses-phys-path"
169#define	TOPO_PROP_SES_TARGET_PORT "ses-target-port"
170
171#define	TOPO_PGROUP_SMP		"smp"
172/* host SMP target related info for an expander node. */
173#define	TOPO_PROP_SMP_DEVID	"smp-devid"
174#define	TOPO_PROP_SMP_DEV_PATH	"smp-devfs-path"
175#define	TOPO_PROP_SMP_PHYS_PATH	"smp-phys-path"
176#define	TOPO_PROP_SMP_TARGET_PORT	"smp-target-port"
177#define	TOPO_PROP_SAS_ADDR	"sas-address"
178#define	TOPO_PROP_PHY_COUNT	"phy-count"
179#define	TOPO_PROP_PATHS		"paths"
180#define	TOPO_PROP_CHASSIS_TYPE	"chassis-type"
181#define	TOPO_PROP_SAS_PHY_MASK	"phy-mask"
182#define	TOPO_PROP_SAS_CONNECTOR_TYPE	"sas-connector-type"
183
184#define	TOPO_PGROUP_PORT	"port"
185#define	TOPO_PROP_PORT_TYPE	"type"
186#define	TOPO_PROP_PORT_TYPE_SFF	"sff"
187#define	TOPO_PROP_PORT_TYPE_USB	"usb"
188#define	TOPO_PROP_PORT_TYPE_UNKNOWN	"unknown"
189
190#define	TOPO_PGROUP_TRANSCEIVER	"transceiver"
191#define	TOPO_PROP_TRANSCEIVER_TYPE	"type"
192#define	TOPO_PROP_TRANSCEIVER_USABLE	"usable"
193
194#define	TOPO_PGROUP_SFF_TRANSCEIVER	"sff-transceiver"
195#define	TOPO_PORT_SFF_TRANSCEIVER_VENDOR	"vendor"
196#define	TOPO_PORT_SFF_TRANSCEIVER_PN	"part-number"
197#define	TOPO_PORT_SFF_TRANSCEIVER_REV	"revision"
198#define	TOPO_PORT_SFF_TRANSCEIVER_SN	"serial-number"
199
200#define	TOPO_PGROUP_USB_PORT	"usb-port"
201#define	TOPO_PROP_USB_PORT_LPORTS	"logical-ports"
202#define	TOPO_PROP_USB_PORT_VERSIONS	"usb-versions"
203#define	TOPO_PROP_USB_PORT_TYPE		"port-type"
204#define	TOPO_PROP_USB_PORT_ATTRIBUTES	"port-attributes"
205#define	TOPO_PROP_USB_PORT_A_VISIBLE	"user-visible"
206#define	TOPO_PROP_USB_PORT_A_CONNECTED	"port-connected"
207#define	TOPO_PROP_USB_PORT_A_DISCONNECTED	"port-disconnected"
208#define	TOPO_PROP_USB_PORT_A_EXTERNAL	"external-port"
209#define	TOPO_PROP_USB_PORT_A_INTERNAL	"internal-port"
210#define	TOPO_PROP_USB_PORT_NATTRS	5
211
212#define	TOPO_PGROUP_USB_PROPS	"usb-properties"
213#define	TOPO_PGROUP_USB_PROPS_VID	"usb-vendor-id"
214#define	TOPO_PGROUP_USB_PROPS_PID	"usb-product-id"
215#define	TOPO_PGROUP_USB_PROPS_REV	"usb-revision-id"
216#define	TOPO_PGROUP_USB_PROPS_VNAME	"usb-vendor-name"
217#define	TOPO_PGROUP_USB_PROPS_PNAME	"usb-product-name"
218#define	TOPO_PGROUP_USB_PROPS_SN	"usb-serialno"
219#define	TOPO_PGROUP_USB_PROPS_VERSION	"usb-version"
220#define	TOPO_PGROUP_USB_PROPS_SPEED	"usb-speed"
221#define	TOPO_PGROUP_USB_PROPS_PORT	"usb-port"
222#define	TOPO_PGROUP_USB_PROPS_SUPPORTED_SPEEDS	"usb-supported-speeds"
223#define	TOPO_PGROUP_USB_PROPS_MIN_SPEED	"usb-minimum-speed"
224
225
226/*
227 * These properties will exist on nodes enumerated by the ipmi module. They
228 * are consumed by the fac_prov_ipmi module
229 */
230#define	TOPO_PROP_IPMI_ENTITY_ID	"entity-id"
231#define	TOPO_PROP_IPMI_ENTITY_INST	"entity-instance"
232
233/*
234 * This property can be statically set in a map file and is consumed by the
235 * fac_prov_ipmi module.
236 */
237#define	TOPO_PROP_IPMI_ENTITY_LIST	"entity-list"
238
239#define	TOPO_PGROUP_SLOT		"slot"
240#define	TOPO_PROP_SLOT_TYPE		"slot-type"
241
242#define	TOPO_PGROUP_DIMM_SLOT		"dimm-slot"
243#define	TOPO_PROP_DIMM_SLOT_FORM	"form-factor"
244#define	TOPO_DIMM_SLOT_FORM_DIMM	"DIMM"
245#define	TOPO_DIMM_SLOT_FORM_SODIMM	"SODIMM"
246#define	TOPO_DIMM_SLOT_FORM_FBDIMM	"FBDIMM"
247
248#define	TOPO_PGROUP_DIMM_PROPS		"dimm-properties"
249#define	TOPO_PROP_DIMM_TYPE
250#define	TOPO_DIMM_TYPE_UNKNOWN		"UNKNOWN"
251#define	TOPO_DIMM_TYPE_DDR		"DDR"
252#define	TOPO_DIMM_TYPE_DDR2		"DDR2"
253#define	TOPO_DIMM_TYPE_DDR3		"DDR3"
254#define	TOPO_DIMM_TYPE_DDR4		"DDR4"
255#define	TOPO_DIMM_TYPE_LPDDR		"LPDDR"
256#define	TOPO_DIMM_TYPE_LPDDR2		"LPDDR2"
257#define	TOPO_DIMM_TYPE_LPDDR3		"LPDDR3"
258#define	TOPO_DIMM_TYPE_LPDDR4		"LPDDR4"
259
260#define	TOPO_PGROUP_MOTHERBOARD		"motherboard-properties"
261#define	TOPO_PROP_MB_MANUFACTURER	"manufacturer"
262#define	TOPO_PROP_MB_PRODUCT		"product-id"
263#define	TOPO_PROP_MB_ASSET		"asset-tag"
264#define	TOPO_PROP_MB_FIRMWARE_VENDOR	"firmware-vendor"
265#define	TOPO_PROP_MB_FIRMWARE_RELDATE	"firmware-release-date"
266
267#define	TOPO_PGROUP_UFM			"ufm-properties"
268#define	TOPO_PROP_UFM_DESCR		"ufm-description"
269
270#define	TOPO_PGROUP_UFM_SLOT		"ufm-slot-properties"
271#define	TOPO_PROP_UFM_SLOT_VERSION	"ufm-slot-version"
272#define	TOPO_PROP_UFM_SLOT_MODE		"ufm-slot-mode"
273#define	TOPO_PROP_UFM_SLOT_ACTIVE	"ufm-slot-active"
274
275#define	TOPO_PGROUP_DATALINK		"datalink"
276#define	TOPO_PGROUP_DATALINK_PMAC	"primary-mac-address"
277#define	TOPO_PGROUP_DATALINK_LINK_SPEED		"link-speed"
278#define	TOPO_PGROUP_DATALINK_LINK_STATUS	"link-status"
279#define	TOPO_PGROUP_DATALINK_LINK_STATUS_UP	"up"
280#define	TOPO_PGROUP_DATALINK_LINK_STATUS_DOWN	"down"
281#define	TOPO_PGROUP_DATALINK_LINK_STATUS_UNKNOWN	"unknown"
282#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX	"link-duplex"
283#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX_FULL	"full"
284#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX_HALF	"half"
285#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX_UNKNOWN	"unknown"
286#define	TOPO_PGROUP_DATALINK_LINK_NAME		"link-name"
287
288#define	TOPO_PGROUP_NVME		"nvme-properties"
289#define	TOPO_PROP_NVME_VER		"nvme-version"
290
291#ifdef	__cplusplus
292}
293#endif
294
295#endif	/* _TOPO_HC_H */
296