123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- NVIDIA Tegra Memory Controller device tree bindings
- ===================================================
- memory-controller node
- ----------------------
- Required properties:
- - compatible: Should be "nvidia,tegra<chip>-mc"
- - reg: Physical base address and length of the controller's registers.
- - clocks: Must contain an entry for each entry in clock-names.
- See ../clocks/clock-bindings.txt for details.
- - clock-names: Must include the following entries:
- - mc: the module's clock input
- - interrupts: The interrupt outputs from the controller.
- - #iommu-cells: Should be 1. The single cell of the IOMMU specifier defines
- the SWGROUP of the master.
- This device implements an IOMMU that complies with the generic IOMMU binding.
- See ../iommu/iommu.txt for details.
- emc-timings subnode
- -------------------
- The node should contain a "emc-timings" subnode for each supported RAM type (see field RAM_CODE in
- register PMC_STRAPPING_OPT_A).
- Required properties for "emc-timings" nodes :
- - nvidia,ram-code : Should contain the value of RAM_CODE this timing set is used for.
- timing subnode
- --------------
- Each "emc-timings" node should contain a subnode for every supported EMC clock rate.
- Required properties for timing nodes :
- - clock-frequency : Should contain the memory clock rate in Hz.
- - nvidia,emem-configuration : Values to be written to the EMEM register block. For the Tegra124 SoC
- (see section "15.6.1 MC Registers" in the TRM), these are the registers whose values need to be
- specified, according to the board documentation:
- MC_EMEM_ARB_CFG
- MC_EMEM_ARB_OUTSTANDING_REQ
- MC_EMEM_ARB_TIMING_RCD
- MC_EMEM_ARB_TIMING_RP
- MC_EMEM_ARB_TIMING_RC
- MC_EMEM_ARB_TIMING_RAS
- MC_EMEM_ARB_TIMING_FAW
- MC_EMEM_ARB_TIMING_RRD
- MC_EMEM_ARB_TIMING_RAP2PRE
- MC_EMEM_ARB_TIMING_WAP2PRE
- MC_EMEM_ARB_TIMING_R2R
- MC_EMEM_ARB_TIMING_W2W
- MC_EMEM_ARB_TIMING_R2W
- MC_EMEM_ARB_TIMING_W2R
- MC_EMEM_ARB_DA_TURNS
- MC_EMEM_ARB_DA_COVERS
- MC_EMEM_ARB_MISC0
- MC_EMEM_ARB_MISC1
- MC_EMEM_ARB_RING1_THROTTLE
- Example SoC include file:
- / {
- mc: memory-controller@0,70019000 {
- compatible = "nvidia,tegra124-mc";
- reg = <0x0 0x70019000 0x0 0x1000>;
- clocks = <&tegra_car TEGRA124_CLK_MC>;
- clock-names = "mc";
- interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
- #iommu-cells = <1>;
- };
- sdhci@0,700b0000 {
- compatible = "nvidia,tegra124-sdhci";
- ...
- iommus = <&mc TEGRA_SWGROUP_SDMMC1A>;
- };
- };
- Example board file:
- / {
- memory-controller@0,70019000 {
- 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 */
- >;
- };
- };
- };
- };
|