1description: >
2    This defines a PCIe function to be exposed for system management.  It
3    includes the function properties that are shown in the space configuration.
4
5properties:
6    - name: BusNumber
7      type: byte
8      description: >
9          Indicates the Bus number in the BDF byte.
10    - name: DeviceNumber
11      type: byte
12      description: >
13          Indicates the Device number in the BDF byte.
14    - name: FunctionNumber
15      type: byte
16      description: >
17          Indicates the Function number in the BDF byte.
18    - name: DeviceId
19      type: uint16
20      description: >
21          The Device ID for this function.
22    - name: RevisionId
23      type: byte
24      description: >
25          The Revision ID for this function.
26    - name: SubsystemId
27      type: uint16
28      description: >
29          The Subsystem ID for this function.
30    - name: SubsystemVendorId
31      type: uint16
32      description: >
33          The Subsystem Vendor ID for this function.
34    - name: VendorId
35      type: uint16
36      description: >
37          The Vendor ID for this function.
38    - name: BaseClassCode
39      type: byte
40      description: >
41          The Base Class Code for this function.
42    - name: SubClassCode
43      type: byte
44      description: >
45          The SubClass for this function.
46    - name: ProgrammingInterface
47      type: byte
48      description: >
49          The PIFClass Code for this function.
50    - name: DeviceClass
51      type: enum[self.DeviceClasses]
52      default: Unknown
53      description: >
54          The class for this PCIe function.
55    - name: FunctionType
56      type: enum[self.FunctionTypes]
57      default: Unknown
58      description: >
59          Indicates if the function is Physical or Virtual
60
61enumerations:
62    - name: DeviceClasses
63      description: >
64          Possible Device Classes
65      values:
66          - name: Unknown
67            description: >
68                An unknown class
69          - name: Bridge
70            description: >
71                A bridge
72          - name: CommunicationController
73            description: >
74                A communication controller
75          - name: Coprocessor
76            description: >
77                A coprocessor
78          - name: DisplayController
79            description: >
80                A display controller
81          - name: DockingStation
82            description: >
83                A docking station
84          - name: EncryptionController
85            description: >
86                An encryption controller
87          - name: GenericSystemPeripheral
88            description: >
89                A generic system peripheral
90          - name: InputDeviceController
91            description: >
92                An input device controller
93          - name: IntelligentController
94            description: >
95                An intelligent controller
96          - name: MassStorageController
97            description: >
98                A mass storage controller
99          - name: MemoryController
100            description: >
101                A memory controller
102          - name: MultimediaController
103            description: >
104                A multimedia controller
105          - name: NetworkController
106            description: >
107                A network controller
108          - name: NonEssentialInstrumentation
109            description: >
110                A non-essential instrumentation
111          - name: Other
112            description: >
113                Other class. The function Class Code needs to be verified
114          - name: ProcessingAccelerators
115            description: >
116                A processing accelerators
117          - name: Processor
118            description: >
119                A processor
120          - name: SatelliteCommunicationsController
121            description: >
122                A satellite communications controller
123          - name: SerialBusController
124            description: >
125                A serial bus controller
126          - name: SignalProcessingController
127            description: >
128                A signal processing controller
129          - name: UnassignedClass
130            description: >
131                An unassigned class
132          - name: UnclassifiedDevice
133            description: >
134                An unclassified device
135          - name: WirelessController
136            description: >
137                A wireless controller
138
139    - name: FunctionTypes
140      description: >
141          Possible Function Type
142      values:
143          - name: Unknown
144            description: >
145                An unknown function type
146          - name: Physical
147            description: >
148                A physical PCIe function
149          - name: Virtual
150            description: >
151                A virtual PCIe function
152
153associations:
154    - name: exposed_by
155      description: >
156          Objects that implement PCIeFunction can implement the exposed_by
157          association to provide a link back to a PCIe Device.
158      reverse_names:
159          - exposing
160      required_endpoint_interfaces:
161          - xyz.openbmc_project.Inventory.Item.PCIeDevice
162
163    - name: producing
164      description: >
165          Objects that implement PCIeFunction can optionally implement the
166          producing association to provide a link back to an item.
167      reverse_names:
168          - produced_by
169      required_endpoint_interfaces:
170          - xyz.openbmc_project.Inventory.Item.NetworkInterface
171          - xyz.openbmc_project.Inventory.Item.Drive
172          - xyz.openbmc_project.Inventory.Item.StorageController
173