Skip to contentSkip to conversation

dt-bindings: interrupt-controller: Fix some loongson,liointc warnings

PATCH Superseded Binbin Zhou 4 participants 14 messages Oct 31, 2023 – Nov 1, 2023

Subsystems (5)

v3 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

v3 cover dt-bindings: interrupt-controller: Fix some loongson,liointc warnings

Hi all:

Some liointc-related DTBS_CHECK warnings were found when trying to introduce the Loongson-2K DTS{I} for LoongArch.
This patch series attempts to fix those warnings, as well as fixing non-standard property naming.

Of course, these fixes also apply to MIPS Loongson-2K1000/Loongson-3A dts{i}.

Thanks.

-----
V3:
patch(1/5):
- new patch, 'loongson,parent_int_map' renamed to 'loongson,parent-int-map';
patch(2/5)(3/5):
- Separate the change points into separate patches;
patch(4/5):
- new patch, make sure both parent map forms can be parsed;
patch(5/5):
- new patch, fix 'loongson,parent_int_map' references in mips loongson dts{i}.

Link to V2:
https://lore.kernel.org/all/[email protected]/

V2:
1. Update commit message;
2. "interruprt-names" should be "required", the driver gets the parent interrupts through it;
3. Add more descriptions to explain the rationale for multiple nodes;
4. Rewrite if-else statements.

Link to V1:
https://lore.kernel.org/all/[email protected]/

Binbin Zhou (5):
dt-bindings: interrupt-controller: loongson,liointc: Standardize the
naming of 'loongson,parent-int-map'
dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check
warning for reg-names
dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check
for interrupt-names
irqchip/loongson-liointc: Fix 'loongson,parent_int_map' parse
MIPS: Loongson64: DTS: Fix 'loongson,parent_int_map' references

 .../loongson,liointc.yaml                     | 44 +++++++++++++------
 .../boot/dts/loongson/loongson64-2k1000.dtsi  |  4 +-
 .../dts/loongson/loongson64c-package.dtsi     |  2 +-
 .../dts/loongson/loongson64g-package.dtsi     |  2 +-
 .../dts/loongson/loongson64v_4core_virtio.dts |  2 +-
 drivers/irqchip/irq-loongson-liointc.c        |  7 ++-
 6 files changed, 41 insertions(+), 20 deletions(-)
Signature · 1 line
2.39.3
#1 lore raw

PATCH v3 1/5 dt-bindings: interrupt-controller: loongson,liointc: Standardize the naming of 'loongson,parent-int-map'

Since the 'loongson,parent_int_map' attribute naming is non-standard, we should use 'loongson,parent-int-map' instead.
Also, 'loongson,parent_int_map' should be marked as deprecated.

---
 .../interrupt-controller/loongson,liointc.yaml    | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +11 -4
index 00b570c82903..0d9511b8a792 100644
@@ -55,6 +55,7 @@ properties:
     const: 2
 
   loongson,parent_int_map:
+    deprecated: true
     description: |
       This property points how the children interrupts will be mapped into CPU
       interrupt lines. Each cell refers to a parent interrupt line from 0 to 3
@@ -65,14 +66,21 @@ properties:
     minItems: 4
     maxItems: 4
 
+  loongson,parent-int-map:
+    description: |
+      Exactly the same as 'loongson,parent_int_map', we just replaced the
+      unstandardized use of underscores.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 4
+    maxItems: 4
+
 required:
   - compatible
   - reg
   - interrupts
   - interrupt-controller
   - '#interrupt-cells'
-  - loongson,parent_int_map
-
+  - loongson,parent-int-map
 
 unevaluatedProperties: false
 
@@ -109,11 +117,10 @@ examples:
       interrupts = <2>, <3>;
       interrupt-names = "int0", "int1";
 
-      loongson,parent_int_map = <0xf0ffffff>, /* int0 */
+      loongson,parent-int-map = <0xf0ffffff>, /* int0 */
                                 <0x0f000000>, /* int1 */
                                 <0x00000000>, /* int2 */
                                 <0x00000000>; /* int3 */
-
     };
 
 ...
Signature · 1 line
2.39.3
maintainer
#2 lore raw

Re: [PATCH v3 1/5] dt-bindings: interrupt-controller: loongson,liointc: Standardize the naming of 'loongson,parent-int-map'

Quoted 3 lines · Binbin Zhou

Since the 'loongson,parent_int_map' attribute naming is non-standard, we should use 'loongson,parent-int-map' instead.
Also, 'loongson,parent_int_map' should be marked as deprecated.

While yes, '-' is preferred over '_', I don't think it is worth carrying support (here and in the kernel) for both.

Quoted 5 lines
---
 .../interrupt-controller/loongson,liointc.yaml    | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
#3 lore raw

Re: [PATCH v3 1/5] dt-bindings: interrupt-controller: loongson,liointc: Standardize the naming of 'loongson,parent-int-map'

Quoted 8 lines · Rob Herring
Quoted 3 lines · Binbin Zhou

Since the 'loongson,parent_int_map' attribute naming is non-standard, we should use 'loongson,parent-int-map' instead.
Also, 'loongson,parent_int_map' should be marked as deprecated.

While yes, '-' is preferred over '_', I don't think it is worth carrying support (here and in the kernel) for both.

Hi Rob:

We try to keep it compatible as the MIPS Loongson has been using this property for a long time.
Krzysztof also thinks it is required.

Thanks.
Binbin

Quoted 6 lines
Quoted 6 lines
---
 .../interrupt-controller/loongson,liointc.yaml    | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
#4 lore raw

PATCH v3 2/5 dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check warning for reg-names

In reply to Binbin Zhou

As we know, the Loongson-2K0500 is a single-core CPU, and the core1-related register (isr1) does not exist, and we need a separate declaration.

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: reg-names: ['main', 'isr0'] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: Unevaluated properties are not allowed ('reg-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: reg: [[0, 534844416, 0, 64], [0, 534843456, 0, 8]] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: reg-names: ['main', 'isr0'] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

---
 .../loongson,liointc.yaml                     | 22 ++++++++++++++-----
 1 file changed, 16 insertions(+), 6 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +16 -6
index 0d9511b8a792..7393d7dfbe82 100644
@@ -11,8 +11,13 @@ maintainers:
 
 description: |
   This interrupt controller is found in the Loongson-3 family of chips and
-  Loongson-2K1000 chip, as the primary package interrupt controller which
+  Loongson-2K series chips, as the primary package interrupt controller which
   can route local I/O interrupt to interrupt lines of cores.
+  Be aware of the following points.
+  1.The Loongson-2K0500 is a single core CPU, the isr1 register could not be defined;
+  2.The Loongson-2K0500/2K1000 has 64 device interrupt sources as inputs, so we
+    need to define two nodes in dts{i} to describe the "0-31" and "32-61" interrupt
+    sources respectively.
 
 allOf:
   - $ref: /schemas/interrupt-controller.yaml#
@@ -29,10 +34,14 @@ properties:
     maxItems: 3
 
   reg-names:
-    items:
-      - const: main
-      - const: isr0
-      - const: isr1
+    oneOf:
+      - items:
+          - const: main
+          - const: isr0
+      - items:
+          - const: main
+          - const: isr0
+          - const: isr1
 
   interrupt-controller: true
 
@@ -94,7 +103,8 @@ if:
 then:
   properties:
     reg:
-      minItems: 3
+      minItems: 2
+      maxItems: 3
 
   required:
     - reg-names
Signature · 1 line
2.39.3
maintainer Acked-by on v3 2/5
#5 lore raw

Re: [PATCH v3 2/5] dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check warning for reg-names

Quoted 26 lines · 在2023年10月31日十月 上午2:36,Binbin Zhou写道:

As we know, the Loongson-2K0500 is a single-core CPU, and the core1-related register (isr1) does not exist, and we need a separate declaration.

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11400: reg-names: ['main', 'isr0'] is too short
From schema:
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11400: Unevaluated properties are not allowed ('reg-names' was unexpected)
From schema:
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11400: reg: [[0, 534844416, 0, 64], [0, 534843456, 0, 8]] is too short
From schema:
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11440: reg-names: ['main', 'isr0'] is too short
From schema:
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

Quoted 2 lines

---

[...]

Signature · 1 line
- Jiaxun
maintainer
#6 lore raw

Re: [PATCH v3 2/5] dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check warning for reg-names

In reply to Binbin Zhou
Quoted 46 lines · Binbin Zhou

As we know, the Loongson-2K0500 is a single-core CPU, and the core1-related register (isr1) does not exist, and we need a separate declaration.

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: reg-names: ['main', 'isr0'] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: Unevaluated properties are not allowed ('reg-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: reg: [[0, 534844416, 0, 64], [0, 534843456, 0, 8]] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: reg-names: ['main', 'isr0'] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

---
 .../loongson,liointc.yaml                     | 22 ++++++++++++++-----
 1 file changed, 16 insertions(+), 6 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +6 -3
index 0d9511b8a792..7393d7dfbe82 100644
@@ -11,8 +11,13 @@ maintainers:
 
 description: |
   This interrupt controller is found in the Loongson-3 family of chips and
-  Loongson-2K1000 chip, as the primary package interrupt controller which
+  Loongson-2K series chips, as the primary package interrupt controller which
   can route local I/O interrupt to interrupt lines of cores.
+  Be aware of the following points.
+  1.The Loongson-2K0500 is a single core CPU, the isr1 register could not be defined;
+  2.The Loongson-2K0500/2K1000 has 64 device interrupt sources as inputs, so we
+    need to define two nodes in dts{i} to describe the "0-31" and "32-61" interrupt
+    sources respectively.
 
 allOf:
   - $ref: /schemas/interrupt-controller.yaml#
@@ -29,10 +34,14 @@ properties:
     maxItems: 3
 
   reg-names:
-    items:
-      - const: main

Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml properties: · line 44

Quoted 10 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +8 -2
-      - const: isr0
-      - const: isr1
+    oneOf:
+      - items:
+          - const: main
+          - const: isr0
+      - items:
+          - const: main
+          - const: isr0
+          - const: isr1

Just adding 'minItems: 2' accomplishes the same thing without duplicating the list.

Quoted 16 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +2 -1
   interrupt-controller: true
 
@@ -94,7 +103,8 @@ if:
 then:
   properties:
     reg:
-      minItems: 3
+      minItems: 2
+      maxItems: 3
 
   required:
     - reg-names
Signature · 1 line
2.39.3
#7 lore raw

Re: [PATCH v3 2/5] dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check warning for reg-names

Quoted 45 lines · Rob Herring
Quoted 43 lines · Binbin Zhou

As we know, the Loongson-2K0500 is a single-core CPU, and the core1-related register (isr1) does not exist, and we need a separate declaration.

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: reg-names: ['main', 'isr0'] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: Unevaluated properties are not allowed ('reg-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11400: reg: [[0, 534844416, 0, 64], [0, 534843456, 0, 8]] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: reg-names: ['main', 'isr0'] is too short
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

---
 .../loongson,liointc.yaml                     | 22 ++++++++++++++-----
 1 file changed, 16 insertions(+), 6 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +6 -1
index 0d9511b8a792..7393d7dfbe82 100644
@@ -11,8 +11,13 @@ maintainers:
 
 description: |
   This interrupt controller is found in the Loongson-3 family of chips and
-  Loongson-2K1000 chip, as the primary package interrupt controller which
+  Loongson-2K series chips, as the primary package interrupt controller which
   can route local I/O interrupt to interrupt lines of cores.
+  Be aware of the following points.
+  1.The Loongson-2K0500 is a single core CPU, the isr1 register could not be defined;
+  2.The Loongson-2K0500/2K1000 has 64 device interrupt sources as inputs, so we
+    need to define two nodes in dts{i} to describe the "0-31" and "32-61" interrupt
+    sources respectively.
 
 allOf:
   - $ref: /schemas/interrupt-controller.yaml#
@@ -29,10 +34,14 @@ properties:
     maxItems: 3
 
Quoted 16 lines

Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml properties: · line 44

Quoted 13 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +8 -4
   reg-names:
-    items:
-      - const: main
-      - const: isr0
-      - const: isr1
+    oneOf:
+      - items:
+          - const: main
+          - const: isr0
+      - items:
+          - const: main
+          - const: isr0
+          - const: isr1

Just adding 'minItems: 2' accomplishes the same thing without duplicating the list.

OK, I will do it.

Thanks.
Binbin

Quoted 17 lines
Quoted 17 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +2 -2
   interrupt-controller: true
 
@@ -94,7 +103,8 @@ if:
 then:
   properties:
     reg:
-      minItems: 3
+      minItems: 2
+      maxItems: 3
 
   required:
     - reg-names
--

2.39.3

#8 lore raw

PATCH v3 3/5 dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check for interrupt-names

In reply to Binbin Zhou

The Loongson-2K0500/2K1000 CPUs have 64 interrupt sources as inputs, and a route-mapped node handles up to 32 interrupt sources, so two liointc nodes are defined in dts{i}.
Of course, we need to ensure that the routing outputs (intx) of the two nodes cannot conflict.

For example, in Loongson-2K1000, 'int0' is typically used by the liointc0 node, then the liointc1 node can only use the outputs starting with 'int1'.

So "interrupt-names" should be defined by "pattern".

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: interrupt-names:0: 'int0' was expected
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: Unevaluated properties are not allowed ('interrupt-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
DTC_CHK arch/loongarch/boot/dts/loongson-2k1000-ref.dtb
arch/loongarch/boot/dts/loongson-2k1000-ref.dtb: interrupt-controller@1fe01440: interrupt-names:0: 'int0' was expected
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k1000-ref.dtb: interrupt-controller@1fe01440: Unevaluated properties are not allowed ('interrupt-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

---
 .../bindings/interrupt-controller/loongson,liointc.yaml    | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +3 -4
index 7393d7dfbe82..a90c609d351e 100644
@@ -54,11 +54,9 @@ properties:
   interrupt-names:
     description: List of names for the parent interrupts.
     items:
-      - const: int0
-      - const: int1
-      - const: int2
-      - const: int3
+      pattern: int[0-3]
     minItems: 1
+    maxItems: 4
 
   '#interrupt-cells':
     const: 2
@@ -87,6 +85,7 @@ required:
   - compatible
   - reg
   - interrupts
+  - interrupt-names
   - interrupt-controller
   - '#interrupt-cells'
   - loongson,parent-int-map
Signature · 1 line
2.39.3
maintainer
#9 lore raw

Re: [PATCH v3 3/5] dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check for interrupt-names

Quoted 49 lines · Binbin Zhou

The Loongson-2K0500/2K1000 CPUs have 64 interrupt sources as inputs, and a route-mapped node handles up to 32 interrupt sources, so two liointc nodes are defined in dts{i}.
Of course, we need to ensure that the routing outputs (intx) of the two nodes cannot conflict.

For example, in Loongson-2K1000, 'int0' is typically used by the liointc0 node, then the liointc1 node can only use the outputs starting with 'int1'.

So "interrupt-names" should be defined by "pattern".

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: interrupt-names:0: 'int0' was expected
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: Unevaluated properties are not allowed ('interrupt-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
DTC_CHK arch/loongarch/boot/dts/loongson-2k1000-ref.dtb
arch/loongarch/boot/dts/loongson-2k1000-ref.dtb: interrupt-controller@1fe01440: interrupt-names:0: 'int0' was expected
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k1000-ref.dtb: interrupt-controller@1fe01440: Unevaluated properties are not allowed ('interrupt-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

---
 .../bindings/interrupt-controller/loongson,liointc.yaml    | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +2 -4
index 7393d7dfbe82..a90c609d351e 100644
@@ -54,11 +54,9 @@ properties:
   interrupt-names:
     description: List of names for the parent interrupts.
     items:
-      - const: int0
-      - const: int1
-      - const: int2
-      - const: int3
+      pattern: int[0-3]
     minItems: 1
+    maxItems: 4
 
   '#interrupt-cells':
     const: 2

Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml required: · line 88

Quoted 4 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +1 -0
@@ -87,6 +85,7 @@ required:
   - compatible
   - reg
   - interrupts
+  - interrupt-names

A new required property is an ABI break. Is that okay for this platform? The commit msg should answer that if so.

Quoted 6 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +0 -0
   - interrupt-controller
   - '#interrupt-cells'
   - loongson,parent-int-map
Signature · 1 line
2.39.3
#10 lore raw

Re: [PATCH v3 3/5] dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check for interrupt-names

Quoted 48 lines · Rob Herring
Quoted 46 lines · Binbin Zhou

The Loongson-2K0500/2K1000 CPUs have 64 interrupt sources as inputs, and a route-mapped node handles up to 32 interrupt sources, so two liointc nodes are defined in dts{i}.
Of course, we need to ensure that the routing outputs (intx) of the two nodes cannot conflict.

For example, in Loongson-2K1000, 'int0' is typically used by the liointc0 node, then the liointc1 node can only use the outputs starting with 'int1'.

So "interrupt-names" should be defined by "pattern".

This fixes dtbs_check warning:

DTC_CHK arch/loongarch/boot/dts/loongson-2k0500-ref.dtb
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: interrupt-names:0: 'int0' was expected
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k0500-ref.dtb: interrupt-controller@1fe11440: Unevaluated properties are not allowed ('interrupt-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
DTC_CHK arch/loongarch/boot/dts/loongson-2k1000-ref.dtb
arch/loongarch/boot/dts/loongson-2k1000-ref.dtb: interrupt-controller@1fe01440: interrupt-names:0: 'int0' was expected
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
arch/loongarch/boot/dts/loongson-2k1000-ref.dtb: interrupt-controller@1fe01440: Unevaluated properties are not allowed ('interrupt-names' was unexpected)
From schema: Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml

---
 .../bindings/interrupt-controller/loongson,liointc.yaml    | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +2 -4
index 7393d7dfbe82..a90c609d351e 100644
@@ -54,11 +54,9 @@ properties:
   interrupt-names:
     description: List of names for the parent interrupts.
     items:
-      - const: int0
-      - const: int1
-      - const: int2
-      - const: int3
+      pattern: int[0-3]
     minItems: 1
+    maxItems: 4
 
Quoted 10 lines

Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml required: · line 88

Quoted 7 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +1 -0
   '#interrupt-cells':
     const: 2
@@ -87,6 +85,7 @@ required:
   - compatible
   - reg
   - interrupts
+  - interrupt-names

A new required property is an ABI break. Is that okay for this platform? The commit msg should answer that if so.

Hi Rob:

Thanks for your reply.

In fact, 'interrupt-names' is essential for both liointc-1.0 and liointc-2.0, and we now pass it to get the corresponding interrupt number.
To a certain extent, I think it's already 'required'.
Of course, I'll try to explain it more clearly in the commit message.

Thanks.
Binbin

Quoted 8 lines
Quoted 8 lines
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml +0 -1
   - interrupt-controller
   - '#interrupt-cells'
   - loongson,parent-int-map
--

2.39.3

#11 lore raw

PATCH v3 4/5 irqchip/loongson-liointc: Fix 'loongson,parent_int_map' parse

In reply to Binbin Zhou

While 'loongson,parent_int_map' is deprecated, we need to make sure that both forms can be parsed.

---
 drivers/irqchip/irq-loongson-liointc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/irqchip/irq-loongson-liointc.c +6 -1
index e4b33aed1c97..add2e0a955b8 100644
@@ -330,6 +330,7 @@ static int __init liointc_of_init(struct device_node *node,
 	bool have_parent = FALSE;
 	int sz, i, index, revision, err = 0;
 	struct resource res;
+	const char *prop_name = "loongson,parent-int-map";
 
 	if (!of_device_is_compatible(node, "loongson,liointc-2.0")) {
 		index = 0;
@@ -350,8 +351,12 @@ static int __init liointc_of_init(struct device_node *node,
 	if (!have_parent)
 		return -ENODEV;
 
+	if (!of_find_property(node, prop_name, &i))
+		/* Fallback to 'loongson,parent_int_map', although it is deprecated. */
+		prop_name = "loongson,parent_int_map";
+
 	sz = of_property_read_variable_u32_array(node,
-						"loongson,parent_int_map",
+						prop_name,
 						&parent_int_map[0],
 						LIOINTC_NUM_PARENT,
 						LIOINTC_NUM_PARENT);
Signature · 1 line
2.39.3
#12 lore raw

PATCH v3 5/5 MIPS: Loongson64: DTS: Fix 'loongson,parent_int_map' references

In reply to Binbin Zhou

Since 'loongson,parent_int_map' has been deprecated, replace all relevant references in the MIPS loongson dts{i} with 'loongson,parent-int-map'.

---
 arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi       | 4 ++--
 arch/mips/boot/dts/loongson/loongson64c-package.dtsi     | 2 +-
 arch/mips/boot/dts/loongson/loongson64g-package.dtsi     | 2 +-
 arch/mips/boot/dts/loongson/loongson64v_4core_virtio.dts | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)
arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi +2 -2
index f878f47e4501..36f499a3772e 100644
@@ -71,7 +71,7 @@ liointc0: interrupt-controller@1fe11400 {
 			interrupts = <2>;
 			interrupt-names = "int0";
 
-			loongson,parent_int_map = <0xffffffff>, /* int0 */
+			loongson,parent-int-map = <0xffffffff>, /* int0 */
 						<0x00000000>, /* int1 */
 						<0x00000000>, /* int2 */
 						<0x00000000>; /* int3 */
@@ -91,7 +91,7 @@ liointc1: interrupt-controller@1fe11440 {
 			interrupts = <3>;
 			interrupt-names = "int1";
 
-			loongson,parent_int_map = <0x00000000>, /* int0 */
+			loongson,parent-int-map = <0x00000000>, /* int0 */
 						<0xffffffff>, /* int1 */
 						<0x00000000>, /* int2 */
 						<0x00000000>; /* int3 */
arch/mips/boot/dts/loongson/loongson64c-package.dtsi +1 -1
index 5bb876a4de52..38de0108e804 100644
@@ -35,7 +35,7 @@ liointc: interrupt-controller@3ff01400 {
 			interrupts = <2>, <3>;
 			interrupt-names = "int0", "int1";
 
-			loongson,parent_int_map = <0xf0ffffff>, /* int0 */
+			loongson,parent-int-map = <0xf0ffffff>, /* int0 */
 						<0x0f000000>, /* int1 */
 						<0x00000000>, /* int2 */
 						<0x00000000>; /* int3 */
arch/mips/boot/dts/loongson/loongson64g-package.dtsi +1 -1
index d4314f62ccc2..8972adcb83d6 100644
@@ -32,7 +32,7 @@ liointc: interrupt-controller@3ff01400 {
 			interrupts = <2>, <3>;
 			interrupt-names = "int0", "int1";
 
-			loongson,parent_int_map = <0x00ffffff>, /* int0 */
+			loongson,parent-int-map = <0x00ffffff>, /* int0 */
 						<0xff000000>, /* int1 */
 						<0x00000000>, /* int2 */
 						<0x00000000>; /* int3 */
arch/mips/boot/dts/loongson/loongson64v_4core_virtio.dts +1 -1
index d0588d81e0c2..88642fee1bbd 100644
@@ -34,7 +34,7 @@ liointc: interrupt-controller@3ff01400 {
 			interrupts = <2>, <3>;
 			interrupt-names = "int0", "int1";
 
-			loongson,parent_int_map = <0x00000001>, /* int0 */
+			loongson,parent-int-map = <0x00000001>, /* int0 */
 						<0xfffffffe>, /* int1 */
 						<0x00000000>, /* int2 */
 						<0x00000000>; /* int3 */
Signature · 1 line
2.39.3
maintainer Acked-by on the v3 series
#13 lore raw
In reply to Binbin Zhou
Quoted 11 lines · 在2023年10月31日十月 上午2:36,Binbin Zhou写道:

Hi all:

Some liointc-related DTBS_CHECK warnings were found when trying to introduce the Loongson-2K DTS{I} for LoongArch.
This patch series attempts to fix those warnings, as well as fixing non-standard property naming.

Of course, these fixes also apply to MIPS Loongson-2K1000/Loongson-3A dts{i}.

Thanks.

For the whole series:

Apologize for the bad design at the first place :-( You tried really hard to get it fixed.

Thanks
- Jiaxun

Quoted 46 lines

-----
V3:
patch(1/5):
- new patch, 'loongson,parent_int_map' renamed to 'loongson,parent-int-map';
patch(2/5)(3/5):
- Separate the change points into separate patches;
patch(4/5):
- new patch, make sure both parent map forms can be parsed;
patch(5/5):
- new patch, fix 'loongson,parent_int_map' references in mips loongson dts{i}.

Link to V2:
https://lore.kernel.org/all/[email protected]/

V2:
1. Update commit message;
2. "interruprt-names" should be "required", the driver gets the parent interrupts through it;
3. Add more descriptions to explain the rationale for multiple nodes;
4. Rewrite if-else statements.

Link to V1:
https://lore.kernel.org/all/[email protected]/

Binbin Zhou (5):
dt-bindings: interrupt-controller: loongson,liointc: Standardize the
naming of 'loongson,parent-int-map'
dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check
warning for reg-names
dt-bindings: interrupt-controller: loongson,liointc: Fix dtbs_check
for interrupt-names
irqchip/loongson-liointc: Fix 'loongson,parent_int_map' parse
MIPS: Loongson64: DTS: Fix 'loongson,parent_int_map' references

 .../loongson,liointc.yaml                     | 44 +++++++++++++------
 .../boot/dts/loongson/loongson64-2k1000.dtsi  |  4 +-
 .../dts/loongson/loongson64c-package.dtsi     |  2 +-
 .../dts/loongson/loongson64g-package.dtsi     |  2 +-
 .../dts/loongson/loongson64v_4core_virtio.dts |  2 +-
 drivers/irqchip/irq-loongson-liointc.c        |  7 ++-
 6 files changed, 41 insertions(+), 20 deletions(-)
Signature · 1 line
2.39.3
Signature · 1 line
- Jiaxun