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

Configure Feed

Select the types of activity you want to include in your feed.

dt-bindings: interrupt-controller: Convert marvell,cp110-icu to DT schema

Convert the Marvell ICU interrupt controller to DT schema format.

Add the missing addressing properties to read and translate child node
addresses.

Drop the legacy binding description and example.

Link: https://lore.kernel.org/r/20250505144524.1285795-1-robh@kernel.org
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>

+98 -112
+98
Documentation/devicetree/bindings/interrupt-controller/marvell,cp110-icu.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/marvell,cp110-icu.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + maintainers: 8 + - Miquel Raynal <miquel.raynal@bootlin.com> 9 + - Thomas Petazzoni <thomas.petazzoni@bootlin.com> 10 + 11 + title: Marvell ICU Interrupt Controller 12 + 13 + description: 14 + The Marvell ICU (Interrupt Consolidation Unit) controller is responsible for 15 + collecting all wired-interrupt sources in the CP and communicating them to the 16 + GIC in the AP. The unit translates interrupt requests on input wires to MSG 17 + memory mapped transactions to the GIC. These messages access different GIC 18 + memory areas depending on their type (NSR, SR, SEI, REI, etc). 19 + 20 + properties: 21 + compatible: 22 + const: marvell,cp110-icu 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + '#address-cells': 28 + const: 1 29 + 30 + '#size-cells': 31 + const: 1 32 + 33 + ranges: true 34 + 35 + patternProperties: 36 + "^interrupt-controller@": 37 + type: object 38 + description: Interrupt group child nodes 39 + additionalProperties: false 40 + 41 + properties: 42 + compatible: 43 + enum: 44 + - marvell,cp110-icu-nsr 45 + - marvell,cp110-icu-sr 46 + - marvell,cp110-icu-sei 47 + - marvell,cp110-icu-rei 48 + 49 + reg: 50 + maxItems: 1 51 + 52 + '#interrupt-cells': 53 + const: 2 54 + 55 + interrupt-controller: true 56 + 57 + msi-parent: 58 + maxItems: 1 59 + description: Phandle to the GICP controller 60 + 61 + required: 62 + - compatible 63 + - reg 64 + - '#interrupt-cells' 65 + - interrupt-controller 66 + - msi-parent 67 + 68 + required: 69 + - compatible 70 + - reg 71 + 72 + additionalProperties: false 73 + 74 + examples: 75 + - | 76 + interrupt-controller@1e0000 { 77 + compatible = "marvell,cp110-icu"; 78 + reg = <0x1e0000 0x440>; 79 + #address-cells = <1>; 80 + #size-cells = <1>; 81 + ranges; 82 + 83 + interrupt-controller@10 { 84 + compatible = "marvell,cp110-icu-nsr"; 85 + reg = <0x10 0x20>; 86 + #interrupt-cells = <2>; 87 + interrupt-controller; 88 + msi-parent = <&gicp>; 89 + }; 90 + 91 + interrupt-controller@50 { 92 + compatible = "marvell,cp110-icu-sei"; 93 + reg = <0x50 0x10>; 94 + #interrupt-cells = <2>; 95 + interrupt-controller; 96 + msi-parent = <&sei>; 97 + }; 98 + };
-112
Documentation/devicetree/bindings/interrupt-controller/marvell,icu.txt
··· 1 - Marvell ICU Interrupt Controller 2 - -------------------------------- 3 - 4 - The Marvell ICU (Interrupt Consolidation Unit) controller is 5 - responsible for collecting all wired-interrupt sources in the CP and 6 - communicating them to the GIC in the AP, the unit translates interrupt 7 - requests on input wires to MSG memory mapped transactions to the GIC. 8 - These messages will access a different GIC memory area depending on 9 - their type (NSR, SR, SEI, REI, etc). 10 - 11 - Required properties: 12 - 13 - - compatible: Should be "marvell,cp110-icu" 14 - 15 - - reg: Should contain ICU registers location and length. 16 - 17 - Subnodes: Each group of interrupt is declared as a subnode of the ICU, 18 - with their own compatible. 19 - 20 - Required properties for the icu_nsr/icu_sei subnodes: 21 - 22 - - compatible: Should be one of: 23 - * "marvell,cp110-icu-nsr" 24 - * "marvell,cp110-icu-sr" 25 - * "marvell,cp110-icu-sei" 26 - * "marvell,cp110-icu-rei" 27 - 28 - - #interrupt-cells: Specifies the number of cells needed to encode an 29 - interrupt source. The value shall be 2. 30 - 31 - The 1st cell is the index of the interrupt in the ICU unit. 32 - 33 - The 2nd cell is the type of the interrupt. See arm,gic.txt for 34 - details. 35 - 36 - - interrupt-controller: Identifies the node as an interrupt 37 - controller. 38 - 39 - - msi-parent: Should point to the GICP controller, the GIC extension 40 - that allows to trigger interrupts using MSG memory mapped 41 - transactions. 42 - 43 - Note: each 'interrupts' property referring to any 'icu_xxx' node shall 44 - have a different number within [0:206]. 45 - 46 - Example: 47 - 48 - icu: interrupt-controller@1e0000 { 49 - compatible = "marvell,cp110-icu"; 50 - reg = <0x1e0000 0x440>; 51 - 52 - CP110_LABEL(icu_nsr): interrupt-controller@10 { 53 - compatible = "marvell,cp110-icu-nsr"; 54 - reg = <0x10 0x20>; 55 - #interrupt-cells = <2>; 56 - interrupt-controller; 57 - msi-parent = <&gicp>; 58 - }; 59 - 60 - CP110_LABEL(icu_sei): interrupt-controller@50 { 61 - compatible = "marvell,cp110-icu-sei"; 62 - reg = <0x50 0x10>; 63 - #interrupt-cells = <2>; 64 - interrupt-controller; 65 - msi-parent = <&sei>; 66 - }; 67 - }; 68 - 69 - node1 { 70 - interrupt-parent = <&icu_nsr>; 71 - interrupts = <106 IRQ_TYPE_LEVEL_HIGH>; 72 - }; 73 - 74 - node2 { 75 - interrupt-parent = <&icu_sei>; 76 - interrupts = <107 IRQ_TYPE_LEVEL_HIGH>; 77 - }; 78 - 79 - /* Would not work with the above nodes */ 80 - node3 { 81 - interrupt-parent = <&icu_nsr>; 82 - interrupts = <107 IRQ_TYPE_LEVEL_HIGH>; 83 - }; 84 - 85 - The legacy bindings were different in this way: 86 - 87 - - #interrupt-cells: The value was 3. 88 - The 1st cell was the group type of the ICU interrupt. Possible 89 - group types were: 90 - ICU_GRP_NSR (0x0) : Shared peripheral interrupt, non-secure 91 - ICU_GRP_SR (0x1) : Shared peripheral interrupt, secure 92 - ICU_GRP_SEI (0x4) : System error interrupt 93 - ICU_GRP_REI (0x5) : RAM error interrupt 94 - The 2nd cell was the index of the interrupt in the ICU unit. 95 - The 3rd cell was the type of the interrupt. See arm,gic.txt for 96 - details. 97 - 98 - Example: 99 - 100 - icu: interrupt-controller@1e0000 { 101 - compatible = "marvell,cp110-icu"; 102 - reg = <0x1e0000 0x440>; 103 - 104 - #interrupt-cells = <3>; 105 - interrupt-controller; 106 - msi-parent = <&gicp>; 107 - }; 108 - 109 - node1 { 110 - interrupt-parent = <&icu>; 111 - interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>; 112 - };