2023-10-31 02:37:13

by Binbin Zhou

[permalink] [raw]
Subject: [PATCH v3 0/5] 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(-)

--
2.39.3


2023-10-31 02:37:14

by Binbin Zhou

[permalink] [raw]
Subject: [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.

Signed-off-by: Binbin Zhou <[email protected]>
---
.../interrupt-controller/loongson,liointc.yaml | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
index 00b570c82903..0d9511b8a792 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
@@ -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 */
-
};

...
--
2.39.3

2023-10-31 02:37:23

by Binbin Zhou

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

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

Signed-off-by: Binbin Zhou <[email protected]>
---
.../bindings/interrupt-controller/loongson,liointc.yaml | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
index 7393d7dfbe82..a90c609d351e 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
@@ -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
--
2.39.3

2023-10-31 02:37:34

by Binbin Zhou

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

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

Signed-off-by: Binbin Zhou <[email protected]>
---
.../loongson,liointc.yaml | 22 ++++++++++++++-----
1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
index 0d9511b8a792..7393d7dfbe82 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
@@ -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
--
2.39.3

2023-10-31 02:37:36

by Binbin Zhou

[permalink] [raw]
Subject: [PATCH v3 4/5] irqchip/loongson-liointc: Fix 'loongson,parent_int_map' parse

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

Signed-off-by: Binbin Zhou <[email protected]>
---
drivers/irqchip/irq-loongson-liointc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-loongson-liointc.c b/drivers/irqchip/irq-loongson-liointc.c
index e4b33aed1c97..add2e0a955b8 100644
--- a/drivers/irqchip/irq-loongson-liointc.c
+++ b/drivers/irqchip/irq-loongson-liointc.c
@@ -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);
--
2.39.3

2023-10-31 02:37:48

by Binbin Zhou

[permalink] [raw]
Subject: [PATCH v3 5/5] MIPS: Loongson64: DTS: Fix 'loongson,parent_int_map' references

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

Signed-off-by: Binbin Zhou <[email protected]>
---
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(-)

diff --git a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
index f878f47e4501..36f499a3772e 100644
--- a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
+++ b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
@@ -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 */
diff --git a/arch/mips/boot/dts/loongson/loongson64c-package.dtsi b/arch/mips/boot/dts/loongson/loongson64c-package.dtsi
index 5bb876a4de52..38de0108e804 100644
--- a/arch/mips/boot/dts/loongson/loongson64c-package.dtsi
+++ b/arch/mips/boot/dts/loongson/loongson64c-package.dtsi
@@ -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 */
diff --git a/arch/mips/boot/dts/loongson/loongson64g-package.dtsi b/arch/mips/boot/dts/loongson/loongson64g-package.dtsi
index d4314f62ccc2..8972adcb83d6 100644
--- a/arch/mips/boot/dts/loongson/loongson64g-package.dtsi
+++ b/arch/mips/boot/dts/loongson/loongson64g-package.dtsi
@@ -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 */
diff --git a/arch/mips/boot/dts/loongson/loongson64v_4core_virtio.dts b/arch/mips/boot/dts/loongson/loongson64v_4core_virtio.dts
index d0588d81e0c2..88642fee1bbd 100644
--- a/arch/mips/boot/dts/loongson/loongson64v_4core_virtio.dts
+++ b/arch/mips/boot/dts/loongson/loongson64v_4core_virtio.dts
@@ -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 */
--
2.39.3

2023-10-31 09:58:55

by Jiaxun Yang

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



在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
>
> Signed-off-by: Binbin Zhou <[email protected]>
> ---
Acked-by: Jiaxun Yang <[email protected]>

[...]
--
- Jiaxun

2023-10-31 10:01:00

by Jiaxun Yang

[permalink] [raw]
Subject: Re: [PATCH v3 0/5] dt-bindings: interrupt-controller: Fix some loongson,liointc warnings



在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:

Acked-by: Jiaxun Yang <[email protected]>

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

Thanks
- Jiaxun

>
> -----
> 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(-)
>
> --
> 2.39.3

--
- Jiaxun

2023-10-31 17:51:20

by Rob Herring (Arm)

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

On Tue, Oct 31, 2023 at 10:36:36AM +0800, Binbin Zhou wrote:
> 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.

>
> Signed-off-by: Binbin Zhou <[email protected]>
> ---
> .../interrupt-controller/loongson,liointc.yaml | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)

2023-10-31 17:52:24

by Rob Herring (Arm)

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

On Tue, Oct 31, 2023 at 10:36:37AM +0800, Binbin Zhou wrote:
> 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
>
> Signed-off-by: Binbin Zhou <[email protected]>
> ---
> .../loongson,liointc.yaml | 22 ++++++++++++++-----
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> index 0d9511b8a792..7393d7dfbe82 100644
> --- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> +++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> @@ -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

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

>
> interrupt-controller: true
>
> @@ -94,7 +103,8 @@ if:
> then:
> properties:
> reg:
> - minItems: 3
> + minItems: 2
> + maxItems: 3
>
> required:
> - reg-names
> --
> 2.39.3
>

2023-10-31 17:54:26

by Rob Herring (Arm)

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

On Tue, Oct 31, 2023 at 10:36:38AM +0800, Binbin Zhou wrote:
> 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
>
> Signed-off-by: Binbin Zhou <[email protected]>
> ---
> .../bindings/interrupt-controller/loongson,liointc.yaml | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> index 7393d7dfbe82..a90c609d351e 100644
> --- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> +++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> @@ -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

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


> - interrupt-controller
> - '#interrupt-cells'
> - loongson,parent-int-map
> --
> 2.39.3
>

2023-11-01 01:42:37

by Binbin Zhou

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

On Tue, Oct 31, 2023 at 11:52 PM Rob Herring <[email protected]> wrote:
>
> On Tue, Oct 31, 2023 at 10:36:37AM +0800, Binbin Zhou wrote:
> > 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
> >
> > Signed-off-by: Binbin Zhou <[email protected]>
> > ---
> > .../loongson,liointc.yaml | 22 ++++++++++++++-----
> > 1 file changed, 16 insertions(+), 6 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> > index 0d9511b8a792..7393d7dfbe82 100644
> > --- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> > +++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> > @@ -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
>
> Just adding 'minItems: 2' accomplishes the same thing without
> duplicating the list.

OK, I will do it.

Thanks.
Binbin
>
> >
> > interrupt-controller: true
> >
> > @@ -94,7 +103,8 @@ if:
> > then:
> > properties:
> > reg:
> > - minItems: 3
> > + minItems: 2
> > + maxItems: 3
> >
> > required:
> > - reg-names
> > --
> > 2.39.3
> >

2023-11-01 01:54:25

by Binbin Zhou

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

On Tue, Oct 31, 2023 at 11:50 PM Rob Herring <[email protected]> wrote:
>
> On Tue, Oct 31, 2023 at 10:36:36AM +0800, Binbin Zhou wrote:
> > 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
>
> >
> > Signed-off-by: Binbin Zhou <[email protected]>
> > ---
> > .../interrupt-controller/loongson,liointc.yaml | 15 +++++++++++----
> > 1 file changed, 11 insertions(+), 4 deletions(-)

2023-11-01 02:06:13

by Binbin Zhou

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

On Tue, Oct 31, 2023 at 11:53 PM Rob Herring <[email protected]> wrote:
>
> On Tue, Oct 31, 2023 at 10:36:38AM +0800, Binbin Zhou wrote:
> > 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
> >
> > Signed-off-by: Binbin Zhou <[email protected]>
> > ---
> > .../bindings/interrupt-controller/loongson,liointc.yaml | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> > index 7393d7dfbe82..a90c609d351e 100644
> > --- a/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> > +++ b/Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
> > @@ -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
>
> 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
>
>
> > - interrupt-controller
> > - '#interrupt-cells'
> > - loongson,parent-int-map
> > --
> > 2.39.3
> >