git-subtree-dir: qcom/graphics git-subtree-mainline:2bb579edb5
git-subtree-split:96de6303a2
82 lines
2.9 KiB
Plaintext
82 lines
2.9 KiB
Plaintext
Qualcomm Technologies, Inc. GPU IOMMU
|
|
|
|
Required properties:
|
|
|
|
Required properties:
|
|
- compatible : one of:
|
|
- "qcom,kgsl-smmu-v1"
|
|
- "qcom,kgsl-smmu-v2"
|
|
|
|
- reg : Base address and size of the SMMU.
|
|
|
|
- clocks : List of clocks to be used during SMMU register access. See
|
|
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
|
for information about the format. For each clock specified
|
|
here, there must be a corresponding entry in clock-names
|
|
(see below).
|
|
|
|
- clock-names : List of clock names corresponding to the clocks specified in
|
|
the "clocks" property (above). See
|
|
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
|
for more info.
|
|
- qcom,protect : The GPU register region which must be protected by a CP
|
|
protected mode. On some targets this region must cover
|
|
the entire SMMU register space, on others there
|
|
is a separate aperture for CP to program context banks.
|
|
|
|
Optional properties:
|
|
- qcom,retention : A boolean specifying if retention is supported on this target
|
|
- qcom,global_pt : A boolean specifying if global pagetable should be used.
|
|
When not set we use per process pagetables
|
|
- qcom,hyp_secure_alloc : A bool specifying if the hypervisor is used on this target
|
|
for secure buffer allocation
|
|
|
|
- List of sub nodes, one for each of the translation context banks supported.
|
|
The driver uses the names of these nodes to determine how they are used,
|
|
currently supported names are:
|
|
- gfx3d_user : Used for the 'normal' GPU address space.
|
|
- gfx3d_secure : Used for the content protection address space.
|
|
- gfx3d_secure_alt : Used for the content protection address space for alternative SID.
|
|
|
|
Each sub node has the following required properties:
|
|
|
|
- compatible : "qcom,smmu-kgsl-cb"
|
|
- iommus : Specifies the SID's used by this context bank, this needs to be
|
|
<kgsl_smmu SID> pair, kgsl_smmu is the string parsed by iommu
|
|
driver to match this context bank with the kgsl_smmu device
|
|
defined in iommu device tree. On targets where the msm iommu
|
|
driver is used rather than the arm smmu driver, this property
|
|
may be absent.
|
|
|
|
Example:
|
|
|
|
msm_iommu: qcom,kgsl-iommu@2ca0000 {
|
|
compatible = "qcom,kgsl-smmu-v2";
|
|
reg = <0x2ca0000 0x10000>;
|
|
qcom,protect = <0xa0000 0xc000>;
|
|
clocks = <&clock_mmss clk_gpu_ahb_clk>,
|
|
<&clock_gcc clk_gcc_mmss_bimc_gfx_clk>,
|
|
<&clock_mmss clk_mmss_mmagic_ahb_clk>,
|
|
<&clock_mmss clk_mmss_mmagic_cfg_ahb_clk>;
|
|
clock-names = "gpu_ahb_clk", "bimc_gfx_clk", "mmagic_ahb_clk", "mmagic_cfg_ahb_clk";
|
|
qcom,secure_align_mask = <0xfff>;
|
|
qcom,retention;
|
|
qcom,global_pt;
|
|
|
|
gfx3d_user: gfx3d_user {
|
|
compatible = "qcom,smmu-kgsl-cb";
|
|
iommus = <&kgsl_smmu 0>,
|
|
<&kgsl_smmu 1>;
|
|
};
|
|
|
|
gfx3d_secure: gfx3d_secure {
|
|
compatible = "qcom,smmu-kgsl-cb";
|
|
iommus = <&kgsl_smmu 2>;
|
|
};
|
|
|
|
gfx3d_secure_alt: gfx3d_secure_alt {
|
|
compatible = "qcom,smmu-kgsl-cb";
|
|
iommus = <&kgsl_smmu 2>, <&kgsl_smmu 1>;
|
|
};
|
|
};
|