| # 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 |
| |
| 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" |
| |
| 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>; |
| |
| 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 */ |
| >; |
| }; |
| }; |
| }; |