blob: 214caa4ec3d51241d5721c6c8026c3e13d9b30ba [file] [log] [blame]
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pci/pci-ep.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: PCI Endpoint Controller
description: |
Common properties for PCI Endpoint Controller Nodes.
maintainers:
- Kishon Vijay Abraham I <kishon@kernel.org>
- Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
properties:
$nodename:
pattern: "^pcie-ep@"
iommu-map:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Device ID (see msi-map) base
maximum: 0x7ffff
- description: phandle to IOMMU
- description: IOMMU specifier base (currently always 1 cell)
- description: Number of Device IDs
maximum: 0x80000
iommu-map-mask:
description:
A mask to be applied to each Device ID prior to being mapped to an
IOMMU specifier per the iommu-map property.
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 0x7ffff
max-functions:
description: Maximum number of functions that can be configured
$ref: /schemas/types.yaml#/definitions/uint8
minimum: 1
default: 1
maximum: 255
max-virtual-functions:
description: Array representing the number of virtual functions corresponding to each physical
function
$ref: /schemas/types.yaml#/definitions/uint8-array
minItems: 1
maxItems: 255
max-link-speed:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [ 1, 2, 3, 4 ]
msi-map:
description: |
Maps a Device ID to an MSI and associated MSI specifier data.
A PCI Endpoint (EP) can use MSI as a doorbell function. This is achieved by
mapping the MSI controller's address into PCI BAR<n>. The PCI Root Complex
can write to this BAR<n>, triggering the EP to generate IRQ. This notifies
the EP-side driver of an event, eliminating the need for the driver to
continuously poll for status changes.
However, the EP cannot rely on Requester ID (RID) because the RID is
determined by the PCI topology of the host system. Since the EP may be
connected to different PCI hosts, the RID can vary between systems and is
therefore not a reliable identifier.
Each EP can support up to 8 physical functions and up to 65,536 virtual
functions. To uniquely identify each child device, a device ID is defined
as
- Bits [2:0] for the function number (func)
- Bits [18:3] for the virtual function index (vfunc)
The resulting device ID is computed as:
(func & 0x7) | (vfunc << 3)
The property is an arbitrary number of tuples of
(device-id-base, msi, msi-base,length).
Any Device ID id in the interval [id-base, id-base + length) is
associated with the listed MSI, with the MSI specifier
(id - id-base + msi-base).
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: The Device ID base matched by the entry
maximum: 0x7ffff
- description: phandle to msi-controller node
- description: (optional) The msi-specifier produced for the first
Device ID matched by the entry. Currently, msi-specifier is 0 or
1 cells.
- description: The length of consecutive Device IDs following the
Device ID base
maximum: 0x80000
msi-map-mask:
description: A mask to be applied to each Device ID prior to being
mapped to an msi-specifier per the msi-map property.
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 0x7ffff
num-lanes:
description: maximum number of lanes
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 1
default: 1
maximum: 16
linux,pci-domain:
description:
If present this property assigns a fixed PCI domain number to a PCI
Endpoint Controller, otherwise an unstable (across boots) unique number
will be assigned. It is required to either not set this property at all
or set it for all PCI endpoint controllers in the system, otherwise
potentially conflicting domain numbers may be assigned to endpoint
controllers. The domain number for each endpoint controller in the system
must be unique.
$ref: /schemas/types.yaml#/definitions/uint32
required:
- compatible
additionalProperties: true