Message ID | 20221221173055.11719-3-gatien.chevallier@foss.st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce STM32 system bus | expand |
On Wed, 21 Dec 2022 18:30:50 +0100, Gatien Chevallier wrote: > Document STM32 System Bus. This bus is intended to control firewall > access for the peripherals connected to it. > > Signed-off-by: Loic PALLARDY <loic.pallardy@st.com> > Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com> > --- > .../devicetree/bindings/bus/st,sys-bus.yaml | 88 +++++++++++++++++++ > 1 file changed, 88 insertions(+) > create mode 100644 Documentation/devicetree/bindings/bus/st,sys-bus.yaml > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13): yamllint warnings/errors: ./Documentation/devicetree/bindings/bus/st,sys-bus.yaml:7:8: [warning] too many spaces after colon (colons) dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bus/st,sys-bus.yaml: $id: 'http://devicetree.org/schemas/bus/stm32,sys-bus.yaml' does not match 'http://devicetree.org/schemas/.*\\.yaml#' from schema $id: http://devicetree.org/meta-schemas/base.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bus/st,sys-bus.yaml: properties:#feature-domain-cells: 'minItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf'] from schema $id: http://devicetree.org/meta-schemas/core.yaml# ./Documentation/devicetree/bindings/bus/st,sys-bus.yaml: $id: relative path/filename doesn't match actual path or filename expected: http://devicetree.org/schemas/bus/st,sys-bus.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20221221173055.11719-3-gatien.chevallier@foss.st.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On 21/12/2022 18:30, Gatien Chevallier wrote: > Document STM32 System Bus. This bus is intended to control firewall > access for the peripherals connected to it. > > Signed-off-by: Loic PALLARDY <loic.pallardy@st.com> > Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com> Please use scripts/get_maintainers.pl to get a list of necessary people and lists to CC. It might happen, that command when run on an older kernel, gives you outdated entries. Therefore please be sure you base your patches on recent Linux kernel. > --- > .../devicetree/bindings/bus/st,sys-bus.yaml | 88 +++++++++++++++++++ > 1 file changed, 88 insertions(+) > create mode 100644 Documentation/devicetree/bindings/bus/st,sys-bus.yaml > > diff --git a/Documentation/devicetree/bindings/bus/st,sys-bus.yaml b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml > new file mode 100644 > index 000000000000..9c0e86612695 > --- /dev/null > +++ b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml > @@ -0,0 +1,88 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/bus/stm32,sys-bus.yaml > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: STM32 System Bus Only one space. > + > +description: | > + The STM32 System Bus is an internal bus to which some internal peripherals > + are connected. STM32 System Bus integrates a firewall controlling access to each > + device. This bus prevents non-accessible devices to be probed. > + > + To see which peripherals are securable, please check the SoC reference manual. > + > +maintainers: > + - Gatien Chevallier <gatien.chevallier@foss.st.com> > + > +allOf: > + - $ref: /schemas/feature-controllers/feature-domain-controller.yaml# > + > +properties: > + compatible: > + enum: > + - st,stm32mp13-sys-bus > + - st,stm32mp15-sys-bus > + > + reg: > + maxItems: 1 > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 1 > + > + '#feature-domain-cells': Use consistent quotes, either ' or " > + minItems: 1 No. Cells must be const. This does not match cells at all... > + > + ranges: true > + > + feature-domain-controller: true > + > +patternProperties: > + "^.*@[0-9a-f]+$": > + description: Devices attached to system bus > + type: object > + properties: > + feature-domains: > + $ref: /schemas/feature-controllers/feature-domain-controller.yaml#/properties/feature-domains maxItems > + > +required: > + - compatible > + - reg > + - "#address-cells" > + - "#size-cells" > + - feature-domain-controller > + - '#feature-domain-cells' > + - ranges > + > +additionalProperties: false > + > +examples: > + - | > + // In this example, > + // - the foo1 device refers to etzpc as his domain controller. > + // - same goes for foo2. > + // Access rights are verified before creating devices. > + > + etzpc: etzpc@5c007000 { Node names should be generic. https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > + compatible = "st,stm32mp15-sys-bus"; > + reg = <0x5c007000 0x400>; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + feature-domain-controller; > + #feature-domain-cells = <1>; > + > + foo1: foo@1000000 { Node names should be generic. https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > + reg = <0x0 0x1000000>; Missing compatible, missing proper device name. Don't use fake names, but describe real case. > + feature-domains = <&etzpc 0>; > + }; > + > + foo2: foo@2000000 { > + reg = <0x0 0x2000000>; > + feature-domains = <&etzpc 0>; > + }; > + }; Best regards, Krzysztof
Hello, On 12/22/22 11:24, Krzysztof Kozlowski wrote: > On 21/12/2022 18:30, Gatien Chevallier wrote: >> Document STM32 System Bus. This bus is intended to control firewall >> access for the peripherals connected to it. >> >> Signed-off-by: Loic PALLARDY <loic.pallardy@st.com> >> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com> > > Please use scripts/get_maintainers.pl to get a list of necessary people > and lists to CC. It might happen, that command when run on an older > kernel, gives you outdated entries. Therefore please be sure you base > your patches on recent Linux kernel As it is based on Oleksii's patchset and older threads: [1]: https://lore.kernel.org/all/20190318100605.29120-1-benjamin.gaignard@st.com/ [2]: https://lore.kernel.org/all/20200701132523.32533-1-benjamin.gaignard@st.com/ I wanted to include people that have already been included or participated in these. I'm sorry I did miss/added some (extra) people. I will double-check for next patchset version. > >> --- >> .../devicetree/bindings/bus/st,sys-bus.yaml | 88 +++++++++++++++++++ >> 1 file changed, 88 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/bus/st,sys-bus.yaml >> >> diff --git a/Documentation/devicetree/bindings/bus/st,sys-bus.yaml b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml >> new file mode 100644 >> index 000000000000..9c0e86612695 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml >> @@ -0,0 +1,88 @@ >> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/bus/stm32,sys-bus.yaml >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: STM32 System Bus > > Only one space. > Ack. I already pushed a V2, that is now outdated with your review, where this error is fixed. >> + >> +description: | >> + The STM32 System Bus is an internal bus to which some internal peripherals >> + are connected. STM32 System Bus integrates a firewall controlling access to each >> + device. This bus prevents non-accessible devices to be probed. >> + >> + To see which peripherals are securable, please check the SoC reference manual. >> + >> +maintainers: >> + - Gatien Chevallier <gatien.chevallier@foss.st.com> >> + >> +allOf: >> + - $ref: /schemas/feature-controllers/feature-domain-controller.yaml# >> + >> +properties: >> + compatible: >> + enum: >> + - st,stm32mp13-sys-bus >> + - st,stm32mp15-sys-bus >> + >> + reg: >> + maxItems: 1 >> + >> + "#address-cells": >> + const: 1 >> + >> + "#size-cells": >> + const: 1 >> + >> + '#feature-domain-cells': > > Use consistent quotes, either ' or " Ack, will change in V3. > >> + minItems: 1 > > No. Cells must be const. This does not match cells at all... > Ack, will change to const in V3. What do imply by saying it does not match? Note that I've changed it to "minimum" in V2. >> + >> + ranges: true >> + >> + feature-domain-controller: true >> + >> +patternProperties: >> + "^.*@[0-9a-f]+$": >> + description: Devices attached to system bus >> + type: object >> + properties: >> + feature-domains: >> + $ref: /schemas/feature-controllers/feature-domain-controller.yaml#/properties/feature-domains > > maxItems I don't think setting a max here is relevant as there can be numerous feature-domains referenced. Maybe a min? > >> + >> +required: >> + - compatible >> + - reg >> + - "#address-cells" >> + - "#size-cells" >> + - feature-domain-controller >> + - '#feature-domain-cells' >> + - ranges >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + // In this example, >> + // - the foo1 device refers to etzpc as his domain controller. >> + // - same goes for foo2. >> + // Access rights are verified before creating devices. >> + >> + etzpc: etzpc@5c007000 { > > Node names should be generic. > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > Ack, will change to "etzpc: bus@5c007000" in V3 >> + compatible = "st,stm32mp15-sys-bus"; >> + reg = <0x5c007000 0x400>; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + ranges; >> + feature-domain-controller; >> + #feature-domain-cells = <1>; >> + >> + foo1: foo@1000000 { > > Node names should be generic. > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation Here, if I use real peripherals, I have an issue with the dependency to YAML files. The feature-domains property is not defined in their bindings. Therefore, the dt_binding_check fails on peripherals whose YAML declare "additionalProperties: false" because the link to the feature domain controller bindings does not exist. What would be your recommandation here as declaring: patternProperties: "^.*@[0-9a-f]+$": description: Devices attached to system bus type: object properties: feature-domains: $ref: /schemas/feature-controllers/feature-domain-controller.yaml#/properties/feature-domains does not solve the issue? > >> + reg = <0x0 0x1000000>; > > Missing compatible, missing proper device name. Don't use fake names, > but describe real case. Linked to above issue. > >> + feature-domains = <&etzpc 0>; >> + }; >> + >> + foo2: foo@2000000 { >> + reg = <0x0 0x2000000>; >> + feature-domains = <&etzpc 0>; >> + }; >> + }; > > Best regards, > Krzysztof > Best regards, Gatien
On 22/12/2022 14:39, Gatien CHEVALLIER wrote: > Hello, > > On 12/22/22 11:24, Krzysztof Kozlowski wrote: >> On 21/12/2022 18:30, Gatien Chevallier wrote: >>> Document STM32 System Bus. This bus is intended to control firewall >>> access for the peripherals connected to it. >>> >>> Signed-off-by: Loic PALLARDY <loic.pallardy@st.com> >>> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com> >> >> Please use scripts/get_maintainers.pl to get a list of necessary people >> and lists to CC. It might happen, that command when run on an older >> kernel, gives you outdated entries. Therefore please be sure you base >> your patches on recent Linux kernel > As it is based on Oleksii's patchset and older threads: > [1]: > https://lore.kernel.org/all/20190318100605.29120-1-benjamin.gaignard@st.com/ > [2]: > https://lore.kernel.org/all/20200701132523.32533-1-benjamin.gaignard@st.com/ > > I wanted to include people that have already been included or > participated in these. > > I'm sorry I did miss/added some (extra) people. I will double-check for > next patchset version. Include people pointed by maintainers, they are not "extra". They are basic/required. It's worth to include additionally people from original feature-domain work, but as extra, not replacing get_maintainers! > >> >>> --- >>> .../devicetree/bindings/bus/st,sys-bus.yaml | 88 +++++++++++++++++++ >>> 1 file changed, 88 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/bus/st,sys-bus.yaml >>> >>> diff --git a/Documentation/devicetree/bindings/bus/st,sys-bus.yaml b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml >>> new file mode 100644 >>> index 000000000000..9c0e86612695 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml >>> @@ -0,0 +1,88 @@ >>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >>> +%YAML 1.2 >>> +--- >>> +$id: http://devicetree.org/schemas/bus/stm32,sys-bus.yaml >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> + >>> +title: STM32 System Bus >> >> Only one space. >> > > Ack. I already pushed a V2, that is now outdated with your review, where > this error is fixed. > >>> + >>> +description: | >>> + The STM32 System Bus is an internal bus to which some internal peripherals >>> + are connected. STM32 System Bus integrates a firewall controlling access to each >>> + device. This bus prevents non-accessible devices to be probed. >>> + >>> + To see which peripherals are securable, please check the SoC reference manual. >>> + >>> +maintainers: >>> + - Gatien Chevallier <gatien.chevallier@foss.st.com> >>> + >>> +allOf: >>> + - $ref: /schemas/feature-controllers/feature-domain-controller.yaml# >>> + >>> +properties: >>> + compatible: >>> + enum: >>> + - st,stm32mp13-sys-bus >>> + - st,stm32mp15-sys-bus >>> + >>> + reg: >>> + maxItems: 1 >>> + >>> + "#address-cells": >>> + const: 1 >>> + >>> + "#size-cells": >>> + const: 1 >>> + >>> + '#feature-domain-cells': >> >> Use consistent quotes, either ' or " > > Ack, will change in V3. > >> >>> + minItems: 1 >> >> No. Cells must be const. This does not match cells at all... >> > > Ack, will change to const in V3. What do imply by saying it does not > match? cells do not have items, it's not an array but a number. > Note that I've changed it to "minimum" in V2. No, it must be const. > >>> + >>> + ranges: true >>> + >>> + feature-domain-controller: true >>> + >>> +patternProperties: >>> + "^.*@[0-9a-f]+$": >>> + description: Devices attached to system bus >>> + type: object >>> + properties: >>> + feature-domains: >>> + $ref: /schemas/feature-controllers/feature-domain-controller.yaml#/properties/feature-domains >> >> maxItems > > I don't think setting a max here is relevant as there can be numerous > feature-domains referenced. Then pick some high, reasonable number with minItems: 1. > > Maybe a min? > >> >>> + >>> +required: >>> + - compatible >>> + - reg >>> + - "#address-cells" >>> + - "#size-cells" >>> + - feature-domain-controller >>> + - '#feature-domain-cells' >>> + - ranges >>> + >>> +additionalProperties: false >>> + >>> +examples: >>> + - | >>> + // In this example, >>> + // - the foo1 device refers to etzpc as his domain controller. >>> + // - same goes for foo2. >>> + // Access rights are verified before creating devices. >>> + >>> + etzpc: etzpc@5c007000 { >> >> Node names should be generic. >> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation >> > > Ack, will change to "etzpc: bus@5c007000" in V3 > >>> + compatible = "st,stm32mp15-sys-bus"; >>> + reg = <0x5c007000 0x400>; >>> + #address-cells = <1>; >>> + #size-cells = <1>; >>> + ranges; >>> + feature-domain-controller; >>> + #feature-domain-cells = <1>; >>> + >>> + foo1: foo@1000000 { >> >> Node names should be generic. >> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > > Here, if I use real peripherals, I have an issue with the dependency to > YAML files. The feature-domains property is not defined in their > bindings. Therefore, the dt_binding_check fails on peripherals whose > YAML declare "additionalProperties: false" because the link to the > feature domain controller bindings does not exist. Then your patchset is not complete and not correct, right? The binding for the real example which you have in real world, should also allow it in such Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/bus/st,sys-bus.yaml b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml new file mode 100644 index 000000000000..9c0e86612695 --- /dev/null +++ b/Documentation/devicetree/bindings/bus/st,sys-bus.yaml @@ -0,0 +1,88 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/bus/stm32,sys-bus.yaml +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: STM32 System Bus + +description: | + The STM32 System Bus is an internal bus to which some internal peripherals + are connected. STM32 System Bus integrates a firewall controlling access to each + device. This bus prevents non-accessible devices to be probed. + + To see which peripherals are securable, please check the SoC reference manual. + +maintainers: + - Gatien Chevallier <gatien.chevallier@foss.st.com> + +allOf: + - $ref: /schemas/feature-controllers/feature-domain-controller.yaml# + +properties: + compatible: + enum: + - st,stm32mp13-sys-bus + - st,stm32mp15-sys-bus + + reg: + maxItems: 1 + + "#address-cells": + const: 1 + + "#size-cells": + const: 1 + + '#feature-domain-cells': + minItems: 1 + + ranges: true + + feature-domain-controller: true + +patternProperties: + "^.*@[0-9a-f]+$": + description: Devices attached to system bus + type: object + properties: + feature-domains: + $ref: /schemas/feature-controllers/feature-domain-controller.yaml#/properties/feature-domains + +required: + - compatible + - reg + - "#address-cells" + - "#size-cells" + - feature-domain-controller + - '#feature-domain-cells' + - ranges + +additionalProperties: false + +examples: + - | + // In this example, + // - the foo1 device refers to etzpc as his domain controller. + // - same goes for foo2. + // Access rights are verified before creating devices. + + etzpc: etzpc@5c007000 { + compatible = "st,stm32mp15-sys-bus"; + reg = <0x5c007000 0x400>; + #address-cells = <1>; + #size-cells = <1>; + ranges; + feature-domain-controller; + #feature-domain-cells = <1>; + + foo1: foo@1000000 { + reg = <0x0 0x1000000>; + feature-domains = <&etzpc 0>; + }; + + foo2: foo@2000000 { + reg = <0x0 0x2000000>; + feature-domains = <&etzpc 0>; + }; + };