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