xref: /linux/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra124-mc.yaml (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
18da65c37SDmitry Osipenko# SPDX-License-Identifier: (GPL-2.0)
28da65c37SDmitry Osipenko%YAML 1.2
38da65c37SDmitry Osipenko---
48da65c37SDmitry Osipenko$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra124-mc.yaml#
58da65c37SDmitry Osipenko$schema: http://devicetree.org/meta-schemas/core.yaml#
68da65c37SDmitry Osipenko
78da65c37SDmitry Osipenkotitle: NVIDIA Tegra124 SoC Memory Controller
88da65c37SDmitry Osipenko
98da65c37SDmitry Osipenkomaintainers:
108da65c37SDmitry Osipenko  - Jon Hunter <jonathanh@nvidia.com>
118da65c37SDmitry Osipenko  - Thierry Reding <thierry.reding@gmail.com>
128da65c37SDmitry Osipenko
138da65c37SDmitry Osipenkodescription: |
148da65c37SDmitry Osipenko  Tegra124 SoC features a hybrid 2x32-bit / 1x64-bit memory controller.
158da65c37SDmitry Osipenko  These are interleaved to provide high performance with the load shared across
168da65c37SDmitry Osipenko  two memory channels. The Tegra124 Memory Controller handles memory requests
178da65c37SDmitry Osipenko  from internal clients and arbitrates among them to allocate memory bandwidth
188da65c37SDmitry Osipenko  for DDR3L and LPDDR3 SDRAMs.
198da65c37SDmitry Osipenko
208da65c37SDmitry Osipenkoproperties:
218da65c37SDmitry Osipenko  compatible:
228da65c37SDmitry Osipenko    const: nvidia,tegra124-mc
238da65c37SDmitry Osipenko
248da65c37SDmitry Osipenko  reg:
258da65c37SDmitry Osipenko    maxItems: 1
268da65c37SDmitry Osipenko
278da65c37SDmitry Osipenko  clocks:
288da65c37SDmitry Osipenko    maxItems: 1
298da65c37SDmitry Osipenko
308da65c37SDmitry Osipenko  clock-names:
318da65c37SDmitry Osipenko    items:
328da65c37SDmitry Osipenko      - const: mc
338da65c37SDmitry Osipenko
348da65c37SDmitry Osipenko  interrupts:
358da65c37SDmitry Osipenko    maxItems: 1
368da65c37SDmitry Osipenko
378da65c37SDmitry Osipenko  "#reset-cells":
388da65c37SDmitry Osipenko    const: 1
398da65c37SDmitry Osipenko
408da65c37SDmitry Osipenko  "#iommu-cells":
418da65c37SDmitry Osipenko    const: 1
428da65c37SDmitry Osipenko
43*cac2a355SDmitry Osipenko  "#interconnect-cells":
44*cac2a355SDmitry Osipenko    const: 1
45*cac2a355SDmitry Osipenko
468da65c37SDmitry OsipenkopatternProperties:
478da65c37SDmitry Osipenko  "^emc-timings-[0-9]+$":
488da65c37SDmitry Osipenko    type: object
498da65c37SDmitry Osipenko    properties:
508da65c37SDmitry Osipenko      nvidia,ram-code:
518da65c37SDmitry Osipenko        $ref: /schemas/types.yaml#/definitions/uint32
528da65c37SDmitry Osipenko        description:
538da65c37SDmitry Osipenko          Value of RAM_CODE this timing set is used for.
548da65c37SDmitry Osipenko
558da65c37SDmitry Osipenko    patternProperties:
568da65c37SDmitry Osipenko      "^timing-[0-9]+$":
578da65c37SDmitry Osipenko        type: object
588da65c37SDmitry Osipenko        properties:
598da65c37SDmitry Osipenko          clock-frequency:
608da65c37SDmitry Osipenko            description:
618da65c37SDmitry Osipenko              Memory clock rate in Hz.
628da65c37SDmitry Osipenko            minimum: 1000000
638da65c37SDmitry Osipenko            maximum: 1066000000
648da65c37SDmitry Osipenko
658da65c37SDmitry Osipenko          nvidia,emem-configuration:
663d21a460SRob Herring            $ref: /schemas/types.yaml#/definitions/uint32-array
678da65c37SDmitry Osipenko            description: |
688da65c37SDmitry Osipenko              Values to be written to the EMEM register block. See section
698da65c37SDmitry Osipenko              "15.6.1 MC Registers" in the TRM.
708da65c37SDmitry Osipenko            items:
718da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_CFG
728da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_OUTSTANDING_REQ
738da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_RCD
748da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_RP
758da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_RC
768da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_RAS
778da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_FAW
788da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_RRD
798da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_RAP2PRE
808da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_WAP2PRE
818da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_R2R
828da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_W2W
838da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_R2W
848da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_TIMING_W2R
858da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_DA_TURNS
868da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_DA_COVERS
878da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_MISC0
888da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_MISC1
898da65c37SDmitry Osipenko              - description: MC_EMEM_ARB_RING1_THROTTLE
908da65c37SDmitry Osipenko
918da65c37SDmitry Osipenko        required:
928da65c37SDmitry Osipenko          - clock-frequency
938da65c37SDmitry Osipenko          - nvidia,emem-configuration
948da65c37SDmitry Osipenko
958da65c37SDmitry Osipenko        additionalProperties: false
968da65c37SDmitry Osipenko
978da65c37SDmitry Osipenko    required:
988da65c37SDmitry Osipenko      - nvidia,ram-code
998da65c37SDmitry Osipenko
1008da65c37SDmitry Osipenko    additionalProperties: false
1018da65c37SDmitry Osipenko
1028da65c37SDmitry Osipenkorequired:
1038da65c37SDmitry Osipenko  - compatible
1048da65c37SDmitry Osipenko  - reg
1058da65c37SDmitry Osipenko  - interrupts
1068da65c37SDmitry Osipenko  - clocks
1078da65c37SDmitry Osipenko  - clock-names
1088da65c37SDmitry Osipenko  - "#reset-cells"
1098da65c37SDmitry Osipenko  - "#iommu-cells"
110*cac2a355SDmitry Osipenko  - "#interconnect-cells"
1118da65c37SDmitry Osipenko
1128da65c37SDmitry OsipenkoadditionalProperties: false
1138da65c37SDmitry Osipenko
1148da65c37SDmitry Osipenkoexamples:
1158da65c37SDmitry Osipenko  - |
1168da65c37SDmitry Osipenko    memory-controller@70019000 {
1178da65c37SDmitry Osipenko        compatible = "nvidia,tegra124-mc";
118fba56184SRob Herring        reg = <0x70019000 0x1000>;
1198da65c37SDmitry Osipenko        clocks = <&tegra_car 32>;
1208da65c37SDmitry Osipenko        clock-names = "mc";
1218da65c37SDmitry Osipenko
1228da65c37SDmitry Osipenko        interrupts = <0 77 4>;
1238da65c37SDmitry Osipenko
1248da65c37SDmitry Osipenko        #iommu-cells = <1>;
1258da65c37SDmitry Osipenko        #reset-cells = <1>;
126*cac2a355SDmitry Osipenko        #interconnect-cells = <1>;
1278da65c37SDmitry Osipenko
1288da65c37SDmitry Osipenko        emc-timings-3 {
1298da65c37SDmitry Osipenko            nvidia,ram-code = <3>;
1308da65c37SDmitry Osipenko
1318da65c37SDmitry Osipenko            timing-12750000 {
1328da65c37SDmitry Osipenko                clock-frequency = <12750000>;
1338da65c37SDmitry Osipenko
1348da65c37SDmitry Osipenko                nvidia,emem-configuration = <
1358da65c37SDmitry Osipenko                    0x40040001 /* MC_EMEM_ARB_CFG */
1368da65c37SDmitry Osipenko                    0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
1378da65c37SDmitry Osipenko                    0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
1388da65c37SDmitry Osipenko                    0x00000001 /* MC_EMEM_ARB_TIMING_RP */
1398da65c37SDmitry Osipenko                    0x00000002 /* MC_EMEM_ARB_TIMING_RC */
1408da65c37SDmitry Osipenko                    0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
1418da65c37SDmitry Osipenko                    0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
1428da65c37SDmitry Osipenko                    0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
1438da65c37SDmitry Osipenko                    0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
1448da65c37SDmitry Osipenko                    0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
1458da65c37SDmitry Osipenko                    0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
1468da65c37SDmitry Osipenko                    0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
1478da65c37SDmitry Osipenko                    0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
1488da65c37SDmitry Osipenko                    0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
1498da65c37SDmitry Osipenko                    0x06030203 /* MC_EMEM_ARB_DA_TURNS */
1508da65c37SDmitry Osipenko                    0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
1518da65c37SDmitry Osipenko                    0x77e30303 /* MC_EMEM_ARB_MISC0 */
1528da65c37SDmitry Osipenko                    0x70000f03 /* MC_EMEM_ARB_MISC1 */
1538da65c37SDmitry Osipenko                    0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
1548da65c37SDmitry Osipenko                >;
1558da65c37SDmitry Osipenko            };
1568da65c37SDmitry Osipenko        };
1578da65c37SDmitry Osipenko    };
158