Message ID | 20250201-en7581-dts-spi-pinctrl-v1-1-aaa4a9dfc4a6@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | arm64: dts: Introduce more nodes to EN7581 SoC evaluation board | expand |
On Sat, 01 Feb 2025 15:39:48 +0100, Lorenzo Bianconi wrote: > Add the following nodes to EN7581 SoC and EN7581 evaluation board: > - clock controller > - rng controller > - pinctrl > - i2c controllers > - spi nand controller > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > arch/arm64/boot/dts/airoha/en7581-evb.dts | 8 +++ > arch/arm64/boot/dts/airoha/en7581.dtsi | 90 +++++++++++++++++++++++++++++++ > 2 files changed, 98 insertions(+) > My bot found new DTB warnings on the .dts files added or changed in this series. Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings are fixed by another series. Ultimately, it is up to the platform maintainer whether these warnings are acceptable or not. No need to reply unless the platform maintainer has comments. If you already ran DT checks and didn't see these error(s), then make sure dt-schema is up to date: pip3 install dtschema --upgrade New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/airoha/' for 20250201-en7581-dts-spi-pinctrl-v1-1-aaa4a9dfc4a6@kernel.org: arch/arm64/boot/dts/airoha/en7581-evb.dtb: soc: i2cclock@0: 'anyOf' conditional failed, one must be fixed: 'reg' is a required property 'ranges' is a required property from schema $id: http://devicetree.org/schemas/simple-bus.yaml# arch/arm64/boot/dts/airoha/en7581-evb.dtb: system-controller@1fbf0200: compatible: ['syscon', 'simple-mfd'] is too short from schema $id: http://devicetree.org/schemas/mfd/syscon-common.yaml# arch/arm64/boot/dts/airoha/en7581-evb.dtb: i2cclock@0: clock-frequency: 20000000 is greater than the maximum of 5000000 from schema $id: http://devicetree.org/schemas/i2c/i2c-controller.yaml# arch/arm64/boot/dts/airoha/en7581-evb.dtb: i2c0@1fbf8000: 'resets' is a required property from schema $id: http://devicetree.org/schemas/i2c/mediatek,mt7621-i2c.yaml# arch/arm64/boot/dts/airoha/en7581-evb.dtb: i2c1@1fbf8100: 'resets' is a required property from schema $id: http://devicetree.org/schemas/i2c/mediatek,mt7621-i2c.yaml# arch/arm64/boot/dts/airoha/en7581-evb.dtb: i2c1@1fbf8100: status: 'oneOf' conditional failed, one must be fixed: ['disable'] is not of type 'object' 'disable' is not one of ['okay', 'disabled', 'reserved', 'fail', 'fail-needs-probe'] from schema $id: http://devicetree.org/schemas/dt-core.yaml#
On 01/02/2025 15:39, Lorenzo Bianconi wrote: > Add the following nodes to EN7581 SoC and EN7581 evaluation board: > - clock controller > - rng controller > - pinctrl > - i2c controllers > - spi nand controller > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- Please use subject prefixes matching the subsystem. You can get them for example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory your patch is touching. For bindings, the preferred subjects are explained here: https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters Missing prefix for vendor. > arch/arm64/boot/dts/airoha/en7581-evb.dts | 8 +++ > arch/arm64/boot/dts/airoha/en7581.dtsi | 90 +++++++++++++++++++++++++++++++ > 2 files changed, 98 insertions(+) > > diff --git a/arch/arm64/boot/dts/airoha/en7581-evb.dts b/arch/arm64/boot/dts/airoha/en7581-evb.dts > index cf58e43dd5b21dbf4f64e305a4b4a2daee100858..1126da4b795f5d5df9725ec4d75cd9353b011710 100644 > --- a/arch/arm64/boot/dts/airoha/en7581-evb.dts > +++ b/arch/arm64/boot/dts/airoha/en7581-evb.dts > @@ -24,3 +24,11 @@ memory@80000000 { > reg = <0x0 0x80000000 0x2 0x00000000>; > }; > }; > + > +&i2c0 { > + status = "okay"; > +}; > + > +&snfi { > + status = "okay"; > +}; > diff --git a/arch/arm64/boot/dts/airoha/en7581.dtsi b/arch/arm64/boot/dts/airoha/en7581.dtsi > index 55eb1762fb11364877695960f5a2d3e42caf8611..b1cf650efd78c6c20d19e7f18c204cf5862215c0 100644 > --- a/arch/arm64/boot/dts/airoha/en7581.dtsi > +++ b/arch/arm64/boot/dts/airoha/en7581.dtsi > @@ -2,6 +2,7 @@ > > #include <dt-bindings/interrupt-controller/irq.h> > #include <dt-bindings/interrupt-controller/arm-gic.h> > +#include <dt-bindings/clock/en7523-clk.h> > > / { > interrupt-parent = <&gic>; > @@ -150,5 +151,94 @@ uart1: serial@1fbf0000 { > interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; > clock-frequency = <1843200>; > }; > + > + scuclk: clock-controller@1fa20000 { > + compatible = "airoha,en7581-scu"; > + reg = <0x0 0x1fb00000 0x0 0x970>; > + #clock-cells = <1>; > + #reset-cells = <1>; > + }; > + > + rng@1faa1000 { > + compatible = "airoha,en7581-trng"; > + reg = <0x0 0x1faa1000 0x0 0xc04>; > + interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + system-controller@1fbf0200 { > + compatible = "syscon", "simple-mfd"; These are never allowed alone. I am pretty sure I added proper checks which should point it out, so I think you did not really test your DTS. It does not look like you tested the DTS against bindings. Please run `make dtbs_check W=1` (see Documentation/devicetree/bindings/writing-schema.rst or https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/ for instructions). Maybe you need to update your dtschema and yamllint. Don't rely on distro packages for dtschema and be sure you are using the latest released dtschema. > + reg = <0x0 0x1fbf0200 0x0 0xc0>; > + > + en7581_pinctrl: pinctrl { > + compatible = "airoha,en7581-pinctrl"; > + > + interrupt-parent = <&gic>; > + interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; > + > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > + i2cclock: i2cclock@0 { > + #clock-cells = <0>; > + compatible = "fixed-clock"; > + > + /* 20 MHz */ > + clock-frequency = <20000000>; > + }; > + > + i2c0: i2c0@1fbf8000 { Node names should be generic. See also an explanation and list of examples (not exhaustive) in DT specification: https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation i2c@ > + compatible = "mediatek,mt7621-i2c"; > + reg = <0x0 0x1fbf8000 0x0 0x100>; > + > + clocks = <&i2cclock>; > + > + /* 100 kHz */ > + clock-frequency = <100000>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + status = "disable"; > + }; > + > + i2c1: i2c1@1fbf8100 { Best regards, Krzysztof
On 03/02/2025 17:04, Krzysztof Kozlowski wrote: >> + >> + rng@1faa1000 { >> + compatible = "airoha,en7581-trng"; >> + reg = <0x0 0x1faa1000 0x0 0xc04>; >> + interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; >> + }; >> + >> + system-controller@1fbf0200 { >> + compatible = "syscon", "simple-mfd"; > > These are never allowed alone. I am pretty sure I added proper checks > which should point it out, so I think you did not really test your DTS. > > It does not look like you tested the DTS against bindings. Please run > `make dtbs_check W=1` (see > Documentation/devicetree/bindings/writing-schema.rst or > https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/ > for instructions). > Maybe you need to update your dtschema and yamllint. Don't rely on > distro packages for dtschema and be sure you are using the latest > released dtschema. > Now I see Rob's report: arch/arm64/boot/dts/airoha/en7581-evb.dtb: system-controller@1fbf0200: compatible: ['syscon', 'simple-mfd'] is too short which confirms untested code. Schema is there for a reason. :( Best regards, Krzysztof
On Sat, Feb 1, 2025 at 8:40 AM Lorenzo Bianconi <lorenzo@kernel.org> wrote: > > Add the following nodes to EN7581 SoC and EN7581 evaluation board: > - clock controller > - rng controller > - pinctrl > - i2c controllers > - spi nand controller > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > arch/arm64/boot/dts/airoha/en7581-evb.dts | 8 +++ > arch/arm64/boot/dts/airoha/en7581.dtsi | 90 +++++++++++++++++++++++++++++++ > 2 files changed, 98 insertions(+) > > diff --git a/arch/arm64/boot/dts/airoha/en7581-evb.dts b/arch/arm64/boot/dts/airoha/en7581-evb.dts > index cf58e43dd5b21dbf4f64e305a4b4a2daee100858..1126da4b795f5d5df9725ec4d75cd9353b011710 100644 > --- a/arch/arm64/boot/dts/airoha/en7581-evb.dts > +++ b/arch/arm64/boot/dts/airoha/en7581-evb.dts > @@ -24,3 +24,11 @@ memory@80000000 { > reg = <0x0 0x80000000 0x2 0x00000000>; > }; > }; > + > +&i2c0 { > + status = "okay"; > +}; > + > +&snfi { > + status = "okay"; > +}; > diff --git a/arch/arm64/boot/dts/airoha/en7581.dtsi b/arch/arm64/boot/dts/airoha/en7581.dtsi > index 55eb1762fb11364877695960f5a2d3e42caf8611..b1cf650efd78c6c20d19e7f18c204cf5862215c0 100644 > --- a/arch/arm64/boot/dts/airoha/en7581.dtsi > +++ b/arch/arm64/boot/dts/airoha/en7581.dtsi > @@ -2,6 +2,7 @@ > > #include <dt-bindings/interrupt-controller/irq.h> > #include <dt-bindings/interrupt-controller/arm-gic.h> > +#include <dt-bindings/clock/en7523-clk.h> > > / { > interrupt-parent = <&gic>; > @@ -150,5 +151,94 @@ uart1: serial@1fbf0000 { > interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; > clock-frequency = <1843200>; > }; > + > + scuclk: clock-controller@1fa20000 { > + compatible = "airoha,en7581-scu"; > + reg = <0x0 0x1fb00000 0x0 0x970>; > + #clock-cells = <1>; > + #reset-cells = <1>; > + }; > + > + rng@1faa1000 { > + compatible = "airoha,en7581-trng"; > + reg = <0x0 0x1faa1000 0x0 0xc04>; > + interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + system-controller@1fbf0200 { > + compatible = "syscon", "simple-mfd"; > + reg = <0x0 0x1fbf0200 0x0 0xc0>; > + > + en7581_pinctrl: pinctrl { > + compatible = "airoha,en7581-pinctrl"; > + > + interrupt-parent = <&gic>; > + interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; > + > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > + i2cclock: i2cclock@0 { clock-20000000 for node name. A unit-address without 'reg' is not valid. Test this with W=1. Rob
diff --git a/arch/arm64/boot/dts/airoha/en7581-evb.dts b/arch/arm64/boot/dts/airoha/en7581-evb.dts index cf58e43dd5b21dbf4f64e305a4b4a2daee100858..1126da4b795f5d5df9725ec4d75cd9353b011710 100644 --- a/arch/arm64/boot/dts/airoha/en7581-evb.dts +++ b/arch/arm64/boot/dts/airoha/en7581-evb.dts @@ -24,3 +24,11 @@ memory@80000000 { reg = <0x0 0x80000000 0x2 0x00000000>; }; }; + +&i2c0 { + status = "okay"; +}; + +&snfi { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/airoha/en7581.dtsi b/arch/arm64/boot/dts/airoha/en7581.dtsi index 55eb1762fb11364877695960f5a2d3e42caf8611..b1cf650efd78c6c20d19e7f18c204cf5862215c0 100644 --- a/arch/arm64/boot/dts/airoha/en7581.dtsi +++ b/arch/arm64/boot/dts/airoha/en7581.dtsi @@ -2,6 +2,7 @@ #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/clock/en7523-clk.h> / { interrupt-parent = <&gic>; @@ -150,5 +151,94 @@ uart1: serial@1fbf0000 { interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <1843200>; }; + + scuclk: clock-controller@1fa20000 { + compatible = "airoha,en7581-scu"; + reg = <0x0 0x1fb00000 0x0 0x970>; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + rng@1faa1000 { + compatible = "airoha,en7581-trng"; + reg = <0x0 0x1faa1000 0x0 0xc04>; + interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; + }; + + system-controller@1fbf0200 { + compatible = "syscon", "simple-mfd"; + reg = <0x0 0x1fbf0200 0x0 0xc0>; + + en7581_pinctrl: pinctrl { + compatible = "airoha,en7581-pinctrl"; + + interrupt-parent = <&gic>; + interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + }; + + i2cclock: i2cclock@0 { + #clock-cells = <0>; + compatible = "fixed-clock"; + + /* 20 MHz */ + clock-frequency = <20000000>; + }; + + i2c0: i2c0@1fbf8000 { + compatible = "mediatek,mt7621-i2c"; + reg = <0x0 0x1fbf8000 0x0 0x100>; + + clocks = <&i2cclock>; + + /* 100 kHz */ + clock-frequency = <100000>; + #address-cells = <1>; + #size-cells = <0>; + + status = "disable"; + }; + + i2c1: i2c1@1fbf8100 { + compatible = "mediatek,mt7621-i2c"; + reg = <0x0 0x1fbf8100 0x0 0x100>; + + clocks = <&i2cclock>; + + /* 100 kHz */ + clock-frequency = <100000>; + #address-cells = <1>; + #size-cells = <0>; + + status = "disable"; + }; + + snfi: spi@1fa10000 { + compatible = "airoha,en7581-snand"; + reg = <0x0 0x1fa10000 0x0 0x140>, + <0x0 0x1fa11000 0x0 0x160>; + + clocks = <&scuclk EN7523_CLK_SPI>; + clock-names = "spi"; + + #address-cells = <1>; + #size-cells = <0>; + + status = "disabled"; + + spi_nand: nand@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <50000000>; + spi-tx-bus-width = <1>; + spi-rx-bus-width = <2>; + }; + }; }; };
Add the following nodes to EN7581 SoC and EN7581 evaluation board: - clock controller - rng controller - pinctrl - i2c controllers - spi nand controller Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- arch/arm64/boot/dts/airoha/en7581-evb.dts | 8 +++ arch/arm64/boot/dts/airoha/en7581.dtsi | 90 +++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) --- base-commit: 7605336e9d136c14c94482ce7385de783f2f748e change-id: 20250201-en7581-dts-spi-pinctrl-4160b825ca9d Best regards,