Merge tag 'linux-kselftest-kunit-fixes-5.11-rc3' of git://git.kernel.org/pub/scm...
[linux/fpc-iii.git] / Documentation / devicetree / bindings / memory-controllers / nvidia,tegra186-mc.yaml
blob611bda38d1872b45282537f81e07c6027b7141ff
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra186-mc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: NVIDIA Tegra186 (and later) SoC Memory Controller
9 maintainers:
10   - Jon Hunter <jonathanh@nvidia.com>
11   - Thierry Reding <thierry.reding@gmail.com>
13 description: |
14   The NVIDIA Tegra186 SoC features a 128 bit memory controller that is split
15   into four 32 bit channels to support LPDDR4 with x16 subpartitions. The MC
16   handles memory requests for 40-bit virtual addresses from internal clients
17   and arbitrates among them to allocate memory bandwidth.
19   Up to 15 GiB of physical memory can be supported. Security features such as
20   encryption of traffic to and from DRAM via general security apertures are
21   available for video and other secure applications, as well as DRAM ECC for
22   automotive safety applications (single bit error correction and double bit
23   error detection).
25 properties:
26   $nodename:
27     pattern: "^memory-controller@[0-9a-f]+$"
29   compatible:
30     items:
31       - enum:
32           - nvidia,tegra186-mc
33           - nvidia,tegra194-mc
35   reg:
36     maxItems: 1
38   interrupts:
39     maxItems: 1
41   "#address-cells":
42     const: 2
44   "#size-cells":
45     const: 2
47   ranges: true
49   dma-ranges: true
51 patternProperties:
52   "^external-memory-controller@[0-9a-f]+$":
53     description:
54       The bulk of the work involved in controlling the external memory
55       controller on NVIDIA Tegra186 and later is performed on the BPMP. This
56       coprocessor exposes the EMC clock that is used to set the frequency at
57       which the external memory is clocked and a remote procedure call that
58       can be used to obtain the set of available frequencies.
59     type: object
60     properties:
61       compatible:
62         items:
63           - enum:
64               - nvidia,tegra186-emc
65               - nvidia,tegra194-emc
67       reg:
68         maxItems: 1
70       interrupts:
71         maxItems: 1
73       clocks:
74         items:
75           - description: external memory clock
77       clock-names:
78         items:
79           - const: emc
81       nvidia,bpmp:
82         $ref: /schemas/types.yaml#/definitions/phandle
83         description:
84           phandle of the node representing the BPMP
86 required:
87   - compatible
88   - reg
89   - interrupts
90   - "#address-cells"
91   - "#size-cells"
93 additionalProperties: false
95 examples:
96   - |
97     #include <dt-bindings/clock/tegra186-clock.h>
98     #include <dt-bindings/interrupt-controller/arm-gic.h>
100     bus {
101         #address-cells = <2>;
102         #size-cells = <2>;
104         memory-controller@2c00000 {
105             compatible = "nvidia,tegra186-mc";
106             reg = <0x0 0x02c00000 0x0 0xb0000>;
107             interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
109             #address-cells = <2>;
110             #size-cells = <2>;
112             ranges = <0x0 0x02c00000 0x0 0x02c00000 0x0 0xb0000>;
114             /*
115              * Memory clients have access to all 40 bits that the memory
116              * controller can address.
117              */
118             dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
120             external-memory-controller@2c60000 {
121                 compatible = "nvidia,tegra186-emc";
122                 reg = <0x0 0x02c60000 0x0 0x50000>;
123                 interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
124                 clocks = <&bpmp TEGRA186_CLK_EMC>;
125                 clock-names = "emc";
127                 nvidia,bpmp = <&bpmp>;
128             };
129         };
130     };
132     bpmp: bpmp {
133         compatible = "nvidia,tegra186-bpmp";
134         #clock-cells = <1>;
135     };