1*2eb4d8dcSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*2eb4d8dcSEmmanuel Vadot%YAML 1.2
3*2eb4d8dcSEmmanuel Vadot---
4*2eb4d8dcSEmmanuel Vadot$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra20-mc.yaml#
5*2eb4d8dcSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*2eb4d8dcSEmmanuel Vadot
7*2eb4d8dcSEmmanuel Vadottitle: NVIDIA Tegra20 SoC Memory Controller
8*2eb4d8dcSEmmanuel Vadot
9*2eb4d8dcSEmmanuel Vadotmaintainers:
10*2eb4d8dcSEmmanuel Vadot  - Dmitry Osipenko <digetx@gmail.com>
11*2eb4d8dcSEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
12*2eb4d8dcSEmmanuel Vadot  - Thierry Reding <thierry.reding@gmail.com>
13*2eb4d8dcSEmmanuel Vadot
14*2eb4d8dcSEmmanuel Vadotdescription: |
15*2eb4d8dcSEmmanuel Vadot  The Tegra20 Memory Controller merges request streams from various client
16*2eb4d8dcSEmmanuel Vadot  interfaces into request stream(s) for the various memory target devices,
17*2eb4d8dcSEmmanuel Vadot  and returns response data to the various clients. The Memory Controller
18*2eb4d8dcSEmmanuel Vadot  has a configurable arbitration algorithm to allow the user to fine-tune
19*2eb4d8dcSEmmanuel Vadot  performance among the various clients.
20*2eb4d8dcSEmmanuel Vadot
21*2eb4d8dcSEmmanuel Vadot  Tegra20 Memory Controller includes the GART (Graphics Address Relocation
22*2eb4d8dcSEmmanuel Vadot  Table) which allows Memory Controller to provide a linear view of a
23*2eb4d8dcSEmmanuel Vadot  fragmented memory pages.
24*2eb4d8dcSEmmanuel Vadot
25*2eb4d8dcSEmmanuel Vadotproperties:
26*2eb4d8dcSEmmanuel Vadot  compatible:
27*2eb4d8dcSEmmanuel Vadot    const: nvidia,tegra20-mc-gart
28*2eb4d8dcSEmmanuel Vadot
29*2eb4d8dcSEmmanuel Vadot  reg:
30*2eb4d8dcSEmmanuel Vadot    items:
31*2eb4d8dcSEmmanuel Vadot      - description: controller registers
32*2eb4d8dcSEmmanuel Vadot      - description: GART registers
33*2eb4d8dcSEmmanuel Vadot
34*2eb4d8dcSEmmanuel Vadot  clocks:
35*2eb4d8dcSEmmanuel Vadot    maxItems: 1
36*2eb4d8dcSEmmanuel Vadot
37*2eb4d8dcSEmmanuel Vadot  clock-names:
38*2eb4d8dcSEmmanuel Vadot    items:
39*2eb4d8dcSEmmanuel Vadot      - const: mc
40*2eb4d8dcSEmmanuel Vadot
41*2eb4d8dcSEmmanuel Vadot  interrupts:
42*2eb4d8dcSEmmanuel Vadot    maxItems: 1
43*2eb4d8dcSEmmanuel Vadot
44*2eb4d8dcSEmmanuel Vadot  "#reset-cells":
45*2eb4d8dcSEmmanuel Vadot    const: 1
46*2eb4d8dcSEmmanuel Vadot
47*2eb4d8dcSEmmanuel Vadot  "#iommu-cells":
48*2eb4d8dcSEmmanuel Vadot    const: 0
49*2eb4d8dcSEmmanuel Vadot
50*2eb4d8dcSEmmanuel Vadot  "#interconnect-cells":
51*2eb4d8dcSEmmanuel Vadot    const: 1
52*2eb4d8dcSEmmanuel Vadot
53*2eb4d8dcSEmmanuel Vadotrequired:
54*2eb4d8dcSEmmanuel Vadot  - compatible
55*2eb4d8dcSEmmanuel Vadot  - reg
56*2eb4d8dcSEmmanuel Vadot  - interrupts
57*2eb4d8dcSEmmanuel Vadot  - clocks
58*2eb4d8dcSEmmanuel Vadot  - clock-names
59*2eb4d8dcSEmmanuel Vadot  - "#reset-cells"
60*2eb4d8dcSEmmanuel Vadot  - "#iommu-cells"
61*2eb4d8dcSEmmanuel Vadot  - "#interconnect-cells"
62*2eb4d8dcSEmmanuel Vadot
63*2eb4d8dcSEmmanuel VadotadditionalProperties: false
64*2eb4d8dcSEmmanuel Vadot
65*2eb4d8dcSEmmanuel Vadotexamples:
66*2eb4d8dcSEmmanuel Vadot  - |
67*2eb4d8dcSEmmanuel Vadot    memory-controller@7000f000 {
68*2eb4d8dcSEmmanuel Vadot        compatible = "nvidia,tegra20-mc-gart";
69*2eb4d8dcSEmmanuel Vadot        reg = <0x7000f000 0x400>,	/* Controller registers */
70*2eb4d8dcSEmmanuel Vadot              <0x58000000 0x02000000>;	/* GART aperture */
71*2eb4d8dcSEmmanuel Vadot        clocks = <&clock_controller 32>;
72*2eb4d8dcSEmmanuel Vadot        clock-names = "mc";
73*2eb4d8dcSEmmanuel Vadot
74*2eb4d8dcSEmmanuel Vadot        interrupts = <0 77 4>;
75*2eb4d8dcSEmmanuel Vadot
76*2eb4d8dcSEmmanuel Vadot        #iommu-cells = <0>;
77*2eb4d8dcSEmmanuel Vadot        #reset-cells = <1>;
78*2eb4d8dcSEmmanuel Vadot        #interconnect-cells = <1>;
79*2eb4d8dcSEmmanuel Vadot    };
80