summaryrefslogtreecommitdiff
path: root/usr/src/lib/fm/topo/libtopo/common/topo_hc.h
blob: 1e5589b78c43a5eb711e2f0fb9985c073c184c83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (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) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
 * Copyright 2020 Joyent, Inc.
 */

#ifndef _TOPO_HC_H
#define	_TOPO_HC_H

#ifdef	__cplusplus
extern "C" {
#endif

/*
 * Allowable hardware component names for hc FMRIs
 */
#define	BANK		"bank"
#define	BAY		"bay"
#define	BLADE		"blade"
#define	BRANCH		"branch"
#define	CMP		"CMP"
#define	CENTERPLANE	"centerplane"
#define	CHASSIS		"chassis"
#define	CHIP		"chip"
#define	CHIPSET		"chipset"
#define	CORE		"core"
#define	STRAND		"strand"
#define	CHIP_SELECT	"chip-select"
#define	CONTROLLER	"controller"
#define	CPU		"cpu"
#define	CPUBOARD	"cpuboard"
#define	DIMM		"dimm"
#define	DISK		"disk"
#define	DRAM		"dram"
#define	DRAMCHANNEL	"dram-channel"
#define	FAN		"fan"
#define	FANBOARD	"fanboard"
#define	FANMODULE	"fanmodule"
#define	HBA		"hba"
#define	HOSTBRIDGE	"hostbridge"
#define	INTERCONNECT	"interconnect"
#define	IOBOARD		"ioboard"
#define	IPORT		"iport"
#define	MEMBOARD	"memboard"
#define	MEMORYBUFFER	"memory-buffer"
#define	MEMORYCONTROL	"memory-controller"
#define	MICROCORE	"micro-core"
#define	MOTHERBOARD	"motherboard"
#define	NIU		"niu"
#define	NIUFN		"niufn"
#define	NVME		"nvme"
#define	PCI_BUS		"pcibus"
#define	PCI_DEVICE	"pcidev"
#define	PCI_FUNCTION    "pcifn"
#define	PCIEX_BUS	"pciexbus"
#define	PCIEX_DEVICE	"pciexdev"
#define	PCIEX_FUNCTION  "pciexfn"
#define	PCIEX_ROOT	"pciexrc"
#define	PCIEX_SWUP	"pciexswu"
#define	PCIEX_SWDWN	"pciexswd"
#define	PORT		"port"
#define	POWERBOARD	"powerboard"
#define	POWERMODULE	"powermodule"
#define	PSU		"psu"
#define	RANK		"rank"
#define	RECEPTACLE	"receptacle"
#define	RISER		"riser"
#define	SASEXPANDER	"sas-expander"
#define	SHELF		"shelf"
#define	SCSI_DEVICE	"scsi-device"
#define	SES_ENCLOSURE	"ses-enclosure"
#define	SLOT		"slot"
#define	SMP_DEVICE	"smp-device"
#define	SP		"sp"
#define	SUBCHASSIS	"subchassis"
#define	SYSTEMBOARD	"systemboard"
#define	TRANSCEIVER	"transceiver"
#define	UFM		"ufm"
#define	USB_DEVICE	"usb-device"
#define	XAUI		"xaui"
#define	XFP		"xfp"

/*
 * Allowable hc node property group and property names
 */
#define	TOPO_PGROUP_IO		"io"
#define	TOPO_IO_DEVTYPE		"devtype"
#define	TOPO_IO_DRIVER		"driver"
#define	TOPO_IO_INSTANCE	"instance"
#define	TOPO_IO_MODULE		"module"
#define	TOPO_IO_DEV		"dev"
#define	TOPO_IO_DEVID		"devid"
#define	TOPO_IO_DEV_PATH	"devfs-path"
#define	TOPO_IO_AP_PATH		"ap-path"
#define	TOPO_IO_PHYS_PATH	"phys-path"

#define	TOPO_PGROUP_PCI		"pci"
#define	TOPO_PCI_VENDID		"vendor-id"
#define	TOPO_PCI_VENDNM		"vendor-name"
#define	TOPO_PCI_SUBSYSNM	"subsystem-name"
#define	TOPO_PCI_DEVID		"device-id"
#define	TOPO_PCI_DEVNM		"device-name"
#define	TOPO_PCI_EXCAP		"extended-capabilities"
#define	TOPO_PCI_BDF		"BDF"
#define	TOPO_PCI_CLASS		"class-code"
#define	TOPO_PCI_AADDR		"assigned-addresses"

#define	TOPO_PCI_MAX_WIDTH	"link-maximum-width"
#define	TOPO_PCI_CUR_WIDTH	"link-current-width"
#define	TOPO_PCI_MAX_SPEED	"link-maximum-speed"
#define	TOPO_PCI_CUR_SPEED	"link-current-speed"
#define	TOPO_PCI_SUP_SPEED	"link-supported-speeds"
#define	TOPO_PCI_ADMIN_SPEED	"link-admin-target-speed"

#define	TOPO_PGROUP_BINDING	"binding"
#define	TOPO_BINDING_OCCUPANT	"occupant-path"
#define	TOPO_BINDING_DRIVER	"driver"
#define	TOPO_BINDING_DEVCTL	"devctl"
#define	TOPO_BINDING_ENCLOSURE	"enclosure"
#define	TOPO_BINDING_SLOT	"slot"
#define	TOPO_BINDING_PORT	"port"
#define	TOPO_BINDING_PARENT_DEV	"parent-device"

#define	TOPO_PGROUP_STORAGE	"storage"
#define	TOPO_STORAGE_INITIATOR_PORT	"initiator-port"
#define	TOPO_STORAGE_INITIATOR_PORT_PM	"initiator-port-pm"
#define	TOPO_STORAGE_TARGET_PORT	"target-port"
#define	TOPO_STORAGE_TARGET_PORT_L0ID	"target-port-l0id"
#define	TOPO_STORAGE_TARGET_PORT_L0IDS	"target-port-l0ids"
#define	TOPO_STORAGE_ATTACHED_PORT	"attached-port"
#define	TOPO_STORAGE_TARGET_PORT_PM	"target-port-pm"
#define	TOPO_STORAGE_ATTACHED_PORT_PM	"attached-port-pm"
#define	TOPO_STORAGE_DEVID		"devid"
#define	TOPO_STORAGE_LUN64		"lun64"
#define	TOPO_STORAGE_DEVICE_TYPE	"inquiry-device-type"
#define	TOPO_STORAGE_MANUFACTURER	"manufacturer"
#define	TOPO_STORAGE_MODEL		"model"
#define	TOPO_STORAGE_FIRMWARE_REV	"firmware-revision"
#define	TOPO_STORAGE_SAS_PHY_MASK	"receptacle-pm"
#define	TOPO_STORAGE_SAS_CONNECTOR_TYPE	"sas-connector-type"

#define	TOPO_PGROUP_SES		"ses"
/* Applied  any SES standard related topo node. */
#define	TOPO_PROP_NODE_ID	"node-id"
#define	TOPO_PROP_TARGET_PATH	"target-path"
#define	TOPO_PROP_SES_DEVID	"ses-devid"
#define	TOPO_PROP_SES_DEV_PATH	"ses-devfs-path"
#define	TOPO_PROP_SES_PHYS_PATH	"ses-phys-path"
#define	TOPO_PROP_SES_TARGET_PORT "ses-target-port"

#define	TOPO_PGROUP_SMP		"smp"
/* host SMP target related info for an expander node. */
#define	TOPO_PROP_SMP_DEVID	"smp-devid"
#define	TOPO_PROP_SMP_DEV_PATH	"smp-devfs-path"
#define	TOPO_PROP_SMP_PHYS_PATH	"smp-phys-path"
#define	TOPO_PROP_SMP_TARGET_PORT	"smp-target-port"
#define	TOPO_PROP_SAS_ADDR	"sas-address"
#define	TOPO_PROP_PHY_COUNT	"phy-count"
#define	TOPO_PROP_PATHS		"paths"
#define	TOPO_PROP_CHASSIS_TYPE	"chassis-type"
#define	TOPO_PROP_SAS_PHY_MASK	"phy-mask"
#define	TOPO_PROP_SAS_CONNECTOR_TYPE	"sas-connector-type"

#define	TOPO_PGROUP_PORT	"port"
#define	TOPO_PROP_PORT_TYPE	"type"
#define	TOPO_PROP_PORT_TYPE_SFF	"sff"
#define	TOPO_PROP_PORT_TYPE_USB	"usb"
#define	TOPO_PROP_PORT_TYPE_UNKNOWN	"unknown"

#define	TOPO_PGROUP_TRANSCEIVER	"transceiver"
#define	TOPO_PROP_TRANSCEIVER_TYPE	"type"
#define	TOPO_PROP_TRANSCEIVER_USABLE	"usable"

#define	TOPO_PGROUP_SFF_TRANSCEIVER	"sff-transceiver"
#define	TOPO_PORT_SFF_TRANSCEIVER_VENDOR	"vendor"
#define	TOPO_PORT_SFF_TRANSCEIVER_PN	"part-number"
#define	TOPO_PORT_SFF_TRANSCEIVER_REV	"revision"
#define	TOPO_PORT_SFF_TRANSCEIVER_SN	"serial-number"

#define	TOPO_PGROUP_USB_PORT	"usb-port"
#define	TOPO_PROP_USB_PORT_LPORTS	"logical-ports"
#define	TOPO_PROP_USB_PORT_VERSIONS	"usb-versions"
#define	TOPO_PROP_USB_PORT_TYPE		"port-type"
#define	TOPO_PROP_USB_PORT_ATTRIBUTES	"port-attributes"
#define	TOPO_PROP_USB_PORT_A_VISIBLE	"user-visible"
#define	TOPO_PROP_USB_PORT_A_CONNECTED	"port-connected"
#define	TOPO_PROP_USB_PORT_A_DISCONNECTED	"port-disconnected"
#define	TOPO_PROP_USB_PORT_A_EXTERNAL	"external-port"
#define	TOPO_PROP_USB_PORT_A_INTERNAL	"internal-port"
#define	TOPO_PROP_USB_PORT_NATTRS	5

#define	TOPO_PGROUP_USB_PROPS	"usb-properties"
#define	TOPO_PGROUP_USB_PROPS_VID	"usb-vendor-id"
#define	TOPO_PGROUP_USB_PROPS_PID	"usb-product-id"
#define	TOPO_PGROUP_USB_PROPS_REV	"usb-revision-id"
#define	TOPO_PGROUP_USB_PROPS_VNAME	"usb-vendor-name"
#define	TOPO_PGROUP_USB_PROPS_PNAME	"usb-product-name"
#define	TOPO_PGROUP_USB_PROPS_SN	"usb-serialno"
#define	TOPO_PGROUP_USB_PROPS_VERSION	"usb-version"
#define	TOPO_PGROUP_USB_PROPS_SPEED	"usb-speed"
#define	TOPO_PGROUP_USB_PROPS_PORT	"usb-port"
#define	TOPO_PGROUP_USB_PROPS_SUPPORTED_SPEEDS	"usb-supported-speeds"
#define	TOPO_PGROUP_USB_PROPS_MIN_SPEED	"usb-minimum-speed"


/*
 * These properties will exist on nodes enumerated by the ipmi module. They
 * are consumed by the fac_prov_ipmi module
 */
#define	TOPO_PROP_IPMI_ENTITY_ID	"entity-id"
#define	TOPO_PROP_IPMI_ENTITY_INST	"entity-instance"

/*
 * This property can be statically set in a map file and is consumed by the
 * fac_prov_ipmi module.
 */
#define	TOPO_PROP_IPMI_ENTITY_LIST	"entity-list"

/*
 * These properties can be used to describe the network configuration of a
 * given hardware components.  They're currently used to describe the
 * network config on the service processor (sp)
 */
#define	TOPO_PGROUP_NETCFG		"network-config"
#define	TOPO_PROP_NETCFG_MACADDR	"mac-address"
#define	TOPO_PROP_NETCFG_VLAN_ID	"vlan-id"
#define	TOPO_PROP_NETCFG_IPV4_ADDR	"ipv4-address"
#define	TOPO_PROP_NETCFG_IPV4_SUBNET	"ipv4-subnet"
#define	TOPO_PROP_NETCFG_IPV4_GATEWAY	"ipv4-gateway"
#define	TOPO_PROP_NETCFG_IPV4_TYPE	"ipv4-config-type"
#define	TOPO_PROP_NETCFG_IPV6_ADDR	"ipv6-address"
#define	TOPO_PROP_NETCFG_IPV6_ROUTES	"ipv6-routes"
#define	TOPO_PROP_NETCFG_IPV6_TYPE	"ipv6-config-type"

/* Possible values for TOPO_PROP_NETCFG_TYPE */
#define	TOPO_NETCFG_TYPE_UNKNOWN	"unknown"
#define	TOPO_NETCFG_TYPE_STATIC		"static"
#define	TOPO_NETCFG_TYPE_DHCP		"dhcp"

#define	TOPO_PGROUP_SLOT		"slot"
#define	TOPO_PROP_SLOT_TYPE		"slot-type"

#define	TOPO_PGROUP_DIMM_SLOT		"dimm-slot"
#define	TOPO_PROP_DIMM_SLOT_FORM	"form-factor"
#define	TOPO_DIMM_SLOT_FORM_DIMM	"DIMM"
#define	TOPO_DIMM_SLOT_FORM_SODIMM	"SODIMM"
#define	TOPO_DIMM_SLOT_FORM_FBDIMM	"FBDIMM"

#define	TOPO_PGROUP_DIMM_PROPS		"dimm-properties"
#define	TOPO_PROP_DIMM_TYPE
#define	TOPO_DIMM_TYPE_UNKNOWN		"UNKNOWN"
#define	TOPO_DIMM_TYPE_DDR		"DDR"
#define	TOPO_DIMM_TYPE_DDR2		"DDR2"
#define	TOPO_DIMM_TYPE_DDR3		"DDR3"
#define	TOPO_DIMM_TYPE_DDR4		"DDR4"
#define	TOPO_DIMM_TYPE_LPDDR		"LPDDR"
#define	TOPO_DIMM_TYPE_LPDDR2		"LPDDR2"
#define	TOPO_DIMM_TYPE_LPDDR3		"LPDDR3"
#define	TOPO_DIMM_TYPE_LPDDR4		"LPDDR4"

#define	TOPO_PGROUP_MOTHERBOARD		"motherboard-properties"
#define	TOPO_PROP_MB_MANUFACTURER	"manufacturer"
#define	TOPO_PROP_MB_PRODUCT		"product-id"
#define	TOPO_PROP_MB_ASSET		"asset-tag"
#define	TOPO_PROP_MB_FIRMWARE_VENDOR	"firmware-vendor"
#define	TOPO_PROP_MB_FIRMWARE_RELDATE	"firmware-release-date"

#define	TOPO_PGROUP_UFM			"ufm-properties"
#define	TOPO_PROP_UFM_DESCR		"ufm-description"

#define	TOPO_PGROUP_UFM_SLOT		"ufm-slot-properties"
#define	TOPO_PROP_UFM_SLOT_VERSION	"ufm-slot-version"
#define	TOPO_PROP_UFM_SLOT_MODE		"ufm-slot-mode"
#define	TOPO_PROP_UFM_SLOT_ACTIVE	"ufm-slot-active"

#define	TOPO_PGROUP_DATALINK		"datalink"
#define	TOPO_PGROUP_DATALINK_PMAC	"primary-mac-address"
#define	TOPO_PGROUP_DATALINK_LINK_SPEED		"link-speed"
#define	TOPO_PGROUP_DATALINK_LINK_STATUS	"link-status"
#define	TOPO_PGROUP_DATALINK_LINK_STATUS_UP	"up"
#define	TOPO_PGROUP_DATALINK_LINK_STATUS_DOWN	"down"
#define	TOPO_PGROUP_DATALINK_LINK_STATUS_UNKNOWN	"unknown"
#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX	"link-duplex"
#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX_FULL	"full"
#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX_HALF	"half"
#define	TOPO_PGROUP_DATALINK_LINK_DUPLEX_UNKNOWN	"unknown"
#define	TOPO_PGROUP_DATALINK_LINK_NAME		"link-name"

#define	TOPO_PGROUP_NVME		"nvme-properties"
#define	TOPO_PROP_NVME_VER		"nvme-version"

#ifdef	__cplusplus
}
#endif

#endif	/* _TOPO_HC_H */