bindings: Snapshot of arm-smmu bindings
arm-smmu bindings snapshot from msm-6.1 branch commit 0285b5bf8b6f ("Merge "ARM: dts: msm: Update proxy device settings""). Update documentation format to yaml. Change-Id: If9c8d42c214f5587ba2c3ffbde41b518e724f2df Signed-off-by: Patrick Daly <quic_pdaly@quicinc.com>
This commit is contained in:
@@ -48,6 +48,19 @@ properties:
|
|||||||
- qcom,sm8350-smmu-500
|
- qcom,sm8350-smmu-500
|
||||||
- qcom,sm8450-smmu-500
|
- qcom,sm8450-smmu-500
|
||||||
- const: arm,mmu-500
|
- const: arm,mmu-500
|
||||||
|
- description: |
|
||||||
|
Qcom SoCs implementing "qcom,qsmmu-v500", which is a arm,mmu-500
|
||||||
|
based design with QCOM-designed TBUs and other custom features.
|
||||||
|
|
||||||
|
"qcom,virt-smmu" is a subtype of "qcom,qsmmu-v500" which
|
||||||
|
only supports access to the set of registers required by
|
||||||
|
the arm specificiation. None of the additional registers
|
||||||
|
normally present in qcom,qsmmu-v500 are supported
|
||||||
|
currently.
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- qcom,qsmmu-v500
|
||||||
|
- qcom,virt-smmu
|
||||||
- description: Qcom Adreno GPUs implementing "arm,smmu-v2"
|
- description: Qcom Adreno GPUs implementing "arm,smmu-v2"
|
||||||
items:
|
items:
|
||||||
- enum:
|
- enum:
|
||||||
@@ -172,6 +185,227 @@ properties:
|
|||||||
enabled for any given device.
|
enabled for any given device.
|
||||||
$ref: /schemas/types.yaml#/definitions/phandle
|
$ref: /schemas/types.yaml#/definitions/phandle
|
||||||
|
|
||||||
|
qcom,fatal-asf:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Enable BUG_ON for address size faults. Some hardware requires special
|
||||||
|
fixups to recover from address size faults. Rather than applying the
|
||||||
|
fixups just BUG since address size faults are due to a fundamental
|
||||||
|
programming error from which we don't care about recovering anyways.
|
||||||
|
|
||||||
|
qcom,skip-init:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Disable resetting configuration for all context banks during device
|
||||||
|
reset. This is useful for targets where some context banks are
|
||||||
|
dedicated to other execution environments outside of Linux and those
|
||||||
|
other EEs are programming their own stream match tables, SCTLR, etc.
|
||||||
|
Without setting this option we will trample on their configuration.
|
||||||
|
|
||||||
|
qcom,use-3-lvl-tables:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Some hardware configurations may not be optimized for using a four
|
||||||
|
level page table configuration. Set to use a three level page table
|
||||||
|
instead.
|
||||||
|
|
||||||
|
qcom,context-fault-retry:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Retry iommu faults after a tlb invalidate, if stall-on-fault is enabled.
|
||||||
|
|
||||||
|
qcom,actlr:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint16-array'
|
||||||
|
description: |
|
||||||
|
An array of <sid mask actlr-setting>.
|
||||||
|
Any sid X for which X&~mask==sid will be programmed with the
|
||||||
|
given actlr-setting.
|
||||||
|
|
||||||
|
qcom,disable-atos:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Some hardware may not have full support for atos debugging in tandem
|
||||||
|
with other features like power collapse.
|
||||||
|
|
||||||
|
qcom,regulator-names:
|
||||||
|
description: |
|
||||||
|
List of strings to use with the (.*)-supply property.
|
||||||
|
|
||||||
|
interconnects:
|
||||||
|
items:
|
||||||
|
- description: bus bandwidth request.
|
||||||
|
|
||||||
|
qcom,active-only:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Boolean property which denotes that interconnect votes should be
|
||||||
|
maintained while the CPUSS is awake (active context). The absence of
|
||||||
|
this property makes it so that interconnect votes will be maintained
|
||||||
|
irrespective of the CPUSS' state (awake or asleep).
|
||||||
|
|
||||||
|
qcom,num-context-banks-override:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
description: |
|
||||||
|
Optional integer. Should be set if the hypervisor virtualization is
|
||||||
|
disabled for debugging purposes. When this is done, some context banks
|
||||||
|
managed by hypervisor become visible to HLOS, but should not be accessed.
|
||||||
|
qcom,num-smr-override:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
description: |
|
||||||
|
Optional integer. See qcom,num-context-banks-override.
|
||||||
|
|
||||||
|
qcom,ignore-numpagendxb:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Optional boolean. Indicates if numpagendxb should be ignored in
|
||||||
|
determining the size of the global register address space and context
|
||||||
|
bank address space. If qcom,ignore-numpagendxb, is supplied, we instead
|
||||||
|
use the register space size supplied in the 'reg =' property to
|
||||||
|
determine the locations of the various parts of the global and context
|
||||||
|
bank address spaces.
|
||||||
|
|
||||||
|
qcom,iommu-dma:
|
||||||
|
description: |
|
||||||
|
default
|
||||||
|
Standard iommu translation behaviour. Calling iommu and DMA apis in
|
||||||
|
atomic context is not allowed.
|
||||||
|
bypass
|
||||||
|
DMA APIs will use 1-to-1 translation between dma_addr and phys_addr.
|
||||||
|
fastmap
|
||||||
|
DMA APIs will run faster, but use several orders of magnitude more
|
||||||
|
memory. Also allows using iommu and DMA apis in atomic context.
|
||||||
|
atomic
|
||||||
|
Allows using iommu and DMA apis in atomic context.
|
||||||
|
disabled
|
||||||
|
The iommu client is responsible for allocating an iommu domain.
|
||||||
|
enum:
|
||||||
|
- default
|
||||||
|
- bypass
|
||||||
|
- fastmap
|
||||||
|
- atomic
|
||||||
|
- disabled
|
||||||
|
|
||||||
|
qcom,iommu-faults:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/string-array'
|
||||||
|
description: |
|
||||||
|
default
|
||||||
|
Any faults are treated as fatal errors.
|
||||||
|
no-CFRE
|
||||||
|
Iommu faults do not return an abort to the client hardware.
|
||||||
|
non-fatal
|
||||||
|
Iommu faults do not trigger a kernel panic.
|
||||||
|
stall-disable
|
||||||
|
Iommu faults do not stall the client while the fault interrupt is
|
||||||
|
being handled.
|
||||||
|
|
||||||
|
qcom,iommu-vmid:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
description: |
|
||||||
|
An identifier indicating the security state of the client.
|
||||||
|
|
||||||
|
qcom,iommu-pagetable:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/string-array'
|
||||||
|
description: |
|
||||||
|
default
|
||||||
|
Pagetable coherency defaults to the coherency setting of the IOMMU
|
||||||
|
device.
|
||||||
|
coherent
|
||||||
|
Pagetables are io-coherent.
|
||||||
|
LLC
|
||||||
|
Pagetables may be saved in the system cache. Should not be used if
|
||||||
|
the IOMMU device is io-coherent.
|
||||||
|
LLC_NWA
|
||||||
|
Pagetables may be saved in the system cache is used, and
|
||||||
|
write-allocate hint is disabled.
|
||||||
|
|
||||||
|
qcom,iommu-earlymap:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Support creating mappings in the page-table before Stage 1 translation
|
||||||
|
is enabled.
|
||||||
|
|
||||||
|
qcom,iommu-dma-addr-pool:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint64-array'
|
||||||
|
maxItems: 2
|
||||||
|
description: |
|
||||||
|
Indicates the range of addresses that the dma layer will use. Defaults
|
||||||
|
to <0, SZ_4G> if not present.
|
||||||
|
|
||||||
|
qcom,iommu-geometry:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint64-array'
|
||||||
|
maxItems: 2
|
||||||
|
description: |
|
||||||
|
Defaults to <0, SZ_4G> if not present. Indicates the available IOVA
|
||||||
|
space when the qcom,iommu-dma property is set to "fastmap". The new
|
||||||
|
space created will be a superset of the IOVA range which was created
|
||||||
|
through the qcom,iommu-dma-addr-pool DT property.
|
||||||
|
|
||||||
|
qcom,iommu-msi-size:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
description: |
|
||||||
|
Indicates the amount of space--in bytes--that must be reserved from
|
||||||
|
the client's total IOVA space for mapping MSI registers when the
|
||||||
|
qcom,iommu-dma property is set to "fastmap".
|
||||||
|
|
||||||
|
qcom,iommu-defer-smr-config:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Indicates that the SMRs for the client should not be programmed when the
|
||||||
|
client device is attaching to the SMMU, but when the client's device
|
||||||
|
driver requests it at a later point in time when the client is ready for
|
||||||
|
DMA transfers.
|
||||||
|
"#address-cells":
|
||||||
|
const: 1
|
||||||
|
"#size-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
".*-supply$":
|
||||||
|
description: |
|
||||||
|
Phandle of the regulator that should be powered on during SMMU register
|
||||||
|
access. (.*) is a string from the qcom,regulator-names property.
|
||||||
|
".*qtb@[0-9a-f]+":
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
description: |
|
||||||
|
The qcom,qsmmu-v500 device implements a number of register regions
|
||||||
|
containing debug functionality. Each register region maps to a
|
||||||
|
separate tbu from the arm mmu-500 implementation.
|
||||||
|
"qcom,qtb500" can be used in conjunction with "qcom,qsmmuv500-tbu",
|
||||||
|
as the QTB500 is an implementation of a TBU with different features
|
||||||
|
enhancements than a regular TBU.
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- qcom,qtb500
|
||||||
|
- qcom,qsmmuv500-tbu
|
||||||
|
reg:
|
||||||
|
minItems: 1
|
||||||
|
qcom,stream-id-range:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32-array'
|
||||||
|
description: |
|
||||||
|
Pair of values describing the smallest supported stream-id
|
||||||
|
and the size of the entire set.
|
||||||
|
qcom,iova-width:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
description: |
|
||||||
|
The maximum number of bits that a TBU can support for IOVAs.
|
||||||
|
qcom,opt-out-tbu-halting:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Allow certain TBUs to opt-out from being halted for the ATOS
|
||||||
|
operation to proceed. Halting certain TBUs would cause considerable
|
||||||
|
impact to the system such as deadlocks on demand. Such TBUs can be
|
||||||
|
opted out to be halted from software. Should always be set for pcie.
|
||||||
|
interconnects:
|
||||||
|
items:
|
||||||
|
- description: bus bandwidth request.
|
||||||
|
qcom,num-qtb-ports:
|
||||||
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
description: |
|
||||||
|
Specifies the number of ports that a QTB has for incoming
|
||||||
|
transactions.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
@@ -298,3 +532,22 @@ examples:
|
|||||||
<&mmcc 124>;
|
<&mmcc 124>;
|
||||||
clock-names = "bus", "iface";
|
clock-names = "bus", "iface";
|
||||||
};
|
};
|
||||||
|
- |+
|
||||||
|
iommu@d00000 {
|
||||||
|
compatible = "qcom,qsmmu-v500";
|
||||||
|
reg = <0xd00000 0x10000>;
|
||||||
|
#global-interrupts = <1>;
|
||||||
|
interrupts = <0 73 0>,
|
||||||
|
<0 73 0>;
|
||||||
|
#iommu-cells = <1>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
qtb@1000 {
|
||||||
|
compatible = "qcom,qsmmuv500-tbu";
|
||||||
|
reg = <0x1000 0x1000>;
|
||||||
|
qcom,stream-id-range = <0x800 0x400>;
|
||||||
|
qcom,iova-width = <36>;
|
||||||
|
qcom,num-qtb-ports = <1>;
|
||||||
|
interconnects = <&system_noc 0 &mc_virt 1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Reference in New Issue
Block a user