@@ -17,6 +17,24 @@ properties:
17
17
$nodename :
18
18
pattern : " ^pcie-ep@"
19
19
20
+ iommu-map :
21
+ $ref : /schemas/types.yaml#/definitions/uint32-matrix
22
+ items :
23
+ items :
24
+ - description : Device ID (see msi-map) base
25
+ maximum : 0x7ffff
26
+ - description : phandle to IOMMU
27
+ - description : IOMMU specifier base (currently always 1 cell)
28
+ - description : Number of Device IDs
29
+ maximum : 0x80000
30
+
31
+ iommu-map-mask :
32
+ description :
33
+ A mask to be applied to each Device ID prior to being mapped to an
34
+ IOMMU specifier per the iommu-map property.
35
+ $ref : /schemas/types.yaml#/definitions/uint32
36
+ maximum : 0x7ffff
37
+
20
38
max-functions :
21
39
description : Maximum number of functions that can be configured
22
40
$ref : /schemas/types.yaml#/definitions/uint8
@@ -35,6 +53,56 @@ properties:
35
53
$ref : /schemas/types.yaml#/definitions/uint32
36
54
enum : [ 1, 2, 3, 4 ]
37
55
56
+ msi-map :
57
+ description : |
58
+ Maps a Device ID to an MSI and associated MSI specifier data.
59
+
60
+ A PCI Endpoint (EP) can use MSI as a doorbell function. This is achieved by
61
+ mapping the MSI controller's address into PCI BAR<n>. The PCI Root Complex
62
+ can write to this BAR<n>, triggering the EP to generate IRQ. This notifies
63
+ the EP-side driver of an event, eliminating the need for the driver to
64
+ continuously poll for status changes.
65
+
66
+ However, the EP cannot rely on Requester ID (RID) because the RID is
67
+ determined by the PCI topology of the host system. Since the EP may be
68
+ connected to different PCI hosts, the RID can vary between systems and is
69
+ therefore not a reliable identifier.
70
+
71
+ Each EP can support up to 8 physical functions and up to 65,536 virtual
72
+ functions. To uniquely identify each child device, a device ID is defined
73
+ as
74
+ - Bits [2:0] for the function number (func)
75
+ - Bits [18:3] for the virtual function index (vfunc)
76
+
77
+ The resulting device ID is computed as:
78
+
79
+ (func & 0x7) | (vfunc << 3)
80
+
81
+ The property is an arbitrary number of tuples of
82
+ (device-id-base, msi, msi-base,length).
83
+
84
+ Any Device ID id in the interval [id-base, id-base + length) is
85
+ associated with the listed MSI, with the MSI specifier
86
+ (id - id-base + msi-base).
87
+ $ref : /schemas/types.yaml#/definitions/uint32-matrix
88
+ items :
89
+ items :
90
+ - description : The Device ID base matched by the entry
91
+ maximum : 0x7ffff
92
+ - description : phandle to msi-controller node
93
+ - description : (optional) The msi-specifier produced for the first
94
+ Device ID matched by the entry. Currently, msi-specifier is 0 or
95
+ 1 cells.
96
+ - description : The length of consecutive Device IDs following the
97
+ Device ID base
98
+ maximum : 0x80000
99
+
100
+ msi-map-mask :
101
+ description : A mask to be applied to each Device ID prior to being
102
+ mapped to an msi-specifier per the msi-map property.
103
+ $ref : /schemas/types.yaml#/definitions/uint32
104
+ maximum : 0x7ffff
105
+
38
106
num-lanes :
39
107
description : maximum number of lanes
40
108
$ref : /schemas/types.yaml#/definitions/uint32
0 commit comments