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