1description: >
2    This defines a PCIe device to be exposed for system management.  It includes
3    the device properties and function properties for all 8 possible functions
4    that are needed for the device identification.
5
6properties:
7    - name: DeviceType
8      type: string
9      description: >
10          Indicates if the device is MultiFunction or SingleFunction.
11    - name: GenerationInUse
12      type: enum[xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations]
13      default: "Unknown"
14      description: >
15          The PCIe interface generation in use by the device.
16    - name: GenerationSupported
17      type: enum[xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations]
18      default: "Unknown"
19      description: >
20          The maximum PCIe generation supported by the device.
21
22    - name: Function0ClassCode
23      type: string
24      description: >
25          The Class Code for this function.
26    - name: Function0DeviceClass
27      type: string
28      description: >
29          The Device Class for this function.
30    - name: Function0DeviceId
31      type: string
32      description: >
33          The Device ID for this function.
34    - name: Function0FunctionType
35      type: string
36      description: >
37          Indicates if the function is Physical or Virtual
38    - name: Function0RevisionId
39      type: string
40      description: >
41          The Revision ID for this function.
42    - name: Function0SubsystemId
43      type: string
44      description: >
45          The Subsystem ID for this function.
46    - name: Function0SubsystemVendorId
47      type: string
48      description: >
49          The Subsystem Vendor ID for this function.
50    - name: Function0VendorId
51      type: string
52      description: >
53          The Vendor ID for this function.
54
55    - name: Function1ClassCode
56      type: string
57      description: >
58          The Class Code for this function.
59    - name: Function1DeviceClass
60      type: string
61      description: >
62          The Device Class for this function.
63    - name: Function1DeviceId
64      type: string
65      description: >
66          The Device ID for this function.
67    - name: Function1FunctionType
68      type: string
69      description: >
70          Indicates if the function is Physical or Virtual
71    - name: Function1RevisionId
72      type: string
73      description: >
74          The Revision ID for this function.
75    - name: Function1SubsystemId
76      type: string
77      description: >
78          The Subsystem ID for this function.
79    - name: Function1SubsystemVendorId
80      type: string
81      description: >
82          The Subsystem Vendor ID for this function.
83    - name: Function1VendorId
84      type: string
85      description: >
86          The Vendor ID for this function.
87
88    - name: Function2ClassCode
89      type: string
90      description: >
91          The Class Code for this function.
92    - name: Function2DeviceClass
93      type: string
94      description: >
95          The Device Class for this function.
96    - name: Function2DeviceId
97      type: string
98      description: >
99          The Device ID for this function.
100    - name: Function2FunctionType
101      type: string
102      description: >
103          Indicates if the function is Physical or Virtual
104    - name: Function2RevisionId
105      type: string
106      description: >
107          The Revision ID for this function.
108    - name: Function2SubsystemId
109      type: string
110      description: >
111          The Subsystem ID for this function.
112    - name: Function2SubsystemVendorId
113      type: string
114      description: >
115          The Subsystem Vendor ID for this function.
116    - name: Function2VendorId
117      type: string
118      description: >
119          The Vendor ID for this function.
120
121    - name: Function3ClassCode
122      type: string
123      description: >
124          The Class Code for this function.
125    - name: Function3DeviceClass
126      type: string
127      description: >
128          The Device Class for this function.
129    - name: Function3DeviceId
130      type: string
131      description: >
132          The Device ID for this function.
133    - name: Function3FunctionType
134      type: string
135      description: >
136          Indicates if the function is Physical or Virtual
137    - name: Function3RevisionId
138      type: string
139      description: >
140          The Revision ID for this function.
141    - name: Function3SubsystemId
142      type: string
143      description: >
144          The Subsystem ID for this function.
145    - name: Function3SubsystemVendorId
146      type: string
147      description: >
148          The Subsystem Vendor ID for this function.
149    - name: Function3VendorId
150      type: string
151      description: >
152          The Vendor ID for this function.
153
154    - name: Function4ClassCode
155      type: string
156      description: >
157          The Class Code for this function.
158    - name: Function4DeviceClass
159      type: string
160      description: >
161          The Device Class for this function.
162    - name: Function4DeviceId
163      type: string
164      description: >
165          The Device ID for this function.
166    - name: Function4FunctionType
167      type: string
168      description: >
169          Indicates if the function is Physical or Virtual
170    - name: Function4RevisionId
171      type: string
172      description: >
173          The Revision ID for this function.
174    - name: Function4SubsystemId
175      type: string
176      description: >
177          The Subsystem ID for this function.
178    - name: Function4SubsystemVendorId
179      type: string
180      description: >
181          The Subsystem Vendor ID for this function.
182    - name: Function4VendorId
183      type: string
184      description: >
185          The Vendor ID for this function.
186
187    - name: Function5ClassCode
188      type: string
189      description: >
190          The Class Code for this function.
191    - name: Function5DeviceClass
192      type: string
193      description: >
194          The Device Class for this function.
195    - name: Function5DeviceId
196      type: string
197      description: >
198          The Device ID for this function.
199    - name: Function5FunctionType
200      type: string
201      description: >
202          Indicates if the function is Physical or Virtual
203    - name: Function5RevisionId
204      type: string
205      description: >
206          The Revision ID for this function.
207    - name: Function5SubsystemId
208      type: string
209      description: >
210          The Subsystem ID for this function.
211    - name: Function5SubsystemVendorId
212      type: string
213      description: >
214          The Subsystem Vendor ID for this function.
215    - name: Function5VendorId
216      type: string
217      description: >
218          The Vendor ID for this function.
219
220    - name: Function6ClassCode
221      type: string
222      description: >
223          The Class Code for this function.
224    - name: Function6DeviceClass
225      type: string
226      description: >
227          The Device Class for this function.
228    - name: Function6DeviceId
229      type: string
230      description: >
231          The Device ID for this function.
232    - name: Function6FunctionType
233      type: string
234      description: >
235          Indicates if the function is Physical or Virtual
236    - name: Function6RevisionId
237      type: string
238      description: >
239          The Revision ID for this function.
240    - name: Function6SubsystemId
241      type: string
242      description: >
243          The Subsystem ID for this function.
244    - name: Function6SubsystemVendorId
245      type: string
246      description: >
247          The Subsystem Vendor ID for this function.
248    - name: Function6VendorId
249      type: string
250      description: >
251          The Vendor ID for this function.
252
253    - name: Function7ClassCode
254      type: string
255      description: >
256          The Class Code for this function.
257    - name: Function7DeviceClass
258      type: string
259      description: >
260          The Device Class for this function.
261    - name: Function7DeviceId
262      type: string
263      description: >
264          The Device ID for this function.
265    - name: Function7FunctionType
266      type: string
267      description: >
268          Indicates if the function is Physical or Virtual
269    - name: Function7RevisionId
270      type: string
271      description: >
272          The Revision ID for this function.
273    - name: Function7SubsystemId
274      type: string
275      description: >
276          The Subsystem ID for this function.
277    - name: Function7SubsystemVendorId
278      type: string
279      description: >
280          The Subsystem Vendor ID for this function.
281    - name: Function7VendorId
282      type: string
283      description: >
284          The Vendor ID for this function.
285
286    - name: MaxLanes
287      type: size
288      default: 0
289      description: >
290          The maximum number of PCIe lanes supported by the PCIe Device
291
292    - name: LanesInUse
293      type: size
294      default: 0
295      description: >
296          The number of PCIe lanes in use by this device.
297
298associations:
299    - name: upstream_pcie_slot
300      description: >
301          Objects that implement PCIeDevice can optionally implement the
302          upstream_pcie_slot association to provide a link back to a PCIe slot.
303      reverse_names:
304          - associated_pcie_device
305      required_endpoint_interfaces:
306          - xyz.openbmc_project.Inventory.Item.PCIeSlot
307