1*8ccc0d23SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2*8ccc0d23SEmmanuel Vadot# Copyright (C) 2025 Altera Corporation 3*8ccc0d23SEmmanuel Vadot%YAML 1.2 4*8ccc0d23SEmmanuel Vadot--- 5*8ccc0d23SEmmanuel Vadot$id: http://devicetree.org/schemas/edac/altr,socfpga-ecc-manager.yaml# 6*8ccc0d23SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 7*8ccc0d23SEmmanuel Vadot 8*8ccc0d23SEmmanuel Vadottitle: Altera SoCFPGA ECC Manager 9*8ccc0d23SEmmanuel Vadot 10*8ccc0d23SEmmanuel Vadotmaintainers: 11*8ccc0d23SEmmanuel Vadot - Matthew Gerlach <matthew.gerlach@altera.com> 12*8ccc0d23SEmmanuel Vadot 13*8ccc0d23SEmmanuel Vadotdescription: 14*8ccc0d23SEmmanuel Vadot This binding describes the device tree nodes required for the Altera SoCFPGA 15*8ccc0d23SEmmanuel Vadot ECC Manager for the Cyclone5, Arria5, Arria10, Stratix10, and Agilex chip 16*8ccc0d23SEmmanuel Vadot families. 17*8ccc0d23SEmmanuel Vadot 18*8ccc0d23SEmmanuel Vadotproperties: 19*8ccc0d23SEmmanuel Vadot 20*8ccc0d23SEmmanuel Vadot compatible: 21*8ccc0d23SEmmanuel Vadot oneOf: 22*8ccc0d23SEmmanuel Vadot - items: 23*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-s10-ecc-manager 24*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-a10-ecc-manager 25*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-a10-ecc-manager 26*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-ecc-manager 27*8ccc0d23SEmmanuel Vadot 28*8ccc0d23SEmmanuel Vadot "#address-cells": 29*8ccc0d23SEmmanuel Vadot const: 1 30*8ccc0d23SEmmanuel Vadot 31*8ccc0d23SEmmanuel Vadot "#size-cells": 32*8ccc0d23SEmmanuel Vadot const: 1 33*8ccc0d23SEmmanuel Vadot 34*8ccc0d23SEmmanuel Vadot interrupts: 35*8ccc0d23SEmmanuel Vadot minItems: 1 36*8ccc0d23SEmmanuel Vadot maxItems: 2 37*8ccc0d23SEmmanuel Vadot 38*8ccc0d23SEmmanuel Vadot interrupt-controller: true 39*8ccc0d23SEmmanuel Vadot 40*8ccc0d23SEmmanuel Vadot "#interrupt-cells": 41*8ccc0d23SEmmanuel Vadot const: 2 42*8ccc0d23SEmmanuel Vadot 43*8ccc0d23SEmmanuel Vadot ranges: true 44*8ccc0d23SEmmanuel Vadot 45*8ccc0d23SEmmanuel Vadot altr,sysmgr-syscon: 46*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 47*8ccc0d23SEmmanuel Vadot description: phandle to Stratix10 System Manager Block with the ECC manager registers 48*8ccc0d23SEmmanuel Vadot 49*8ccc0d23SEmmanuel Vadot sdramedac: 50*8ccc0d23SEmmanuel Vadot type: object 51*8ccc0d23SEmmanuel Vadot additionalProperties: false 52*8ccc0d23SEmmanuel Vadot 53*8ccc0d23SEmmanuel Vadot properties: 54*8ccc0d23SEmmanuel Vadot compatible: 55*8ccc0d23SEmmanuel Vadot enum: 56*8ccc0d23SEmmanuel Vadot - altr,sdram-edac-a10 57*8ccc0d23SEmmanuel Vadot - altr,sdram-edac-s10 58*8ccc0d23SEmmanuel Vadot 59*8ccc0d23SEmmanuel Vadot interrupts: 60*8ccc0d23SEmmanuel Vadot minItems: 1 61*8ccc0d23SEmmanuel Vadot maxItems: 2 62*8ccc0d23SEmmanuel Vadot 63*8ccc0d23SEmmanuel Vadot altr,sdr-syscon: 64*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 65*8ccc0d23SEmmanuel Vadot description: phandle to SDRAM parent 66*8ccc0d23SEmmanuel Vadot 67*8ccc0d23SEmmanuel Vadot required: 68*8ccc0d23SEmmanuel Vadot - compatible 69*8ccc0d23SEmmanuel Vadot - interrupts 70*8ccc0d23SEmmanuel Vadot - altr,sdr-syscon 71*8ccc0d23SEmmanuel Vadot 72*8ccc0d23SEmmanuel VadotpatternProperties: 73*8ccc0d23SEmmanuel Vadot "^ocram-ecc@[a-f0-9]+$": 74*8ccc0d23SEmmanuel Vadot type: object 75*8ccc0d23SEmmanuel Vadot additionalProperties: false 76*8ccc0d23SEmmanuel Vadot 77*8ccc0d23SEmmanuel Vadot properties: 78*8ccc0d23SEmmanuel Vadot compatible: 79*8ccc0d23SEmmanuel Vadot oneOf: 80*8ccc0d23SEmmanuel Vadot - items: 81*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-s10-ocram-ecc 82*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-a10-ocram-ecc 83*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-a10-ocram-ecc 84*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-ocram-ecc 85*8ccc0d23SEmmanuel Vadot 86*8ccc0d23SEmmanuel Vadot reg: 87*8ccc0d23SEmmanuel Vadot maxItems: 1 88*8ccc0d23SEmmanuel Vadot 89*8ccc0d23SEmmanuel Vadot interrupts: 90*8ccc0d23SEmmanuel Vadot minItems: 1 91*8ccc0d23SEmmanuel Vadot maxItems: 2 92*8ccc0d23SEmmanuel Vadot 93*8ccc0d23SEmmanuel Vadot iram: 94*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 95*8ccc0d23SEmmanuel Vadot description: phandle to OCRAM parent 96*8ccc0d23SEmmanuel Vadot 97*8ccc0d23SEmmanuel Vadot altr,ecc-parent: 98*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 99*8ccc0d23SEmmanuel Vadot description: phandle to OCRAM parent 100*8ccc0d23SEmmanuel Vadot 101*8ccc0d23SEmmanuel Vadot required: 102*8ccc0d23SEmmanuel Vadot - compatible 103*8ccc0d23SEmmanuel Vadot - reg 104*8ccc0d23SEmmanuel Vadot - interrupts 105*8ccc0d23SEmmanuel Vadot 106*8ccc0d23SEmmanuel Vadot "^usb[0-9]-ecc@[a-f0-9]+$": 107*8ccc0d23SEmmanuel Vadot type: object 108*8ccc0d23SEmmanuel Vadot additionalProperties: false 109*8ccc0d23SEmmanuel Vadot 110*8ccc0d23SEmmanuel Vadot properties: 111*8ccc0d23SEmmanuel Vadot compatible: 112*8ccc0d23SEmmanuel Vadot oneOf: 113*8ccc0d23SEmmanuel Vadot - items: 114*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-s10-usb-ecc 115*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-usb-ecc 116*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-usb-ecc 117*8ccc0d23SEmmanuel Vadot 118*8ccc0d23SEmmanuel Vadot reg: 119*8ccc0d23SEmmanuel Vadot maxItems: 1 120*8ccc0d23SEmmanuel Vadot 121*8ccc0d23SEmmanuel Vadot interrupts: 122*8ccc0d23SEmmanuel Vadot minItems: 1 123*8ccc0d23SEmmanuel Vadot maxItems: 2 124*8ccc0d23SEmmanuel Vadot 125*8ccc0d23SEmmanuel Vadot altr,ecc-parent: 126*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 127*8ccc0d23SEmmanuel Vadot description: phandle to USB parent 128*8ccc0d23SEmmanuel Vadot 129*8ccc0d23SEmmanuel Vadot required: 130*8ccc0d23SEmmanuel Vadot - compatible 131*8ccc0d23SEmmanuel Vadot - reg 132*8ccc0d23SEmmanuel Vadot - interrupts 133*8ccc0d23SEmmanuel Vadot - altr,ecc-parent 134*8ccc0d23SEmmanuel Vadot 135*8ccc0d23SEmmanuel Vadot "^emac[0-9]-[t,r]x-ecc@[a-f0-9]+$": 136*8ccc0d23SEmmanuel Vadot type: object 137*8ccc0d23SEmmanuel Vadot additionalProperties: false 138*8ccc0d23SEmmanuel Vadot 139*8ccc0d23SEmmanuel Vadot properties: 140*8ccc0d23SEmmanuel Vadot compatible: 141*8ccc0d23SEmmanuel Vadot oneOf: 142*8ccc0d23SEmmanuel Vadot - items: 143*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-s10-eth-mac-ecc 144*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-eth-mac-ecc 145*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-eth-mac-ecc 146*8ccc0d23SEmmanuel Vadot 147*8ccc0d23SEmmanuel Vadot reg: 148*8ccc0d23SEmmanuel Vadot maxItems: 1 149*8ccc0d23SEmmanuel Vadot 150*8ccc0d23SEmmanuel Vadot interrupts: 151*8ccc0d23SEmmanuel Vadot minItems: 1 152*8ccc0d23SEmmanuel Vadot maxItems: 2 153*8ccc0d23SEmmanuel Vadot 154*8ccc0d23SEmmanuel Vadot altr,ecc-parent: 155*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 156*8ccc0d23SEmmanuel Vadot description: phandle to ethernet parent 157*8ccc0d23SEmmanuel Vadot 158*8ccc0d23SEmmanuel Vadot required: 159*8ccc0d23SEmmanuel Vadot - compatible 160*8ccc0d23SEmmanuel Vadot - reg 161*8ccc0d23SEmmanuel Vadot - interrupts 162*8ccc0d23SEmmanuel Vadot - altr,ecc-parent 163*8ccc0d23SEmmanuel Vadot 164*8ccc0d23SEmmanuel Vadot "^sdmmc[a-f]-ecc@[a-f0-9]+$": 165*8ccc0d23SEmmanuel Vadot type: object 166*8ccc0d23SEmmanuel Vadot additionalProperties: false 167*8ccc0d23SEmmanuel Vadot 168*8ccc0d23SEmmanuel Vadot properties: 169*8ccc0d23SEmmanuel Vadot compatible: 170*8ccc0d23SEmmanuel Vadot oneOf: 171*8ccc0d23SEmmanuel Vadot - items: 172*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-s10-sdmmc-ecc 173*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-sdmmc-ecc 174*8ccc0d23SEmmanuel Vadot - const: altr,socfpga-sdmmc-ecc 175*8ccc0d23SEmmanuel Vadot 176*8ccc0d23SEmmanuel Vadot reg: 177*8ccc0d23SEmmanuel Vadot maxItems: 1 178*8ccc0d23SEmmanuel Vadot 179*8ccc0d23SEmmanuel Vadot interrupts: 180*8ccc0d23SEmmanuel Vadot minItems: 2 181*8ccc0d23SEmmanuel Vadot maxItems: 4 182*8ccc0d23SEmmanuel Vadot 183*8ccc0d23SEmmanuel Vadot altr,ecc-parent: 184*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 185*8ccc0d23SEmmanuel Vadot description: phandle to SD/MMC parent 186*8ccc0d23SEmmanuel Vadot 187*8ccc0d23SEmmanuel Vadot required: 188*8ccc0d23SEmmanuel Vadot - compatible 189*8ccc0d23SEmmanuel Vadot - reg 190*8ccc0d23SEmmanuel Vadot - interrupts 191*8ccc0d23SEmmanuel Vadot - altr,ecc-parent 192*8ccc0d23SEmmanuel Vadot 193*8ccc0d23SEmmanuel Vadot "^l2-ecc@[a-f0-9]+$": 194*8ccc0d23SEmmanuel Vadot type: object 195*8ccc0d23SEmmanuel Vadot additionalProperties: false 196*8ccc0d23SEmmanuel Vadot 197*8ccc0d23SEmmanuel Vadot properties: 198*8ccc0d23SEmmanuel Vadot compatible: 199*8ccc0d23SEmmanuel Vadot enum: 200*8ccc0d23SEmmanuel Vadot - altr,socfpga-a10-l2-ecc 201*8ccc0d23SEmmanuel Vadot - altr,socfpga-l2-ecc 202*8ccc0d23SEmmanuel Vadot 203*8ccc0d23SEmmanuel Vadot reg: 204*8ccc0d23SEmmanuel Vadot maxItems: 1 205*8ccc0d23SEmmanuel Vadot 206*8ccc0d23SEmmanuel Vadot interrupts: 207*8ccc0d23SEmmanuel Vadot maxItems: 2 208*8ccc0d23SEmmanuel Vadot 209*8ccc0d23SEmmanuel Vadot required: 210*8ccc0d23SEmmanuel Vadot - compatible 211*8ccc0d23SEmmanuel Vadot - reg 212*8ccc0d23SEmmanuel Vadot - interrupts 213*8ccc0d23SEmmanuel Vadot 214*8ccc0d23SEmmanuel Vadot "^dma-ecc@[a-f0-9]+$": 215*8ccc0d23SEmmanuel Vadot type: object 216*8ccc0d23SEmmanuel Vadot additionalProperties: false 217*8ccc0d23SEmmanuel Vadot 218*8ccc0d23SEmmanuel Vadot properties: 219*8ccc0d23SEmmanuel Vadot compatible: 220*8ccc0d23SEmmanuel Vadot const: altr,socfpga-dma-ecc 221*8ccc0d23SEmmanuel Vadot reg: 222*8ccc0d23SEmmanuel Vadot maxItems: 1 223*8ccc0d23SEmmanuel Vadot 224*8ccc0d23SEmmanuel Vadot interrupts: 225*8ccc0d23SEmmanuel Vadot maxItems: 2 226*8ccc0d23SEmmanuel Vadot 227*8ccc0d23SEmmanuel Vadot altr,ecc-parent: 228*8ccc0d23SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 229*8ccc0d23SEmmanuel Vadot description: phandle to SD/MMC parent 230*8ccc0d23SEmmanuel Vadot 231*8ccc0d23SEmmanuel Vadot required: 232*8ccc0d23SEmmanuel Vadot - compatible 233*8ccc0d23SEmmanuel Vadot - reg 234*8ccc0d23SEmmanuel Vadot - interrupts 235*8ccc0d23SEmmanuel Vadot - altr,ecc-parent 236*8ccc0d23SEmmanuel Vadot 237*8ccc0d23SEmmanuel Vadotif: 238*8ccc0d23SEmmanuel Vadot properties: 239*8ccc0d23SEmmanuel Vadot compatible: 240*8ccc0d23SEmmanuel Vadot contains: 241*8ccc0d23SEmmanuel Vadot const: altr,socfpga-ecc-manager 242*8ccc0d23SEmmanuel Vadotthen: 243*8ccc0d23SEmmanuel Vadot required: 244*8ccc0d23SEmmanuel Vadot - compatible 245*8ccc0d23SEmmanuel Vadot - "#address-cells" 246*8ccc0d23SEmmanuel Vadot - "#size-cells" 247*8ccc0d23SEmmanuel Vadot - ranges 248*8ccc0d23SEmmanuel Vadot 249*8ccc0d23SEmmanuel Vadotelse: 250*8ccc0d23SEmmanuel Vadot required: 251*8ccc0d23SEmmanuel Vadot - compatible 252*8ccc0d23SEmmanuel Vadot - "#address-cells" 253*8ccc0d23SEmmanuel Vadot - "#size-cells" 254*8ccc0d23SEmmanuel Vadot - interrupts 255*8ccc0d23SEmmanuel Vadot - interrupt-controller 256*8ccc0d23SEmmanuel Vadot - "#interrupt-cells" 257*8ccc0d23SEmmanuel Vadot - ranges 258*8ccc0d23SEmmanuel Vadot - altr,sysmgr-syscon 259*8ccc0d23SEmmanuel Vadot 260*8ccc0d23SEmmanuel VadotadditionalProperties: false 261*8ccc0d23SEmmanuel Vadot 262*8ccc0d23SEmmanuel Vadotexamples: 263*8ccc0d23SEmmanuel Vadot - | 264*8ccc0d23SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 265*8ccc0d23SEmmanuel Vadot #include <dt-bindings/interrupt-controller/irq.h> 266*8ccc0d23SEmmanuel Vadot eccmgr { 267*8ccc0d23SEmmanuel Vadot compatible = "altr,socfpga-s10-ecc-manager", 268*8ccc0d23SEmmanuel Vadot "altr,socfpga-a10-ecc-manager"; 269*8ccc0d23SEmmanuel Vadot altr,sysmgr-syscon = <&sysmgr>; 270*8ccc0d23SEmmanuel Vadot #address-cells = <1>; 271*8ccc0d23SEmmanuel Vadot #size-cells = <1>; 272*8ccc0d23SEmmanuel Vadot interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; 273*8ccc0d23SEmmanuel Vadot interrupt-controller; 274*8ccc0d23SEmmanuel Vadot #interrupt-cells = <2>; 275*8ccc0d23SEmmanuel Vadot ranges; 276*8ccc0d23SEmmanuel Vadot 277*8ccc0d23SEmmanuel Vadot sdramedac { 278*8ccc0d23SEmmanuel Vadot compatible = "altr,sdram-edac-s10"; 279*8ccc0d23SEmmanuel Vadot altr,sdr-syscon = <&sdr>; 280*8ccc0d23SEmmanuel Vadot interrupts = <16 IRQ_TYPE_LEVEL_HIGH>; 281*8ccc0d23SEmmanuel Vadot }; 282*8ccc0d23SEmmanuel Vadot 283*8ccc0d23SEmmanuel Vadot ocram-ecc@ff8cc000 { 284*8ccc0d23SEmmanuel Vadot compatible = "altr,socfpga-s10-ocram-ecc", 285*8ccc0d23SEmmanuel Vadot "altr,socfpga-a10-ocram-ecc"; 286*8ccc0d23SEmmanuel Vadot reg = <0xff8cc000 0x100>; 287*8ccc0d23SEmmanuel Vadot altr,ecc-parent = <&ocram>; 288*8ccc0d23SEmmanuel Vadot interrupts = <1 IRQ_TYPE_LEVEL_HIGH>; 289*8ccc0d23SEmmanuel Vadot }; 290*8ccc0d23SEmmanuel Vadot 291*8ccc0d23SEmmanuel Vadot usb0-ecc@ff8c4000 { 292*8ccc0d23SEmmanuel Vadot compatible = "altr,socfpga-s10-usb-ecc", 293*8ccc0d23SEmmanuel Vadot "altr,socfpga-usb-ecc"; 294*8ccc0d23SEmmanuel Vadot reg = <0xff8c4000 0x100>; 295*8ccc0d23SEmmanuel Vadot altr,ecc-parent = <&usb0>; 296*8ccc0d23SEmmanuel Vadot interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; 297*8ccc0d23SEmmanuel Vadot }; 298*8ccc0d23SEmmanuel Vadot 299*8ccc0d23SEmmanuel Vadot emac0-rx-ecc@ff8c0000 { 300*8ccc0d23SEmmanuel Vadot compatible = "altr,socfpga-s10-eth-mac-ecc", 301*8ccc0d23SEmmanuel Vadot "altr,socfpga-eth-mac-ecc"; 302*8ccc0d23SEmmanuel Vadot reg = <0xff8c0000 0x100>; 303*8ccc0d23SEmmanuel Vadot altr,ecc-parent = <&gmac0>; 304*8ccc0d23SEmmanuel Vadot interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; 305*8ccc0d23SEmmanuel Vadot }; 306*8ccc0d23SEmmanuel Vadot 307*8ccc0d23SEmmanuel Vadot emac0-tx-ecc@ff8c0400 { 308*8ccc0d23SEmmanuel Vadot compatible = "altr,socfpga-s10-eth-mac-ecc", 309*8ccc0d23SEmmanuel Vadot "altr,socfpga-eth-mac-ecc"; 310*8ccc0d23SEmmanuel Vadot reg = <0xff8c0400 0x100>; 311*8ccc0d23SEmmanuel Vadot altr,ecc-parent = <&gmac0>; 312*8ccc0d23SEmmanuel Vadot interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; 313*8ccc0d23SEmmanuel Vadot }; 314*8ccc0d23SEmmanuel Vadot 315*8ccc0d23SEmmanuel Vadot sdmmca-ecc@ff8c8c00 { 316*8ccc0d23SEmmanuel Vadot compatible = "altr,socfpga-s10-sdmmc-ecc", 317*8ccc0d23SEmmanuel Vadot "altr,socfpga-sdmmc-ecc"; 318*8ccc0d23SEmmanuel Vadot reg = <0xff8c8c00 0x100>; 319*8ccc0d23SEmmanuel Vadot altr,ecc-parent = <&mmc>; 320*8ccc0d23SEmmanuel Vadot interrupts = <14 IRQ_TYPE_LEVEL_HIGH>, 321*8ccc0d23SEmmanuel Vadot <15 IRQ_TYPE_LEVEL_HIGH>; 322*8ccc0d23SEmmanuel Vadot }; 323*8ccc0d23SEmmanuel Vadot }; 324