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