Message ID | 20201211142933.25784-1-grzegorz.jaszczyk@linaro.org |
---|---|
Headers | show |
Series | Introduce PRU remoteproc consumer API | expand |
On Fri, Dec 11, 2020 at 03:29:29PM +0100, Grzegorz Jaszczyk wrote: > From: Suman Anna <s-anna@ti.com> > > Add a YAML binding document for PRU consumers. The binding includes > all the common properties that can be used by different PRU consumer > or application nodes and supported by the PRU remoteproc driver. > These are used to configure the PRU hardware for specific user > applications. > > The application nodes themselves should define their own bindings. > > Co-developed-by: Tero Kristo <t-kristo@ti.com> > Signed-off-by: Tero Kristo <t-kristo@ti.com> > Signed-off-by: Suman Anna <s-anna@ti.com> > Co-developed-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > --- > .../bindings/remoteproc/ti,pru-consumer.yaml | 64 +++++++++++++++++++ > 1 file changed, 64 insertions(+) > create mode 100644 Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > new file mode 100644 > index 000000000000..2c5c5e2b6159 > --- /dev/null > +++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > @@ -0,0 +1,64 @@ > +# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/remoteproc/ti,pru-consumer.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Common TI PRU Consumer Binding > + > +maintainers: > + - Suman Anna <s-anna@ti.com> > + > +description: | > + A PRU application/consumer/user node typically uses one or more PRU device > + nodes to implement a PRU application/functionality. Each application/client > + node would need a reference to at least a PRU node, and optionally define > + some properties needed for hardware/firmware configuration. The below > + properties are a list of common properties supported by the PRU remoteproc > + infrastructure. > + > + The application nodes shall define their own bindings like regular platform > + devices, so below are in addition to each node's bindings. > + > +properties: > + prus: ti,prus > + $ref: /schemas/types.yaml#/definitions/phandle-array > + description: phandles to the PRU, RTU or Tx_PRU nodes used > + > + firmware-name: > + $ref: /schemas/types.yaml#/definitions/string-array > + description: | > + firmwares for the PRU cores, the default firmware for the core from > + the PRU node will be used if not provided. The firmware names should > + correspond to the PRU cores listed in the 'prus' property > + > + ti,pruss-gp-mux-sel: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + enum: [0, 1, 2, 3, 4] > + description: | > + array of values for the GP_MUX_SEL under PRUSS_GPCFG register for a PRU. > + This selects the internal muxing scheme for the PRU instance. Values > + should correspond to the PRU cores listed in the 'prus' property. The > + GP_MUX_SEL setting is a per-slice setting (one setting for PRU0, RTU0, > + and Tx_PRU0 on K3 SoCs). Use the same value for all cores within the > + same slice in the associative array. If the array size is smaller than > + the size of 'prus' property, the default out-of-reset value (0) for the > + PRU core is used. > + > +required: > + - prus > + > +dependencies: > + firmware-name: [ prus ] > + ti,pruss-gp-mux-sel: [ prus ] > + > +additionalProperties: true > + > +examples: > + - | > + /* PRU application node example */ > + pru-app { > + prus = <&pru0>, <&pru1>; > + firmware-name = "pruss-app-fw0", "pruss-app-fw1"; > + ti,pruss-gp-mux-sel = <2>, <1>; > + }; > -- > 2.29.0 >
Hi Rob, On Mon, 14 Dec 2020 at 23:58, Rob Herring <robh@kernel.org> wrote: > > On Fri, Dec 11, 2020 at 03:29:29PM +0100, Grzegorz Jaszczyk wrote: > > From: Suman Anna <s-anna@ti.com> > > > > Add a YAML binding document for PRU consumers. The binding includes > > all the common properties that can be used by different PRU consumer > > or application nodes and supported by the PRU remoteproc driver. > > These are used to configure the PRU hardware for specific user > > applications. > > > > The application nodes themselves should define their own bindings. > > > > Co-developed-by: Tero Kristo <t-kristo@ti.com> > > Signed-off-by: Tero Kristo <t-kristo@ti.com> > > Signed-off-by: Suman Anna <s-anna@ti.com> > > Co-developed-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > --- > > .../bindings/remoteproc/ti,pru-consumer.yaml | 64 +++++++++++++++++++ > > 1 file changed, 64 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > new file mode 100644 > > index 000000000000..2c5c5e2b6159 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > @@ -0,0 +1,64 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/remoteproc/ti,pru-consumer.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Common TI PRU Consumer Binding > > + > > +maintainers: > > + - Suman Anna <s-anna@ti.com> > > + > > +description: | > > + A PRU application/consumer/user node typically uses one or more PRU device > > + nodes to implement a PRU application/functionality. Each application/client > > + node would need a reference to at least a PRU node, and optionally define > > + some properties needed for hardware/firmware configuration. The below > > + properties are a list of common properties supported by the PRU remoteproc > > + infrastructure. > > + > > + The application nodes shall define their own bindings like regular platform > > + devices, so below are in addition to each node's bindings. > > + > > +properties: > > + prus: > > ti,prus Thank you - I will change and post v2 but with this I will run into issues when this binding will be referenced by some consumer YAML binding. Running dtbs_check in such case throws: ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' does not match any of the regexes: 'pinctrl-[0-9]+' In the same time if I will remove this property from that node I am getting: ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' is a required property as expected. Getting rid of the comma from this property name workarounds mentioned problem (which is not proper but allows me to correctly test this binding): e.g. s/ti,prus/ti-pruss/ or using the previous name without a comma. It seems to be an issue with dtbs_check itself which we will encounter in the future. Best regards, Grzegorz > > > + $ref: /schemas/types.yaml#/definitions/phandle-array > > + description: phandles to the PRU, RTU or Tx_PRU nodes used > > + > > + firmware-name: > > + $ref: /schemas/types.yaml#/definitions/string-array > > + description: | > > + firmwares for the PRU cores, the default firmware for the core from > > + the PRU node will be used if not provided. The firmware names should > > + correspond to the PRU cores listed in the 'prus' property > > + > > + ti,pruss-gp-mux-sel: > > + $ref: /schemas/types.yaml#/definitions/uint32-array > > + enum: [0, 1, 2, 3, 4] > > + description: | > > + array of values for the GP_MUX_SEL under PRUSS_GPCFG register for a PRU. > > + This selects the internal muxing scheme for the PRU instance. Values > > + should correspond to the PRU cores listed in the 'prus' property. The > > + GP_MUX_SEL setting is a per-slice setting (one setting for PRU0, RTU0, > > + and Tx_PRU0 on K3 SoCs). Use the same value for all cores within the > > + same slice in the associative array. If the array size is smaller than > > + the size of 'prus' property, the default out-of-reset value (0) for the > > + PRU core is used. > > + > > +required: > > + - prus > > + > > +dependencies: > > + firmware-name: [ prus ] > > + ti,pruss-gp-mux-sel: [ prus ] > > + > > +additionalProperties: true > > + > > +examples: > > + - | > > + /* PRU application node example */ > > + pru-app { > > + prus = <&pru0>, <&pru1>; > > + firmware-name = "pruss-app-fw0", "pruss-app-fw1"; > > + ti,pruss-gp-mux-sel = <2>, <1>; > > + }; > > -- > > 2.29.0 > >
On Wed, Dec 16, 2020 at 9:55 AM Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> wrote: > > Hi Rob, > > On Mon, 14 Dec 2020 at 23:58, Rob Herring <robh@kernel.org> wrote: > > > > On Fri, Dec 11, 2020 at 03:29:29PM +0100, Grzegorz Jaszczyk wrote: > > > From: Suman Anna <s-anna@ti.com> > > > > > > Add a YAML binding document for PRU consumers. The binding includes > > > all the common properties that can be used by different PRU consumer > > > or application nodes and supported by the PRU remoteproc driver. > > > These are used to configure the PRU hardware for specific user > > > applications. > > > > > > The application nodes themselves should define their own bindings. > > > > > > Co-developed-by: Tero Kristo <t-kristo@ti.com> > > > Signed-off-by: Tero Kristo <t-kristo@ti.com> > > > Signed-off-by: Suman Anna <s-anna@ti.com> > > > Co-developed-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > > Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > > --- > > > .../bindings/remoteproc/ti,pru-consumer.yaml | 64 +++++++++++++++++++ > > > 1 file changed, 64 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > new file mode 100644 > > > index 000000000000..2c5c5e2b6159 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > @@ -0,0 +1,64 @@ > > > +# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/remoteproc/ti,pru-consumer.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Common TI PRU Consumer Binding > > > + > > > +maintainers: > > > + - Suman Anna <s-anna@ti.com> > > > + > > > +description: | > > > + A PRU application/consumer/user node typically uses one or more PRU device > > > + nodes to implement a PRU application/functionality. Each application/client > > > + node would need a reference to at least a PRU node, and optionally define > > > + some properties needed for hardware/firmware configuration. The below > > > + properties are a list of common properties supported by the PRU remoteproc > > > + infrastructure. > > > + > > > + The application nodes shall define their own bindings like regular platform > > > + devices, so below are in addition to each node's bindings. > > > + > > > +properties: > > > + prus: > > > > ti,prus > > Thank you - I will change and post v2 but with this I will run into > issues when this binding will be referenced by some consumer YAML > binding. Running dtbs_check in such case throws: > ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' does not > match any of the regexes: 'pinctrl-[0-9]+' > In the same time if I will remove this property from that node I am getting: > ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' is a required property > as expected. Sounds like you didn't update 'ti,prus' in whatever schema you include this one from. > > Getting rid of the comma from this property name workarounds mentioned > problem (which is not proper but allows me to correctly test this > binding): e.g. s/ti,prus/ti-pruss/ or using the previous name without > a comma. > It seems to be an issue with dtbs_check itself which we will encounter > in the future. If not, can you point me to a branch having this problem. Rob
Hi Rob, On Fri, 18 Dec 2020 at 23:51, Rob Herring <robh@kernel.org> wrote: > > On Wed, Dec 16, 2020 at 9:55 AM Grzegorz Jaszczyk > <grzegorz.jaszczyk@linaro.org> wrote: > > > > Hi Rob, > > > > On Mon, 14 Dec 2020 at 23:58, Rob Herring <robh@kernel.org> wrote: > > > > > > On Fri, Dec 11, 2020 at 03:29:29PM +0100, Grzegorz Jaszczyk wrote: > > > > From: Suman Anna <s-anna@ti.com> > > > > > > > > Add a YAML binding document for PRU consumers. The binding includes > > > > all the common properties that can be used by different PRU consumer > > > > or application nodes and supported by the PRU remoteproc driver. > > > > These are used to configure the PRU hardware for specific user > > > > applications. > > > > > > > > The application nodes themselves should define their own bindings. > > > > > > > > Co-developed-by: Tero Kristo <t-kristo@ti.com> > > > > Signed-off-by: Tero Kristo <t-kristo@ti.com> > > > > Signed-off-by: Suman Anna <s-anna@ti.com> > > > > Co-developed-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > > > Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > > > --- > > > > .../bindings/remoteproc/ti,pru-consumer.yaml | 64 +++++++++++++++++++ > > > > 1 file changed, 64 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > > > > > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > new file mode 100644 > > > > index 000000000000..2c5c5e2b6159 > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > @@ -0,0 +1,64 @@ > > > > +# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/remoteproc/ti,pru-consumer.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: Common TI PRU Consumer Binding > > > > + > > > > +maintainers: > > > > + - Suman Anna <s-anna@ti.com> > > > > + > > > > +description: | > > > > + A PRU application/consumer/user node typically uses one or more PRU device > > > > + nodes to implement a PRU application/functionality. Each application/client > > > > + node would need a reference to at least a PRU node, and optionally define > > > > + some properties needed for hardware/firmware configuration. The below > > > > + properties are a list of common properties supported by the PRU remoteproc > > > > + infrastructure. > > > > + > > > > + The application nodes shall define their own bindings like regular platform > > > > + devices, so below are in addition to each node's bindings. > > > > + > > > > +properties: > > > > + prus: > > > > > > ti,prus > > > > Thank you - I will change and post v2 but with this I will run into > > issues when this binding will be referenced by some consumer YAML > > binding. Running dtbs_check in such case throws: > > ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' does not > > match any of the regexes: 'pinctrl-[0-9]+' > > In the same time if I will remove this property from that node I am getting: > > ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' is a required property > > as expected. > > Sounds like you didn't update 'ti,prus' in whatever schema you include > this one from. > > > > > Getting rid of the comma from this property name workarounds mentioned > > problem (which is not proper but allows me to correctly test this > > binding): e.g. s/ti,prus/ti-pruss/ or using the previous name without > > a comma. > > It seems to be an issue with dtbs_check itself which we will encounter > > in the future. > > If not, can you point me to a branch having this problem. Sure, here is temporary branch with 4 last commits demonstrating mentioned issues (when property name contains comma): https://git.linaro.org/people/grzegorz.jaszczyk/linux.git/log/?h=ti-pruss-binding-issue The last commit gets rid of the comma from properties names which successfully w/a the problem. Please note that those are only TEMP commits which demonstrates the mentioned issue. I've put error logs with some notes in commit log to ease understanding what issues are seen when. Thank you in advance, Grzegorz
On Tue, Dec 22, 2020 at 8:57 AM Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> wrote: > > Hi Rob, > > On Fri, 18 Dec 2020 at 23:51, Rob Herring <robh@kernel.org> wrote: > > > > On Wed, Dec 16, 2020 at 9:55 AM Grzegorz Jaszczyk > > <grzegorz.jaszczyk@linaro.org> wrote: > > > > > > Hi Rob, > > > > > > On Mon, 14 Dec 2020 at 23:58, Rob Herring <robh@kernel.org> wrote: > > > > > > > > On Fri, Dec 11, 2020 at 03:29:29PM +0100, Grzegorz Jaszczyk wrote: > > > > > From: Suman Anna <s-anna@ti.com> > > > > > > > > > > Add a YAML binding document for PRU consumers. The binding includes > > > > > all the common properties that can be used by different PRU consumer > > > > > or application nodes and supported by the PRU remoteproc driver. > > > > > These are used to configure the PRU hardware for specific user > > > > > applications. > > > > > > > > > > The application nodes themselves should define their own bindings. > > > > > > > > > > Co-developed-by: Tero Kristo <t-kristo@ti.com> > > > > > Signed-off-by: Tero Kristo <t-kristo@ti.com> > > > > > Signed-off-by: Suman Anna <s-anna@ti.com> > > > > > Co-developed-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > > > > Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> > > > > > --- > > > > > .../bindings/remoteproc/ti,pru-consumer.yaml | 64 +++++++++++++++++++ > > > > > 1 file changed, 64 insertions(+) > > > > > create mode 100644 Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > > new file mode 100644 > > > > > index 000000000000..2c5c5e2b6159 > > > > > --- /dev/null > > > > > +++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml > > > > > @@ -0,0 +1,64 @@ > > > > > +# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) > > > > > +%YAML 1.2 > > > > > +--- > > > > > +$id: http://devicetree.org/schemas/remoteproc/ti,pru-consumer.yaml# > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > + > > > > > +title: Common TI PRU Consumer Binding > > > > > + > > > > > +maintainers: > > > > > + - Suman Anna <s-anna@ti.com> > > > > > + > > > > > +description: | > > > > > + A PRU application/consumer/user node typically uses one or more PRU device > > > > > + nodes to implement a PRU application/functionality. Each application/client > > > > > + node would need a reference to at least a PRU node, and optionally define > > > > > + some properties needed for hardware/firmware configuration. The below > > > > > + properties are a list of common properties supported by the PRU remoteproc > > > > > + infrastructure. > > > > > + > > > > > + The application nodes shall define their own bindings like regular platform > > > > > + devices, so below are in addition to each node's bindings. > > > > > + > > > > > +properties: > > > > > + prus: > > > > > > > > ti,prus > > > > > > Thank you - I will change and post v2 but with this I will run into > > > issues when this binding will be referenced by some consumer YAML > > > binding. Running dtbs_check in such case throws: > > > ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' does not > > > match any of the regexes: 'pinctrl-[0-9]+' > > > In the same time if I will remove this property from that node I am getting: > > > ... k3-am654-base-board.dt.yaml: serial@28000: 'ti,prus' is a required property > > > as expected. > > > > Sounds like you didn't update 'ti,prus' in whatever schema you include > > this one from. > > > > > > > > Getting rid of the comma from this property name workarounds mentioned > > > problem (which is not proper but allows me to correctly test this > > > binding): e.g. s/ti,prus/ti-pruss/ or using the previous name without > > > a comma. > > > It seems to be an issue with dtbs_check itself which we will encounter > > > in the future. > > > > If not, can you point me to a branch having this problem. > > Sure, here is temporary branch with 4 last commits demonstrating > mentioned issues (when property name contains comma): > https://git.linaro.org/people/grzegorz.jaszczyk/linux.git/log/?h=ti-pruss-binding-issue > > The last commit gets rid of the comma from properties names which > successfully w/a the problem. > > Please note that those are only TEMP commits which demonstrates the > mentioned issue. I've put error logs with some notes in commit log to > ease understanding what issues are seen when. The problem is any property with a vendor prefix has to define a type. There's not a way to define a 'common vendor property' and distinguish both cases in the meta-schemas. I'd like to come up with a more robust mechanism where we just detect if a property has a defined type or not. It should be possible to extract that. (Related, I also want to check for conflicting types.) How many cases of 'ti,prus' do you expect to have and what's the range of number of phandles? Either you should just not have the common schema and just define the properties in each consumer or don't put additional constraints into the consumer schemas (i.e omit the properties in 'properties' and use 'unevaluatedProperties'). Also, I think you can get rid of 'ti,pruss-gp-mux-sel'. Can't it just be an arg cell in 'ti,prus' entries? Rob
> Also, I think you can get rid of 'ti,pruss-gp-mux-sel'. Can't it just > be an arg cell in 'ti,prus' entries? > > Rob +1 for using cells instead of a separate property. FYI, we will have a similar issue with the PRUSSEVTSEL signal for the interrupt controller on the AM18XX. I am still of the opinion (described in more detail at [1]) that using a cell for this makes for both better device tree bindings and easier driver implementation. So I am interested to see what the resolution is here. [1]: https://patchwork.kernel.org/project/linux-arm-kernel/patch/20190708035243.12170-5-s-anna@ti.com/