| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra186-mc.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: NVIDIA Tegra186 (and later) SoC Memory Controller
- maintainers:
- - Jon Hunter <jonathanh@nvidia.com>
- - Thierry Reding <thierry.reding@gmail.com>
- description: |
- The NVIDIA Tegra186 SoC features a 128 bit memory controller that is split
- into four 32 bit channels to support LPDDR4 with x16 subpartitions. The MC
- handles memory requests for 40-bit virtual addresses from internal clients
- and arbitrates among them to allocate memory bandwidth.
- Up to 15 GiB of physical memory can be supported. Security features such as
- encryption of traffic to and from DRAM via general security apertures are
- available for video and other secure applications, as well as DRAM ECC for
- automotive safety applications (single bit error correction and double bit
- error detection).
- properties:
- $nodename:
- pattern: "^memory-controller@[0-9a-f]+$"
- compatible:
- items:
- - enum:
- - nvidia,tegra186-mc
- - nvidia,tegra194-mc
- - nvidia,tegra234-mc
- reg:
- minItems: 6
- maxItems: 18
- reg-names:
- minItems: 6
- maxItems: 18
- interrupts:
- items:
- - description: MC general interrupt
- "#address-cells":
- const: 2
- "#size-cells":
- const: 2
- ranges: true
- dma-ranges: true
- "#interconnect-cells":
- const: 1
- patternProperties:
- "^external-memory-controller@[0-9a-f]+$":
- description:
- The bulk of the work involved in controlling the external memory
- controller on NVIDIA Tegra186 and later is performed on the BPMP. This
- coprocessor exposes the EMC clock that is used to set the frequency at
- which the external memory is clocked and a remote procedure call that
- can be used to obtain the set of available frequencies.
- type: object
- properties:
- compatible:
- items:
- - enum:
- - nvidia,tegra186-emc
- - nvidia,tegra194-emc
- - nvidia,tegra234-emc
- reg:
- minItems: 1
- maxItems: 2
- interrupts:
- items:
- - description: EMC general interrupt
- clocks:
- items:
- - description: external memory clock
- clock-names:
- items:
- - const: emc
- "#interconnect-cells":
- const: 0
- nvidia,bpmp:
- $ref: /schemas/types.yaml#/definitions/phandle
- description:
- phandle of the node representing the BPMP
- allOf:
- - if:
- properties:
- compatible:
- const: nvidia,tegra186-emc
- then:
- properties:
- reg:
- maxItems: 1
- - if:
- properties:
- compatible:
- const: nvidia,tegra194-emc
- then:
- properties:
- reg:
- minItems: 2
- - if:
- properties:
- compatible:
- const: nvidia,tegra234-emc
- then:
- properties:
- reg:
- minItems: 2
- additionalProperties: false
- required:
- - compatible
- - reg
- - interrupts
- - clocks
- - clock-names
- - "#interconnect-cells"
- - nvidia,bpmp
- allOf:
- - if:
- properties:
- compatible:
- const: nvidia,tegra186-mc
- then:
- properties:
- reg:
- maxItems: 6
- description: 5 memory controller channels and 1 for stream-id registers
- reg-names:
- items:
- - const: sid
- - const: broadcast
- - const: ch0
- - const: ch1
- - const: ch2
- - const: ch3
- - if:
- properties:
- compatible:
- const: nvidia,tegra194-mc
- then:
- properties:
- reg:
- minItems: 18
- description: 17 memory controller channels and 1 for stream-id registers
- reg-names:
- items:
- - const: sid
- - const: broadcast
- - const: ch0
- - const: ch1
- - const: ch2
- - const: ch3
- - const: ch4
- - const: ch5
- - const: ch6
- - const: ch7
- - const: ch8
- - const: ch9
- - const: ch10
- - const: ch11
- - const: ch12
- - const: ch13
- - const: ch14
- - const: ch15
- - if:
- properties:
- compatible:
- const: nvidia,tegra234-mc
- then:
- properties:
- reg:
- minItems: 18
- description: 17 memory controller channels and 1 for stream-id registers
- reg-names:
- items:
- - const: sid
- - const: broadcast
- - const: ch0
- - const: ch1
- - const: ch2
- - const: ch3
- - const: ch4
- - const: ch5
- - const: ch6
- - const: ch7
- - const: ch8
- - const: ch9
- - const: ch10
- - const: ch11
- - const: ch12
- - const: ch13
- - const: ch14
- - const: ch15
- additionalProperties: false
- required:
- - compatible
- - reg
- - reg-names
- - interrupts
- - "#address-cells"
- - "#size-cells"
- examples:
- - |
- #include <dt-bindings/clock/tegra186-clock.h>
- #include <dt-bindings/interrupt-controller/arm-gic.h>
- bus {
- #address-cells = <2>;
- #size-cells = <2>;
- memory-controller@2c00000 {
- compatible = "nvidia,tegra186-mc";
- reg = <0x0 0x02c00000 0x0 0x10000>, /* MC-SID */
- <0x0 0x02c10000 0x0 0x10000>, /* Broadcast channel */
- <0x0 0x02c20000 0x0 0x10000>, /* MC0 */
- <0x0 0x02c30000 0x0 0x10000>, /* MC1 */
- <0x0 0x02c40000 0x0 0x10000>, /* MC2 */
- <0x0 0x02c50000 0x0 0x10000>; /* MC3 */
- reg-names = "sid", "broadcast", "ch0", "ch1", "ch2", "ch3";
- interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
- #address-cells = <2>;
- #size-cells = <2>;
- ranges = <0x0 0x02c00000 0x0 0x02c00000 0x0 0xb0000>;
- /*
- * Memory clients have access to all 40 bits that the memory
- * controller can address.
- */
- dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
- external-memory-controller@2c60000 {
- compatible = "nvidia,tegra186-emc";
- reg = <0x0 0x02c60000 0x0 0x50000>;
- interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&bpmp TEGRA186_CLK_EMC>;
- clock-names = "emc";
- #interconnect-cells = <0>;
- nvidia,bpmp = <&bpmp>;
- };
- };
- };
|