devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding
@ 2025-07-22  6:49 Michal Simek
  2025-07-22  7:17 ` Krzysztof Kozlowski
  2025-07-22  7:40 ` Krzysztof Kozlowski
  0 siblings, 2 replies; 6+ messages in thread
From: Michal Simek @ 2025-07-22  6:49 UTC (permalink / raw)
  To: linux-kernel, monstr, michal.simek, git
  Cc: Conor Dooley, Krzysztof Kozlowski, Rob Herring, Thomas Gleixner,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

Add description for AMD/Xilinx interrupt controller.
IP acts as primary interrupt controller on Microblaze systems or can be
used as secondary interrupt controller on ARM based systems like Zynq,
ZynqMP, Versal or Versal Gen 2. Also as secondary interrupt controller on
Microblaze-V (Risc-V) systems.

Over the years IP exists in multiple variants based on attached bus as OPB,
PLB or AXI that's why generic filename is used.

Signed-off-by: Michal Simek <michal.simek@amd.com>
---

https://docs.amd.com/v/u/en-US/pg099-axi-intc
---
 .../interrupt-controller/xlnx,intc.yaml       | 95 +++++++++++++++++++
 1 file changed, 95 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/xlnx,intc.yaml

diff --git a/Documentation/devicetree/bindings/interrupt-controller/xlnx,intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/xlnx,intc.yaml
new file mode 100644
index 000000000000..816f78d4e8c4
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/xlnx,intc.yaml
@@ -0,0 +1,95 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/xlnx,intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx Interrupt Controller
+
+maintainers:
+  - Michal Simek <michal.simek@amd.com>
+
+description:
+  The controller is a soft IP core that is configured at build time for the
+  number of interrupts and the type of each interrupt. These details cannot
+  be changed at run time.
+
+properties:
+  compatible:
+    const: xlnx,xps-intc-1.00.a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 2
+    description:
+      Specifies the number of cells needed to encode an interrupt source.
+      The value shall be a minimum of 1. The Xilinx device trees typically
+      use 2 but the 2nd value is not used.
+
+  interrupt-controller: true
+
+  interrupts:
+    maxItems: 1
+    description:
+      Specifies the interrupt of the parent controller from which it is chained.
+
+  xlnx,kind-of-intr:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      A 32 bit value specifying the interrupt type for each possible interrupt
+      (1 = edge, 0 = level). The interrupt type typically comes in thru
+      the device tree node of the interrupt generating device, but in this case
+      the interrupt type is determined by the interrupt controller based on how
+      it was implemented.
+
+  xlnx,num-intr-inputs:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Specifies the number of interrupts supported by the specific
+      implementation of the controller (1-32).
+
+required:
+  - reg
+  - "#interrupt-cells"
+  - interrupt-controller
+  - xlnx,kind-of-intr
+  - xlnx,num-intr-inputs
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@41800000 {
+      compatible = "xlnx,xps-intc-1.00.a";
+      reg = <0x41800000 0x10000>;
+      #interrupt-cells = <2>;
+      interrupt-controller;
+      xlnx,kind-of-intr = <0x1>;
+      xlnx,num-intr-inputs = <0x1>;
+    };
+
+  - |
+    /*
+     * Chained Example - The interrupt is chained to hardware
+     * interrupt 61 (29 + 32) of the GIC for Zynq.
+     */
+    interrupt-controller@41800000 {
+      compatible = "xlnx,xps-intc-1.00.a";
+      reg = <0x41800000 0x10000>;
+      #interrupt-cells = <2>;
+      interrupt-controller;
+      interrupts = <0 29 4>;
+      xlnx,kind-of-intr = <0x1>;
+      xlnx,num-intr-inputs = <0x1>;
+    };
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding
  2025-07-22  6:49 [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding Michal Simek
@ 2025-07-22  7:17 ` Krzysztof Kozlowski
  2025-07-22  7:32   ` Michal Simek
  2025-07-22  7:40 ` Krzysztof Kozlowski
  1 sibling, 1 reply; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-22  7:17 UTC (permalink / raw)
  To: Michal Simek, linux-kernel, monstr, michal.simek, git
  Cc: Conor Dooley, Krzysztof Kozlowski, Rob Herring, Thomas Gleixner,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

On 22/07/2025 08:49, Michal Simek wrote:
> Add description for AMD/Xilinx interrupt controller.
> IP acts as primary interrupt controller on Microblaze systems or can be
> used as secondary interrupt controller on ARM based systems like Zynq,
> ZynqMP, Versal or Versal Gen 2. Also as secondary interrupt controller on
> Microblaze-V (Risc-V) systems.
> 
> Over the years IP exists in multiple variants based on attached bus as OPB,
> PLB or AXI that's why generic filename is used.
> 
> Signed-off-by: Michal Simek <michal.simek@amd.com>
> ---
> 
> https://docs.amd.com/v/u/en-US/pg099-axi-intc


We usually do not take bindings without users, that's why bindings patch
is always part of some other patchset. Commit msg also did not clarify
the usecase here (or exception).

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding
  2025-07-22  7:17 ` Krzysztof Kozlowski
@ 2025-07-22  7:32   ` Michal Simek
  2025-07-22  7:37     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 6+ messages in thread
From: Michal Simek @ 2025-07-22  7:32 UTC (permalink / raw)
  To: Krzysztof Kozlowski, linux-kernel, monstr, michal.simek, git
  Cc: Conor Dooley, Krzysztof Kozlowski, Rob Herring, Thomas Gleixner,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS



On 7/22/25 09:17, Krzysztof Kozlowski wrote:
> On 22/07/2025 08:49, Michal Simek wrote:
>> Add description for AMD/Xilinx interrupt controller.
>> IP acts as primary interrupt controller on Microblaze systems or can be
>> used as secondary interrupt controller on ARM based systems like Zynq,
>> ZynqMP, Versal or Versal Gen 2. Also as secondary interrupt controller on
>> Microblaze-V (Risc-V) systems.
>>
>> Over the years IP exists in multiple variants based on attached bus as OPB,
>> PLB or AXI that's why generic filename is used.
>>
>> Signed-off-by: Michal Simek <michal.simek@amd.com>
>> ---
>>
>> https://docs.amd.com/v/u/en-US/pg099-axi-intc
> 
> 
> We usually do not take bindings without users, that's why bindings patch
> is always part of some other patchset. Commit msg also did not clarify
> the usecase here (or exception).

Example DT is already the part of arch/microblaze/.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/microblaze/boot/dts/system.dts?h=v6.16-rc7#n338

DT has been added in 2014 before dt bindings that's why it was never documented.

Thanks,
Michal

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding
  2025-07-22  7:32   ` Michal Simek
@ 2025-07-22  7:37     ` Krzysztof Kozlowski
  0 siblings, 0 replies; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-22  7:37 UTC (permalink / raw)
  To: Michal Simek
  Cc: linux-kernel, monstr, michal.simek, git, Conor Dooley,
	Krzysztof Kozlowski, Rob Herring, Thomas Gleixner,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

On Tue, Jul 22, 2025 at 09:32:58AM +0200, Michal Simek wrote:
> 
> 
> On 7/22/25 09:17, Krzysztof Kozlowski wrote:
> > On 22/07/2025 08:49, Michal Simek wrote:
> > > Add description for AMD/Xilinx interrupt controller.
> > > IP acts as primary interrupt controller on Microblaze systems or can be
> > > used as secondary interrupt controller on ARM based systems like Zynq,
> > > ZynqMP, Versal or Versal Gen 2. Also as secondary interrupt controller on
> > > Microblaze-V (Risc-V) systems.
> > > 
> > > Over the years IP exists in multiple variants based on attached bus as OPB,
> > > PLB or AXI that's why generic filename is used.
> > > 
> > > Signed-off-by: Michal Simek <michal.simek@amd.com>
> > > ---
> > > 
> > > https://docs.amd.com/v/u/en-US/pg099-axi-intc
> > 
> > 
> > We usually do not take bindings without users, that's why bindings patch
> > is always part of some other patchset. Commit msg also did not clarify
> > the usecase here (or exception).
> 
> Example DT is already the part of arch/microblaze/.
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/microblaze/boot/dts/system.dts?h=v6.16-rc7#n338
> 
> DT has been added in 2014 before dt bindings that's why it was never documented.

OK, this must be in commit msg, because that's the reason why you are
doing it. You are not adding new device. You are documenting missing
binding, already used.

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding
  2025-07-22  6:49 [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding Michal Simek
  2025-07-22  7:17 ` Krzysztof Kozlowski
@ 2025-07-22  7:40 ` Krzysztof Kozlowski
  2025-07-22  8:12   ` Michal Simek
  1 sibling, 1 reply; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-22  7:40 UTC (permalink / raw)
  To: Michal Simek
  Cc: linux-kernel, monstr, michal.simek, git, Conor Dooley,
	Krzysztof Kozlowski, Rob Herring, Thomas Gleixner,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

On Tue, Jul 22, 2025 at 08:49:42AM +0200, Michal Simek wrote:
> +  "#interrupt-cells":
> +    const: 2
> +    description:
> +      Specifies the number of cells needed to encode an interrupt source.
> +      The value shall be a minimum of 1. The Xilinx device trees typically
> +      use 2 but the 2nd value is not used.
> +
> +  interrupt-controller: true
> +
> +  interrupts:
> +    maxItems: 1
> +    description:
> +      Specifies the interrupt of the parent controller from which it is chained.
> +
> +  xlnx,kind-of-intr:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      A 32 bit value specifying the interrupt type for each possible interrupt
> +      (1 = edge, 0 = level). The interrupt type typically comes in thru
> +      the device tree node of the interrupt generating device, but in this case
> +      the interrupt type is determined by the interrupt controller based on how
> +      it was implemented.

enum: [ 0, 1 ]

> +
> +  xlnx,num-intr-inputs:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      Specifies the number of interrupts supported by the specific
> +      implementation of the controller (1-32).

minimum:
maximum:

> +
> +required:
> +  - reg
> +  - "#interrupt-cells"
> +  - interrupt-controller
> +  - xlnx,kind-of-intr
> +  - xlnx,num-intr-inputs
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    interrupt-controller@41800000 {
> +      compatible = "xlnx,xps-intc-1.00.a";
> +      reg = <0x41800000 0x10000>;
> +      #interrupt-cells = <2>;
> +      interrupt-controller;
> +      xlnx,kind-of-intr = <0x1>;
> +      xlnx,num-intr-inputs = <0x1>;

This should be decimal, we (humans) count in decimal. xlnx,kind-of-intr
probably as well, for consistency and simplicity.

> +    };
> +
> +  - |
> +    /*
> +     * Chained Example - The interrupt is chained to hardware
> +     * interrupt 61 (29 + 32) of the GIC for Zynq.
> +     */
> +    interrupt-controller@41800000 {
> +      compatible = "xlnx,xps-intc-1.00.a";
> +      reg = <0x41800000 0x10000>;
> +      #interrupt-cells = <2>;
> +      interrupt-controller;
> +      interrupts = <0 29 4>;

Use defines for standard flags. Or drop the example, difference in one
property usually is not worth documenting.

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding
  2025-07-22  7:40 ` Krzysztof Kozlowski
@ 2025-07-22  8:12   ` Michal Simek
  0 siblings, 0 replies; 6+ messages in thread
From: Michal Simek @ 2025-07-22  8:12 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: linux-kernel, monstr, michal.simek, git, Conor Dooley,
	Krzysztof Kozlowski, Rob Herring, Thomas Gleixner,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS



On 7/22/25 09:40, Krzysztof Kozlowski wrote:
> On Tue, Jul 22, 2025 at 08:49:42AM +0200, Michal Simek wrote:
>> +  "#interrupt-cells":
>> +    const: 2
>> +    description:
>> +      Specifies the number of cells needed to encode an interrupt source.
>> +      The value shall be a minimum of 1. The Xilinx device trees typically
>> +      use 2 but the 2nd value is not used.
>> +
>> +  interrupt-controller: true
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +    description:
>> +      Specifies the interrupt of the parent controller from which it is chained.
>> +
>> +  xlnx,kind-of-intr:
>> +    $ref: /schemas/types.yaml#/definitions/uint32
>> +    description:
>> +      A 32 bit value specifying the interrupt type for each possible interrupt
>> +      (1 = edge, 0 = level). The interrupt type typically comes in thru
>> +      the device tree node of the interrupt generating device, but in this case
>> +      the interrupt type is determined by the interrupt controller based on how
>> +      it was implemented.
> 
> enum: [ 0, 1 ]

It is hex value for all interrupts together.
And bit position correspond to interrupt line. And you can mix edge or level 
interrupts together and this is the property which distinguish them.

I know that separate cell is normally used but it has never been converted to be 
like that but interrupt-cells is 2 that binding allows using this description too.

Thanks,
Michal






^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-07-22  8:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-22  6:49 [PATCH] dt-bindings: interrupt-controller: Add Xilinx INTC binding Michal Simek
2025-07-22  7:17 ` Krzysztof Kozlowski
2025-07-22  7:32   ` Michal Simek
2025-07-22  7:37     ` Krzysztof Kozlowski
2025-07-22  7:40 ` Krzysztof Kozlowski
2025-07-22  8:12   ` Michal Simek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).