diff mbox series

[dt-schema] schemas: i2c: Allow '-' in 'i2c-.*' node names

Message ID 20250519184530.21845-1-wsa+renesas@sang-engineering.com
State New
Headers show
Series [dt-schema] schemas: i2c: Allow '-' in 'i2c-.*' node names | expand

Commit Message

Wolfram Sang May 19, 2025, 6:43 p.m. UTC
When allowing extended i2c node names, the '-' character was not added
to the character class. Fixes the following error:

.../Kernel/linux/arch/arm/boot/dts/microchip/usb_a9g20.dtb: i2c-gpio-0 (i2c-gpio): $nodename:0: 'i2c-gpio-0' does not match '^i2c(@.+|-[a-z0-9]+)?$'
        from schema $id: http://devicetree.org/schemas/i2c/i2c-gpio.yaml#

Fixes: 647181a1f8ff ("schemas: i2c: Allow for 'i2c-.*' node names")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---

I don't know if it is possible to define a custom character class to
avoid similar problems in the future?

 dtschema/schemas/i2c/i2c-controller.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Rob Herring (Arm) May 20, 2025, 1:18 a.m. UTC | #1
On Mon, May 19, 2025 at 1:45 PM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
>
> When allowing extended i2c node names, the '-' character was not added
> to the character class. Fixes the following error:
>
> .../Kernel/linux/arch/arm/boot/dts/microchip/usb_a9g20.dtb: i2c-gpio-0 (i2c-gpio): $nodename:0: 'i2c-gpio-0' does not match '^i2c(@.+|-[a-z0-9]+)?$'
>         from schema $id: http://devicetree.org/schemas/i2c/i2c-gpio.yaml#

IMO, we should change the node name to "i2c-0". While I'm on the fence
whether it's worth changing these, I do think it is worth not getting
new ones.

> Fixes: 647181a1f8ff ("schemas: i2c: Allow for 'i2c-.*' node names")
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
>
> I don't know if it is possible to define a custom character class to
> avoid similar problems in the future?
>
>  dtschema/schemas/i2c/i2c-controller.yaml | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/dtschema/schemas/i2c/i2c-controller.yaml b/dtschema/schemas/i2c/i2c-controller.yaml
> index 8488edd5ecc4..4abcf1a0ddcc 100644
> --- a/dtschema/schemas/i2c/i2c-controller.yaml
> +++ b/dtschema/schemas/i2c/i2c-controller.yaml
> @@ -14,7 +14,7 @@ maintainers:
>
>  properties:
>    $nodename:
> -    pattern: "^i2c(@.+|-[a-z0-9]+)?$"
> +    pattern: "^i2c(@.+|-[a-z0-9\\-]+)?$"
>
>    i2c-bus:
>      type: object
> --
> 2.47.2
>
>
Wolfram Sang May 20, 2025, 9:25 a.m. UTC | #2
On Mon, May 19, 2025 at 08:18:53PM -0500, Rob Herring wrote:
> On Mon, May 19, 2025 at 1:45 PM Wolfram Sang
> <wsa+renesas@sang-engineering.com> wrote:
> >
> > When allowing extended i2c node names, the '-' character was not added
> > to the character class. Fixes the following error:
> >
> > .../Kernel/linux/arch/arm/boot/dts/microchip/usb_a9g20.dtb: i2c-gpio-0 (i2c-gpio): $nodename:0: 'i2c-gpio-0' does not match '^i2c(@.+|-[a-z0-9]+)?$'
> >         from schema $id: http://devicetree.org/schemas/i2c/i2c-gpio.yaml#
> 
> IMO, we should change the node name to "i2c-0". While I'm on the fence
> whether it's worth changing these, I do think it is worth not getting
> new ones.

It is hard changing the existing ones. They are numbered based on the
numbers of GPIO based I2C busses only. If we drop "gpio-", they need to
be mixed with other non-GPIO busses. That numbering is usually unique
per board and can't be automated.
Rob Herring (Arm) May 20, 2025, 12:29 p.m. UTC | #3
On Tue, May 20, 2025 at 4:25 AM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
>
> On Mon, May 19, 2025 at 08:18:53PM -0500, Rob Herring wrote:
> > On Mon, May 19, 2025 at 1:45 PM Wolfram Sang
> > <wsa+renesas@sang-engineering.com> wrote:
> > >
> > > When allowing extended i2c node names, the '-' character was not added
> > > to the character class. Fixes the following error:
> > >
> > > .../Kernel/linux/arch/arm/boot/dts/microchip/usb_a9g20.dtb: i2c-gpio-0 (i2c-gpio): $nodename:0: 'i2c-gpio-0' does not match '^i2c(@.+|-[a-z0-9]+)?$'
> > >         from schema $id: http://devicetree.org/schemas/i2c/i2c-gpio.yaml#
> >
> > IMO, we should change the node name to "i2c-0". While I'm on the fence
> > whether it's worth changing these, I do think it is worth not getting
> > new ones.
>
> It is hard changing the existing ones. They are numbered based on the
> numbers of GPIO based I2C busses only. If we drop "gpio-", they need to
> be mixed with other non-GPIO busses. That numbering is usually unique
> per board and can't be automated.

I don't understand. For arm32, I see 1 case of possibly already having
an i2c-[0-9] name and that's in
arch/arm/boot/dts/samsung/exynos5250-arndale.dts. The non-GPIO I2C
buses are all MMIO and have unit addresses (and also aren't at the
root level).

The hardest part is doing a dtb->dts pass and comparing those before
and after to make sure you haven't combined or split nodes.

Rob
diff mbox series

Patch

diff --git a/dtschema/schemas/i2c/i2c-controller.yaml b/dtschema/schemas/i2c/i2c-controller.yaml
index 8488edd5ecc4..4abcf1a0ddcc 100644
--- a/dtschema/schemas/i2c/i2c-controller.yaml
+++ b/dtschema/schemas/i2c/i2c-controller.yaml
@@ -14,7 +14,7 @@  maintainers:
 
 properties:
   $nodename:
-    pattern: "^i2c(@.+|-[a-z0-9]+)?$"
+    pattern: "^i2c(@.+|-[a-z0-9\\-]+)?$"
 
   i2c-bus:
     type: object