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

dt-bindings: interrupt-controller: Add i.MX8qxp Display Controller interrupt controller

i.MX8qxp Display Controller has a built-in interrupt controller to support
Enable/Status/Preset/Clear interrupt bit.

Signed-off-by: Liu Ying <victor.liu@nxp.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250414035028.1561475-8-victor.liu@nxp.com

Liu Ying 57e464a3 c809469f

+318
+318
Documentation/devicetree/bindings/interrupt-controller/fsl,imx8qxp-dc-intc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interrupt-controller/fsl,imx8qxp-dc-intc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale i.MX8qxp Display Controller interrupt controller 8 + 9 + description: | 10 + The Display Controller has a built-in interrupt controller with the following 11 + features for all relevant HW events: 12 + 13 + * Enable bit (mask) 14 + * Status bit (set by an HW event) 15 + * Preset bit (can be used by SW to set status) 16 + * Clear bit (used by SW to reset the status) 17 + 18 + Each interrupt can be connected as IRQ (maskable) and/or NMI (non-maskable). 19 + Alternatively the un-masked trigger signals for all HW events are provided, 20 + allowing it to use a global interrupt controller instead. 21 + 22 + Each interrupt can be protected against SW running in user mode. In that case, 23 + only privileged AHB access can control the interrupt status. 24 + 25 + maintainers: 26 + - Liu Ying <victor.liu@nxp.com> 27 + 28 + properties: 29 + compatible: 30 + const: fsl,imx8qxp-dc-intc 31 + 32 + reg: 33 + maxItems: 1 34 + 35 + clocks: 36 + maxItems: 1 37 + 38 + interrupt-controller: true 39 + 40 + "#interrupt-cells": 41 + const: 1 42 + 43 + interrupts: 44 + items: 45 + - description: store9 shadow load interrupt(blit engine) 46 + - description: store9 frame complete interrupt(blit engine) 47 + - description: store9 sequence complete interrupt(blit engine) 48 + - description: 49 + extdst0 shadow load interrupt 50 + (display controller, content stream 0) 51 + - description: 52 + extdst0 frame complete interrupt 53 + (display controller, content stream 0) 54 + - description: 55 + extdst0 sequence complete interrupt 56 + (display controller, content stream 0) 57 + - description: 58 + extdst4 shadow load interrupt 59 + (display controller, safety stream 0) 60 + - description: 61 + extdst4 frame complete interrupt 62 + (display controller, safety stream 0) 63 + - description: 64 + extdst4 sequence complete interrupt 65 + (display controller, safety stream 0) 66 + - description: 67 + extdst1 shadow load interrupt 68 + (display controller, content stream 1) 69 + - description: 70 + extdst1 frame complete interrupt 71 + (display controller, content stream 1) 72 + - description: 73 + extdst1 sequence complete interrupt 74 + (display controller, content stream 1) 75 + - description: 76 + extdst5 shadow load interrupt 77 + (display controller, safety stream 1) 78 + - description: 79 + extdst5 frame complete interrupt 80 + (display controller, safety stream 1) 81 + - description: 82 + extdst5 sequence complete interrupt 83 + (display controller, safety stream 1) 84 + - description: 85 + disengcfg0 shadow load interrupt 86 + (display controller, display stream 0) 87 + - description: 88 + disengcfg0 frame complete interrupt 89 + (display controller, display stream 0) 90 + - description: 91 + disengcfg0 sequence complete interrupt 92 + (display controller, display stream 0) 93 + - description: 94 + framegen0 programmable interrupt0 95 + (display controller, display stream 0) 96 + - description: 97 + framegen0 programmable interrupt1 98 + (display controller, display stream 0) 99 + - description: 100 + framegen0 programmable interrupt2 101 + (display controller, display stream 0) 102 + - description: 103 + framegen0 programmable interrupt3 104 + (display controller, display stream 0) 105 + - description: 106 + signature0 shadow load interrupt 107 + (display controller, display stream 0) 108 + - description: 109 + signature0 measurement valid interrupt 110 + (display controller, display stream 0) 111 + - description: 112 + signature0 error condition interrupt 113 + (display controller, display stream 0) 114 + - description: 115 + disengcfg1 shadow load interrupt 116 + (display controller, display stream 1) 117 + - description: 118 + disengcfg1 frame complete interrupt 119 + (display controller, display stream 1) 120 + - description: 121 + disengcfg1 sequence complete interrupt 122 + (display controller, display stream 1) 123 + - description: 124 + framegen1 programmable interrupt0 125 + (display controller, display stream 1) 126 + - description: 127 + framegen1 programmable interrupt1 128 + (display controller, display stream 1) 129 + - description: 130 + framegen1 programmable interrupt2 131 + (display controller, display stream 1) 132 + - description: 133 + framegen1 programmable interrupt3 134 + (display controller, display stream 1) 135 + - description: 136 + signature1 shadow load interrupt 137 + (display controller, display stream 1) 138 + - description: 139 + signature1 measurement valid interrupt 140 + (display controller, display stream 1) 141 + - description: 142 + signature1 error condition interrupt 143 + (display controller, display stream 1) 144 + - description: reserved 145 + - description: 146 + command sequencer error condition interrupt(command sequencer) 147 + - description: 148 + common control software interrupt0(common control) 149 + - description: 150 + common control software interrupt1(common control) 151 + - description: 152 + common control software interrupt2(common control) 153 + - description: 154 + common control software interrupt3(common control) 155 + - description: 156 + framegen0 synchronization status activated interrupt 157 + (display controller, safety stream 0) 158 + - description: 159 + framegen0 synchronization status deactivated interrupt 160 + (display controller, safety stream 0) 161 + - description: 162 + framegen0 synchronization status activated interrupt 163 + (display controller, content stream 0) 164 + - description: 165 + framegen0 synchronization status deactivated interrupt 166 + (display controller, content stream 0) 167 + - description: 168 + framegen1 synchronization status activated interrupt 169 + (display controller, safety stream 1) 170 + - description: 171 + framegen1 synchronization status deactivated interrupt 172 + (display controller, safety stream 1) 173 + - description: 174 + framegen1 synchronization status activated interrupt 175 + (display controller, content stream 1) 176 + - description: 177 + framegen1 synchronization status deactivated interrupt 178 + (display controller, content stream 1) 179 + minItems: 49 180 + 181 + interrupt-names: 182 + items: 183 + - const: store9_shdload 184 + - const: store9_framecomplete 185 + - const: store9_seqcomplete 186 + - const: extdst0_shdload 187 + - const: extdst0_framecomplete 188 + - const: extdst0_seqcomplete 189 + - const: extdst4_shdload 190 + - const: extdst4_framecomplete 191 + - const: extdst4_seqcomplete 192 + - const: extdst1_shdload 193 + - const: extdst1_framecomplete 194 + - const: extdst1_seqcomplete 195 + - const: extdst5_shdload 196 + - const: extdst5_framecomplete 197 + - const: extdst5_seqcomplete 198 + - const: disengcfg_shdload0 199 + - const: disengcfg_framecomplete0 200 + - const: disengcfg_seqcomplete0 201 + - const: framegen0_int0 202 + - const: framegen0_int1 203 + - const: framegen0_int2 204 + - const: framegen0_int3 205 + - const: sig0_shdload 206 + - const: sig0_valid 207 + - const: sig0_error 208 + - const: disengcfg_shdload1 209 + - const: disengcfg_framecomplete1 210 + - const: disengcfg_seqcomplete1 211 + - const: framegen1_int0 212 + - const: framegen1_int1 213 + - const: framegen1_int2 214 + - const: framegen1_int3 215 + - const: sig1_shdload 216 + - const: sig1_valid 217 + - const: sig1_error 218 + - const: reserved 219 + - const: cmdseq_error 220 + - const: comctrl_sw0 221 + - const: comctrl_sw1 222 + - const: comctrl_sw2 223 + - const: comctrl_sw3 224 + - const: framegen0_primsync_on 225 + - const: framegen0_primsync_off 226 + - const: framegen0_secsync_on 227 + - const: framegen0_secsync_off 228 + - const: framegen1_primsync_on 229 + - const: framegen1_primsync_off 230 + - const: framegen1_secsync_on 231 + - const: framegen1_secsync_off 232 + minItems: 49 233 + 234 + required: 235 + - compatible 236 + - reg 237 + - clocks 238 + - interrupt-controller 239 + - "#interrupt-cells" 240 + - interrupts 241 + - interrupt-names 242 + 243 + additionalProperties: false 244 + 245 + examples: 246 + - | 247 + #include <dt-bindings/clock/imx8-lpcg.h> 248 + 249 + interrupt-controller@56180040 { 250 + compatible = "fsl,imx8qxp-dc-intc"; 251 + reg = <0x56180040 0x60>; 252 + clocks = <&dc0_lpcg IMX_LPCG_CLK_5>; 253 + interrupt-controller; 254 + interrupt-parent = <&dc0_irqsteer>; 255 + #interrupt-cells = <1>; 256 + interrupts = <448>, <449>, <450>, <64>, 257 + <65>, <66>, <67>, <68>, 258 + <69>, <70>, <193>, <194>, 259 + <195>, <196>, <197>, <72>, 260 + <73>, <74>, <75>, <76>, 261 + <77>, <78>, <79>, <80>, 262 + <81>, <199>, <200>, <201>, 263 + <202>, <203>, <204>, <205>, 264 + <206>, <207>, <208>, <5>, 265 + <0>, <1>, <2>, <3>, 266 + <4>, <82>, <83>, <84>, 267 + <85>, <209>, <210>, <211>, 268 + <212>; 269 + interrupt-names = "store9_shdload", 270 + "store9_framecomplete", 271 + "store9_seqcomplete", 272 + "extdst0_shdload", 273 + "extdst0_framecomplete", 274 + "extdst0_seqcomplete", 275 + "extdst4_shdload", 276 + "extdst4_framecomplete", 277 + "extdst4_seqcomplete", 278 + "extdst1_shdload", 279 + "extdst1_framecomplete", 280 + "extdst1_seqcomplete", 281 + "extdst5_shdload", 282 + "extdst5_framecomplete", 283 + "extdst5_seqcomplete", 284 + "disengcfg_shdload0", 285 + "disengcfg_framecomplete0", 286 + "disengcfg_seqcomplete0", 287 + "framegen0_int0", 288 + "framegen0_int1", 289 + "framegen0_int2", 290 + "framegen0_int3", 291 + "sig0_shdload", 292 + "sig0_valid", 293 + "sig0_error", 294 + "disengcfg_shdload1", 295 + "disengcfg_framecomplete1", 296 + "disengcfg_seqcomplete1", 297 + "framegen1_int0", 298 + "framegen1_int1", 299 + "framegen1_int2", 300 + "framegen1_int3", 301 + "sig1_shdload", 302 + "sig1_valid", 303 + "sig1_error", 304 + "reserved", 305 + "cmdseq_error", 306 + "comctrl_sw0", 307 + "comctrl_sw1", 308 + "comctrl_sw2", 309 + "comctrl_sw3", 310 + "framegen0_primsync_on", 311 + "framegen0_primsync_off", 312 + "framegen0_secsync_on", 313 + "framegen0_secsync_off", 314 + "framegen1_primsync_on", 315 + "framegen1_primsync_off", 316 + "framegen1_secsync_on", 317 + "framegen1_secsync_off"; 318 + };