Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: memory: snps,dw-umctl2-ddrc: Extend schema with IRQs/resets/clocks props

First of all the DW uMCTL2 DDRC IP-core supports the individual IRQ lines
for each standard event: ECC Corrected Error, ECC Uncorrected Error, ECC
Address Protection, Scrubber-Done signal, DFI Parity/CRC Error. It's
possible that the platform engineers merge them up in the IRQ controller
level. So let's add both configuration support to the DT-schema.

Secondly the DW uMCTL2 DDRC IP-core can have clock sources like APB
reference clock, AXI-ports clock, main DDRC core reference clock and
Scrubber low-power clock. In addition to that each clock domain can have a
dedicated reset signal. Let's add the properties for at least the denoted
clock sources and the corresponding reset controls.

Note the IRQs and the phandles order is deliberately not fixed since some
of the sources may be absent depending on the IP-core synthesize
parameters and the particular platform setups.

Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20220910195659.11843-3-Sergey.Semin@baikalelectronics.ru

authored by

Serge Semin and committed by
Krzysztof Kozlowski
5514acb0 fc436e55

+60 -1
+60 -1
Documentation/devicetree/bindings/memory-controllers/snps,dw-umctl2-ddrc.yaml
··· 33 33 const: xlnx,zynqmp-ddrc-2.40a 34 34 35 35 interrupts: 36 - maxItems: 1 36 + description: 37 + DW uMCTL2 DDRC IP-core provides individual IRQ signal for each event":" 38 + ECC Corrected Error, ECC Uncorrected Error, ECC Address Protection, 39 + Scrubber-Done signal, DFI Parity/CRC Error. Some platforms may have the 40 + signals merged before they reach the IRQ controller or have some of them 41 + absent in case if the corresponding feature is unavailable/disabled. 42 + minItems: 1 43 + maxItems: 5 44 + 45 + interrupt-names: 46 + minItems: 1 47 + maxItems: 5 48 + oneOf: 49 + - description: Common ECC CE/UE/Scrubber/DFI Errors IRQ 50 + items: 51 + - const: ecc 52 + - description: Individual ECC CE/UE/Scrubber/DFI Errors IRQs 53 + items: 54 + enum: [ ecc_ce, ecc_ue, ecc_ap, ecc_sbr, dfi_e ] 37 55 38 56 reg: 39 57 maxItems: 1 58 + 59 + clocks: 60 + description: 61 + A standard set of the clock sources contains CSRs bus clock, AXI-ports 62 + reference clock, DDRC core clock, Scrubber standalone clock 63 + (synchronous to the DDRC clock). 64 + minItems: 1 65 + maxItems: 4 66 + 67 + clock-names: 68 + minItems: 1 69 + maxItems: 4 70 + items: 71 + enum: [ pclk, aclk, core, sbr ] 72 + 73 + resets: 74 + description: 75 + Each clock domain can have separate reset signal. 76 + minItems: 1 77 + maxItems: 4 78 + 79 + reset-names: 80 + minItems: 1 81 + maxItems: 4 82 + items: 83 + enum: [ prst, arst, core, sbr ] 40 84 41 85 required: 42 86 - compatible ··· 99 55 100 56 interrupt-parent = <&gic>; 101 57 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>; 58 + interrupt-names = "ecc"; 59 + }; 60 + - | 61 + #include <dt-bindings/interrupt-controller/irq.h> 62 + 63 + memory-controller@3d400000 { 64 + compatible = "snps,dw-umctl2-ddrc"; 65 + reg = <0x3d400000 0x400000>; 66 + 67 + interrupts = <147 IRQ_TYPE_LEVEL_HIGH>, <148 IRQ_TYPE_LEVEL_HIGH>, 68 + <149 IRQ_TYPE_LEVEL_HIGH>, <150 IRQ_TYPE_LEVEL_HIGH>; 69 + interrupt-names = "ecc_ce", "ecc_ue", "ecc_sbr", "dfi_e"; 70 + 71 + clocks = <&pclk>, <&aclk>, <&core_clk>, <&sbr_clk>; 72 + clock-names = "pclk", "aclk", "core", "sbr"; 102 73 }; 103 74 ...