18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0) 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra30-mc.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: NVIDIA Tegra30 SoC Memory Controller 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Dmitry Osipenko <digetx@gmail.com> 118c2ecf20Sopenharmony_ci - Jon Hunter <jonathanh@nvidia.com> 128c2ecf20Sopenharmony_ci - Thierry Reding <thierry.reding@gmail.com> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cidescription: | 158c2ecf20Sopenharmony_ci Tegra30 Memory Controller architecturally consists of the following parts: 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci Arbitration Domains, which can handle a single request or response per 188c2ecf20Sopenharmony_ci clock from a group of clients. Typically, a system has a single Arbitration 198c2ecf20Sopenharmony_ci Domain, but an implementation may divide the client space into multiple 208c2ecf20Sopenharmony_ci Arbitration Domains to increase the effective system bandwidth. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci Protocol Arbiter, which manage a related pool of memory devices. A system 238c2ecf20Sopenharmony_ci may have a single Protocol Arbiter or multiple Protocol Arbiters. 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci Memory Crossbar, which routes request and responses between Arbitration 268c2ecf20Sopenharmony_ci Domains and Protocol Arbiters. In the simplest version of the system, the 278c2ecf20Sopenharmony_ci Memory Crossbar is just a pass through between a single Arbitration Domain 288c2ecf20Sopenharmony_ci and a single Protocol Arbiter. 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci Global Resources, which include things like configuration registers which 318c2ecf20Sopenharmony_ci are shared across the Memory Subsystem. 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci The Tegra30 Memory Controller handles memory requests from internal clients 348c2ecf20Sopenharmony_ci and arbitrates among them to allocate memory bandwidth for DDR3L and LPDDR2 358c2ecf20Sopenharmony_ci SDRAMs. 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciproperties: 388c2ecf20Sopenharmony_ci compatible: 398c2ecf20Sopenharmony_ci const: nvidia,tegra30-mc 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci reg: 428c2ecf20Sopenharmony_ci maxItems: 1 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci clocks: 458c2ecf20Sopenharmony_ci maxItems: 1 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci clock-names: 488c2ecf20Sopenharmony_ci items: 498c2ecf20Sopenharmony_ci - const: mc 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci interrupts: 528c2ecf20Sopenharmony_ci maxItems: 1 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci "#reset-cells": 558c2ecf20Sopenharmony_ci const: 1 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci "#iommu-cells": 588c2ecf20Sopenharmony_ci const: 1 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_cipatternProperties: 618c2ecf20Sopenharmony_ci "^emc-timings-[0-9]+$": 628c2ecf20Sopenharmony_ci type: object 638c2ecf20Sopenharmony_ci properties: 648c2ecf20Sopenharmony_ci nvidia,ram-code: 658c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 668c2ecf20Sopenharmony_ci description: 678c2ecf20Sopenharmony_ci Value of RAM_CODE this timing set is used for. 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci patternProperties: 708c2ecf20Sopenharmony_ci "^timing-[0-9]+$": 718c2ecf20Sopenharmony_ci type: object 728c2ecf20Sopenharmony_ci properties: 738c2ecf20Sopenharmony_ci clock-frequency: 748c2ecf20Sopenharmony_ci description: 758c2ecf20Sopenharmony_ci Memory clock rate in Hz. 768c2ecf20Sopenharmony_ci minimum: 1000000 778c2ecf20Sopenharmony_ci maximum: 900000000 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci nvidia,emem-configuration: 808c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 818c2ecf20Sopenharmony_ci description: | 828c2ecf20Sopenharmony_ci Values to be written to the EMEM register block. See section 838c2ecf20Sopenharmony_ci "18.13.1 MC Registers" in the TRM. 848c2ecf20Sopenharmony_ci items: 858c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_CFG 868c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_OUTSTANDING_REQ 878c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_RCD 888c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_RP 898c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_RC 908c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_RAS 918c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_FAW 928c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_RRD 938c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_RAP2PRE 948c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_WAP2PRE 958c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_R2R 968c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_W2W 978c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_R2W 988c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_TIMING_W2R 998c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_DA_TURNS 1008c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_DA_COVERS 1018c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_MISC0 1028c2ecf20Sopenharmony_ci - description: MC_EMEM_ARB_RING1_THROTTLE 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci required: 1058c2ecf20Sopenharmony_ci - clock-frequency 1068c2ecf20Sopenharmony_ci - nvidia,emem-configuration 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci additionalProperties: false 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci required: 1118c2ecf20Sopenharmony_ci - nvidia,ram-code 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci additionalProperties: false 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_cirequired: 1168c2ecf20Sopenharmony_ci - compatible 1178c2ecf20Sopenharmony_ci - reg 1188c2ecf20Sopenharmony_ci - interrupts 1198c2ecf20Sopenharmony_ci - clocks 1208c2ecf20Sopenharmony_ci - clock-names 1218c2ecf20Sopenharmony_ci - "#reset-cells" 1228c2ecf20Sopenharmony_ci - "#iommu-cells" 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ciadditionalProperties: false 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ciexamples: 1278c2ecf20Sopenharmony_ci - | 1288c2ecf20Sopenharmony_ci memory-controller@7000f000 { 1298c2ecf20Sopenharmony_ci compatible = "nvidia,tegra30-mc"; 1308c2ecf20Sopenharmony_ci reg = <0x7000f000 0x400>; 1318c2ecf20Sopenharmony_ci clocks = <&tegra_car 32>; 1328c2ecf20Sopenharmony_ci clock-names = "mc"; 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci interrupts = <0 77 4>; 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci #iommu-cells = <1>; 1378c2ecf20Sopenharmony_ci #reset-cells = <1>; 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci emc-timings-1 { 1408c2ecf20Sopenharmony_ci nvidia,ram-code = <1>; 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci timing-667000000 { 1438c2ecf20Sopenharmony_ci clock-frequency = <667000000>; 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ci nvidia,emem-configuration = < 1468c2ecf20Sopenharmony_ci 0x0000000a /* MC_EMEM_ARB_CFG */ 1478c2ecf20Sopenharmony_ci 0xc0000079 /* MC_EMEM_ARB_OUTSTANDING_REQ */ 1488c2ecf20Sopenharmony_ci 0x00000003 /* MC_EMEM_ARB_TIMING_RCD */ 1498c2ecf20Sopenharmony_ci 0x00000004 /* MC_EMEM_ARB_TIMING_RP */ 1508c2ecf20Sopenharmony_ci 0x00000010 /* MC_EMEM_ARB_TIMING_RC */ 1518c2ecf20Sopenharmony_ci 0x0000000b /* MC_EMEM_ARB_TIMING_RAS */ 1528c2ecf20Sopenharmony_ci 0x0000000a /* MC_EMEM_ARB_TIMING_FAW */ 1538c2ecf20Sopenharmony_ci 0x00000001 /* MC_EMEM_ARB_TIMING_RRD */ 1548c2ecf20Sopenharmony_ci 0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */ 1558c2ecf20Sopenharmony_ci 0x0000000b /* MC_EMEM_ARB_TIMING_WAP2PRE */ 1568c2ecf20Sopenharmony_ci 0x00000002 /* MC_EMEM_ARB_TIMING_R2R */ 1578c2ecf20Sopenharmony_ci 0x00000002 /* MC_EMEM_ARB_TIMING_W2W */ 1588c2ecf20Sopenharmony_ci 0x00000004 /* MC_EMEM_ARB_TIMING_R2W */ 1598c2ecf20Sopenharmony_ci 0x00000008 /* MC_EMEM_ARB_TIMING_W2R */ 1608c2ecf20Sopenharmony_ci 0x08040202 /* MC_EMEM_ARB_DA_TURNS */ 1618c2ecf20Sopenharmony_ci 0x00130b10 /* MC_EMEM_ARB_DA_COVERS */ 1628c2ecf20Sopenharmony_ci 0x70ea1f11 /* MC_EMEM_ARB_MISC0 */ 1638c2ecf20Sopenharmony_ci 0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */ 1648c2ecf20Sopenharmony_ci >; 1658c2ecf20Sopenharmony_ci }; 1668c2ecf20Sopenharmony_ci }; 1678c2ecf20Sopenharmony_ci }; 168