xref: /freebsd-src/sys/contrib/device-tree/Bindings/memory-controllers/snps,dw-umctl2-ddrc.yaml (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
17ef62cebSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only
27ef62cebSEmmanuel Vadot%YAML 1.2
37ef62cebSEmmanuel Vadot---
47ef62cebSEmmanuel Vadot$id: http://devicetree.org/schemas/memory-controllers/snps,dw-umctl2-ddrc.yaml#
57ef62cebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
67ef62cebSEmmanuel Vadot
77ef62cebSEmmanuel Vadottitle: Synopsys DesignWare Universal Multi-Protocol Memory Controller
87ef62cebSEmmanuel Vadot
97ef62cebSEmmanuel Vadotmaintainers:
107ef62cebSEmmanuel Vadot  - Krzysztof Kozlowski <krzk@kernel.org>
11*f126890aSEmmanuel Vadot  - Michal Simek <michal.simek@amd.com>
127ef62cebSEmmanuel Vadot
137ef62cebSEmmanuel Vadotdescription: |
147ef62cebSEmmanuel Vadot  Synopsys DesignWare Enhanced uMCTL2 DDR Memory Controller is capable of
157ef62cebSEmmanuel Vadot  working with the memory devices supporting up to (LP)DDR4 protocol. It can
167ef62cebSEmmanuel Vadot  be equipped with SEC/DEC ECC feature if DRAM data bus width is either
177ef62cebSEmmanuel Vadot  16-bits or 32-bits or 64-bits wide.
187ef62cebSEmmanuel Vadot
197ef62cebSEmmanuel Vadot  For instance the ZynqMP DDR controller is based on the DW uMCTL2 v2.40a
207ef62cebSEmmanuel Vadot  controller. It has an optional SEC/DEC ECC support in 64- and 32-bits
217ef62cebSEmmanuel Vadot  bus width configurations.
227ef62cebSEmmanuel Vadot
237ef62cebSEmmanuel Vadotproperties:
247ef62cebSEmmanuel Vadot  compatible:
257ef62cebSEmmanuel Vadot    oneOf:
267ef62cebSEmmanuel Vadot      - deprecated: true
277ef62cebSEmmanuel Vadot        description: Synopsys DW uMCTL2 DDR controller v3.80a
287ef62cebSEmmanuel Vadot        const: snps,ddrc-3.80a
297ef62cebSEmmanuel Vadot      - description: Synopsys DW uMCTL2 DDR controller
307ef62cebSEmmanuel Vadot        const: snps,dw-umctl2-ddrc
317ef62cebSEmmanuel Vadot      - description: Xilinx ZynqMP DDR controller v2.40a
327ef62cebSEmmanuel Vadot        const: xlnx,zynqmp-ddrc-2.40a
337ef62cebSEmmanuel Vadot
347ef62cebSEmmanuel Vadot  interrupts:
357ef62cebSEmmanuel Vadot    description:
367ef62cebSEmmanuel Vadot      DW uMCTL2 DDRC IP-core provides individual IRQ signal for each event":"
377ef62cebSEmmanuel Vadot      ECC Corrected Error, ECC Uncorrected Error, ECC Address Protection,
387ef62cebSEmmanuel Vadot      Scrubber-Done signal, DFI Parity/CRC Error. Some platforms may have the
397ef62cebSEmmanuel Vadot      signals merged before they reach the IRQ controller or have some of them
407ef62cebSEmmanuel Vadot      absent in case if the corresponding feature is unavailable/disabled.
417ef62cebSEmmanuel Vadot    minItems: 1
427ef62cebSEmmanuel Vadot    maxItems: 5
437ef62cebSEmmanuel Vadot
447ef62cebSEmmanuel Vadot  interrupt-names:
457ef62cebSEmmanuel Vadot    minItems: 1
467ef62cebSEmmanuel Vadot    maxItems: 5
477ef62cebSEmmanuel Vadot    oneOf:
487ef62cebSEmmanuel Vadot      - description: Common ECC CE/UE/Scrubber/DFI Errors IRQ
497ef62cebSEmmanuel Vadot        items:
507ef62cebSEmmanuel Vadot          - const: ecc
517ef62cebSEmmanuel Vadot      - description: Individual ECC CE/UE/Scrubber/DFI Errors IRQs
527ef62cebSEmmanuel Vadot        items:
537ef62cebSEmmanuel Vadot          enum: [ ecc_ce, ecc_ue, ecc_ap, ecc_sbr, dfi_e ]
547ef62cebSEmmanuel Vadot
557ef62cebSEmmanuel Vadot  reg:
567ef62cebSEmmanuel Vadot    maxItems: 1
577ef62cebSEmmanuel Vadot
587ef62cebSEmmanuel Vadot  clocks:
597ef62cebSEmmanuel Vadot    description:
607ef62cebSEmmanuel Vadot      A standard set of the clock sources contains CSRs bus clock, AXI-ports
617ef62cebSEmmanuel Vadot      reference clock, DDRC core clock, Scrubber standalone clock
627ef62cebSEmmanuel Vadot      (synchronous to the DDRC clock).
637ef62cebSEmmanuel Vadot    minItems: 1
647ef62cebSEmmanuel Vadot    maxItems: 4
657ef62cebSEmmanuel Vadot
667ef62cebSEmmanuel Vadot  clock-names:
677ef62cebSEmmanuel Vadot    minItems: 1
687ef62cebSEmmanuel Vadot    maxItems: 4
697ef62cebSEmmanuel Vadot    items:
707ef62cebSEmmanuel Vadot      enum: [ pclk, aclk, core, sbr ]
717ef62cebSEmmanuel Vadot
727ef62cebSEmmanuel Vadot  resets:
737ef62cebSEmmanuel Vadot    description:
747ef62cebSEmmanuel Vadot      Each clock domain can have separate reset signal.
757ef62cebSEmmanuel Vadot    minItems: 1
767ef62cebSEmmanuel Vadot    maxItems: 4
777ef62cebSEmmanuel Vadot
787ef62cebSEmmanuel Vadot  reset-names:
797ef62cebSEmmanuel Vadot    minItems: 1
807ef62cebSEmmanuel Vadot    maxItems: 4
817ef62cebSEmmanuel Vadot    items:
827ef62cebSEmmanuel Vadot      enum: [ prst, arst, core, sbr ]
837ef62cebSEmmanuel Vadot
847ef62cebSEmmanuel Vadotrequired:
857ef62cebSEmmanuel Vadot  - compatible
867ef62cebSEmmanuel Vadot  - reg
877ef62cebSEmmanuel Vadot  - interrupts
887ef62cebSEmmanuel Vadot
897ef62cebSEmmanuel VadotadditionalProperties: false
907ef62cebSEmmanuel Vadot
917ef62cebSEmmanuel Vadotexamples:
927ef62cebSEmmanuel Vadot  - |
937ef62cebSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
947ef62cebSEmmanuel Vadot
957ef62cebSEmmanuel Vadot    memory-controller@fd070000 {
967ef62cebSEmmanuel Vadot      compatible = "xlnx,zynqmp-ddrc-2.40a";
977ef62cebSEmmanuel Vadot      reg = <0xfd070000 0x30000>;
987ef62cebSEmmanuel Vadot
997ef62cebSEmmanuel Vadot      interrupt-parent = <&gic>;
1007ef62cebSEmmanuel Vadot      interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
1017ef62cebSEmmanuel Vadot      interrupt-names = "ecc";
1027ef62cebSEmmanuel Vadot    };
1037ef62cebSEmmanuel Vadot  - |
1047ef62cebSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
1057ef62cebSEmmanuel Vadot
1067ef62cebSEmmanuel Vadot    memory-controller@3d400000 {
1077ef62cebSEmmanuel Vadot      compatible = "snps,dw-umctl2-ddrc";
1087ef62cebSEmmanuel Vadot      reg = <0x3d400000 0x400000>;
1097ef62cebSEmmanuel Vadot
1107ef62cebSEmmanuel Vadot      interrupts = <147 IRQ_TYPE_LEVEL_HIGH>, <148 IRQ_TYPE_LEVEL_HIGH>,
1117ef62cebSEmmanuel Vadot                   <149 IRQ_TYPE_LEVEL_HIGH>, <150 IRQ_TYPE_LEVEL_HIGH>;
1127ef62cebSEmmanuel Vadot      interrupt-names = "ecc_ce", "ecc_ue", "ecc_sbr", "dfi_e";
1137ef62cebSEmmanuel Vadot
1147ef62cebSEmmanuel Vadot      clocks = <&pclk>, <&aclk>, <&core_clk>, <&sbr_clk>;
1157ef62cebSEmmanuel Vadot      clock-names = "pclk", "aclk", "core", "sbr";
1167ef62cebSEmmanuel Vadot    };
1177ef62cebSEmmanuel Vadot...
118