# SPDX-License-Identifier: (GPL-2.0) %YAML 1.2 --- $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra124-mc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: NVIDIA Tegra124 SoC Memory Controller maintainers: - Jon Hunter <jonathanh@nvidia.com> - Thierry Reding <thierry.reding@gmail.com> description: | Tegra124 SoC features a hybrid 2x32-bit / 1x64-bit memory controller. These are interleaved to provide high performance with the load shared across two memory channels. The Tegra124 Memory Controller handles memory requests from internal clients and arbitrates among them to allocate memory bandwidth for DDR3L and LPDDR3 SDRAMs. properties: compatible: const: nvidia,tegra124-mc reg: maxItems: 1 clocks: maxItems: 1 clock-names: items: - const: mc interrupts: maxItems: 1 "#reset-cells": const: 1 "#iommu-cells": const: 1 "#interconnect-cells": const: 1 patternProperties: "^emc-timings-[0-9]+$": type: object properties: nvidia,ram-code: $ref: /schemas/types.yaml#/definitions/uint32 description: Value of RAM_CODE this timing set is used for. patternProperties: "^timing-[0-9]+$": type: object properties: clock-frequency: description: Memory clock rate in Hz. minimum: 1000000 maximum: 1066000000 nvidia,emem-configuration: $ref: /schemas/types.yaml#/definitions/uint32-array description: | Values to be written to the EMEM register block. See section "15.6.1 MC Registers" in the TRM. items: - description: MC_EMEM_ARB_CFG - description: MC_EMEM_ARB_OUTSTANDING_REQ - description: MC_EMEM_ARB_TIMING_RCD - description: MC_EMEM_ARB_TIMING_RP - description: MC_EMEM_ARB_TIMING_RC - description: MC_EMEM_ARB_TIMING_RAS - description: MC_EMEM_ARB_TIMING_FAW - description: MC_EMEM_ARB_TIMING_RRD - description: MC_EMEM_ARB_TIMING_RAP2PRE - description: MC_EMEM_ARB_TIMING_WAP2PRE - description: MC_EMEM_ARB_TIMING_R2R - description: MC_EMEM_ARB_TIMING_W2W - description: MC_EMEM_ARB_TIMING_R2W - description: MC_EMEM_ARB_TIMING_W2R - description: MC_EMEM_ARB_DA_TURNS - description: MC_EMEM_ARB_DA_COVERS - description: MC_EMEM_ARB_MISC0 - description: MC_EMEM_ARB_MISC1 - description: MC_EMEM_ARB_RING1_THROTTLE required: - clock-frequency - nvidia,emem-configuration additionalProperties: false required: - nvidia,ram-code additionalProperties: false required: - compatible - reg - interrupts - clocks - clock-names - "#reset-cells" - "#iommu-cells" - "#interconnect-cells" additionalProperties: false examples: - | memory-controller@70019000 { compatible = "nvidia,tegra124-mc"; reg = <0x70019000 0x1000>; clocks = <&tegra_car 32>; clock-names = "mc"; interrupts = <0 77 4>; #iommu-cells = <1>; #reset-cells = <1>; #interconnect-cells = <1>; emc-timings-3 { nvidia,ram-code = <3>; timing-12750000 { clock-frequency = <12750000>; nvidia,emem-configuration = < 0x40040001 /* MC_EMEM_ARB_CFG */ 0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */ 0x00000001 /* MC_EMEM_ARB_TIMING_RCD */ 0x00000001 /* MC_EMEM_ARB_TIMING_RP */ 0x00000002 /* MC_EMEM_ARB_TIMING_RC */ 0x00000000 /* MC_EMEM_ARB_TIMING_RAS */ 0x00000002 /* MC_EMEM_ARB_TIMING_FAW */ 0x00000001 /* MC_EMEM_ARB_TIMING_RRD */ 0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */ 0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */ 0x00000003 /* MC_EMEM_ARB_TIMING_R2R */ 0x00000002 /* MC_EMEM_ARB_TIMING_W2W */ 0x00000003 /* MC_EMEM_ARB_TIMING_R2W */ 0x00000006 /* MC_EMEM_ARB_TIMING_W2R */ 0x06030203 /* MC_EMEM_ARB_DA_TURNS */ 0x000a0402 /* MC_EMEM_ARB_DA_COVERS */ 0x77e30303 /* MC_EMEM_ARB_MISC0 */ 0x70000f03 /* MC_EMEM_ARB_MISC1 */ 0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */ >; }; }; };