* [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
@ 2022-11-03 12:01 Thierry Reding
2022-11-03 12:35 ` Rob Herring
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Thierry Reding @ 2022-11-03 12:01 UTC (permalink / raw)
To: Thierry Reding, Rob Herring, Krzysztof Kozlowski
Cc: Uwe Kleine-König, Jon Hunter, devicetree, linux-pwm,
linux-tegra
From: Thierry Reding <treding@nvidia.com>
Convert the Tegra PWFM bindings from the free-form text format to
json-schema.
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
.../bindings/pwm/nvidia,tegra20-pwm.txt | 77 ----------
.../bindings/pwm/nvidia,tegra20-pwm.yaml | 144 ++++++++++++++++++
2 files changed, 144 insertions(+), 77 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
create mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
deleted file mode 100644
index 74c41e34c3b6..000000000000
--- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-Tegra SoC PWFM controller
-
-Required properties:
-- compatible: Must be:
- - "nvidia,tegra20-pwm": for Tegra20
- - "nvidia,tegra30-pwm", "nvidia,tegra20-pwm": for Tegra30
- - "nvidia,tegra114-pwm", "nvidia,tegra20-pwm": for Tegra114
- - "nvidia,tegra124-pwm", "nvidia,tegra20-pwm": for Tegra124
- - "nvidia,tegra132-pwm", "nvidia,tegra20-pwm": for Tegra132
- - "nvidia,tegra210-pwm", "nvidia,tegra20-pwm": for Tegra210
- - "nvidia,tegra186-pwm": for Tegra186
- - "nvidia,tegra194-pwm": for Tegra194
-- reg: physical base address and length of the controller's registers
-- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
- the cells format.
-- clocks: Must contain one entry, for the module clock.
- See ../clocks/clock-bindings.txt for details.
-- resets: Must contain an entry for each entry in reset-names.
- See ../reset/reset.txt for details.
-- reset-names: Must include the following entries:
- - pwm
-
-Optional properties:
-============================
-In some of the interface like PWM based regulator device, it is required
-to configure the pins differently in different states, especially in suspend
-state of the system. The configuration of pin is provided via the pinctrl
-DT node as detailed in the pinctrl DT binding document
- Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-
-The PWM node will have following optional properties.
-pinctrl-names: Pin state names. Must be "default" and "sleep".
-pinctrl-0: phandle for the default/active state of pin configurations.
-pinctrl-1: phandle for the sleep state of pin configurations.
-
-Example:
-
- pwm: pwm@7000a000 {
- compatible = "nvidia,tegra20-pwm";
- reg = <0x7000a000 0x100>;
- #pwm-cells = <2>;
- clocks = <&tegra_car 17>;
- resets = <&tegra_car 17>;
- reset-names = "pwm";
- };
-
-
-Example with the pin configuration for suspend and resume:
-=========================================================
-Suppose pin PE7 (On Tegra210) interfaced with the regulator device and
-it requires PWM output to be tristated when system enters suspend.
-Following will be DT binding to achieve this:
-
-#include <dt-bindings/pinctrl/pinctrl-tegra.h>
-
- pinmux@700008d4 {
- pwm_active_state: pwm_active_state {
- pe7 {
- nvidia,pins = "pe7";
- nvidia,tristate = <TEGRA_PIN_DISABLE>;
- };
- };
-
- pwm_sleep_state: pwm_sleep_state {
- pe7 {
- nvidia,pins = "pe7";
- nvidia,tristate = <TEGRA_PIN_ENABLE>;
- };
- };
- };
-
- pwm@7000a000 {
- /* Mandatory PWM properties */
- pinctrl-names = "default", "sleep";
- pinctrl-0 = <&pwm_active_state>;
- pinctrl-1 = <&pwm_sleep_state>;
- };
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
new file mode 100644
index 000000000000..9c73e78ff434
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
@@ -0,0 +1,144 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/nvidia,tegra20-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra PWFM controller
+
+maintainers:
+ - Thierry Reding <thierry.reding@gmail.com>
+ - Jon Hunter <jonathanh@nvidia.com>
+
+properties:
+ compatible:
+ oneOf:
+ - items:
+ - const: nvidia,tegra20-pwm
+
+ - items:
+ - enum:
+ - nvidia,tegra30-pwm
+ - nvidia,tegra114-pwm
+ - nvidia,tegra124-pwm
+ - nvidia,tegra132-pwm
+ - nvidia,tegra210-pwm
+ - enum:
+ - nvidia,tegra20-pwm
+
+ - items:
+ - const: nvidia,tegra186-pwm
+
+ - items:
+ - const: nvidia,tegra194-pwm
+ - const: nvidia,tegra186-pwm
+
+ - items:
+ - const: nvidia,tegra234-pwm
+ - const: nvidia,tegra194-pwm
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: module clock
+
+ clock-names:
+ items:
+ - const: pwm
+
+ resets:
+ items:
+ - description: module reset
+
+ reset-names:
+ items:
+ - const: pwm
+
+ "#pwm-cells":
+ const: 2
+
+ pinctrl-names:
+ items:
+ - const: default
+ - const: sleep
+
+ pinctrl-0:
+ description: configuration for the default/active state
+
+ pinctrl-1:
+ description: configuration for the sleep state
+
+ operating-points-v2:
+ $ref: "/schemas/types.yaml#/definitions/phandle"
+
+ power-domains:
+ items:
+ - description: phandle to the core power domain
+
+allOf:
+ - $ref: pwm.yaml
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - resets
+ - reset-names
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/tegra20-car.h>
+
+ pwm: pwm@7000a000 {
+ compatible = "nvidia,tegra20-pwm";
+ reg = <0x7000a000 0x100>;
+ #pwm-cells = <2>;
+ clocks = <&tegra_car TEGRA20_CLK_PWM>;
+ resets = <&tegra_car 17>;
+ reset-names = "pwm";
+ };
+
+ # Example with the pin configuration for suspend and resume:
+ # ==========================================================
+ # Suppose pin PE7 (On Tegra210) interfaced with the regulator device and it requires PWM output
+ # to be tristated when system enters suspend.
+ - |
+ #include <dt-bindings/clock/tegra210-car.h>
+ #include <dt-bindings/pinctrl/pinctrl-tegra.h>
+
+ pinmux@700008d4 {
+ compatible = "nvidia,tegra210-pinmux";
+ reg = <0x700008d4 0x29c>, /* Pad control registers */
+ <0x70003000 0x294>; /* Mux registers */
+
+ pwm_active_state: pwm_active_state {
+ pe7 {
+ nvidia,pins = "pe7";
+ nvidia,tristate = <TEGRA_PIN_DISABLE>;
+ };
+ };
+
+ pwm_sleep_state: pwm_sleep_state {
+ pe7 {
+ nvidia,pins = "pe7";
+ nvidia,tristate = <TEGRA_PIN_ENABLE>;
+ };
+ };
+ };
+
+ pwm@7000a000 {
+ compatible = "nvidia,tegra210-pwm", "nvidia,tegra20-pwm";
+ reg = <0x7000a000 0x100>;
+ clocks = <&tegra_car TEGRA210_CLK_PWM>;
+ clock-names = "pwm";
+ resets = <&tegra_car 17>;
+ reset-names = "pwm";
+ #pwm-cells = <2>;
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pwm_active_state>;
+ pinctrl-1 = <&pwm_sleep_state>;
+ };
--
2.38.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 12:01 [PATCH] dt-bindings: pwm: tegra: Convert to json-schema Thierry Reding
@ 2022-11-03 12:35 ` Rob Herring
2022-11-03 14:03 ` Thierry Reding
2022-11-03 14:14 ` Krzysztof Kozlowski
2022-11-07 19:58 ` Uwe Kleine-König
2 siblings, 1 reply; 8+ messages in thread
From: Rob Herring @ 2022-11-03 12:35 UTC (permalink / raw)
To: Thierry Reding
Cc: Jon Hunter, devicetree, linux-pwm, linux-tegra,
Uwe Kleine-König, Rob Herring, Krzysztof Kozlowski
On Thu, 03 Nov 2022 13:01:37 +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> Convert the Tegra PWFM bindings from the free-form text format to
> json-schema.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> .../bindings/pwm/nvidia,tegra20-pwm.txt | 77 ----------
> .../bindings/pwm/nvidia,tegra20-pwm.yaml | 144 ++++++++++++++++++
> 2 files changed, 144 insertions(+), 77 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> create mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.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:
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.example.dtb:0:0: /example-1/pinmux@700008d4: failed to match any schema with compatible: ['nvidia,tegra210-pinmux']
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
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.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 12:35 ` Rob Herring
@ 2022-11-03 14:03 ` Thierry Reding
2022-11-03 14:07 ` Krzysztof Kozlowski
0 siblings, 1 reply; 8+ messages in thread
From: Thierry Reding @ 2022-11-03 14:03 UTC (permalink / raw)
To: Rob Herring
Cc: Jon Hunter, devicetree, linux-pwm, linux-tegra,
Uwe Kleine-König, Rob Herring, Krzysztof Kozlowski
[-- Attachment #1: Type: text/plain, Size: 1160 bytes --]
On Thu, Nov 03, 2022 at 07:35:43AM -0500, Rob Herring wrote:
>
> On Thu, 03 Nov 2022 13:01:37 +0100, Thierry Reding wrote:
> > From: Thierry Reding <treding@nvidia.com>
> >
> > Convert the Tegra PWFM bindings from the free-form text format to
> > json-schema.
> >
> > Signed-off-by: Thierry Reding <treding@nvidia.com>
> > ---
> > .../bindings/pwm/nvidia,tegra20-pwm.txt | 77 ----------
> > .../bindings/pwm/nvidia,tegra20-pwm.yaml | 144 ++++++++++++++++++
> > 2 files changed, 144 insertions(+), 77 deletions(-)
> > delete mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> > create mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.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:
>
> dtschema/dtc warnings/errors:
> Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.example.dtb:0:0: /example-1/pinmux@700008d4: failed to match any schema with compatible: ['nvidia,tegra210-pinmux']
Still working on the conversion of that one.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 14:03 ` Thierry Reding
@ 2022-11-03 14:07 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2022-11-03 14:07 UTC (permalink / raw)
To: Thierry Reding, Rob Herring
Cc: Jon Hunter, devicetree, linux-pwm, linux-tegra,
Uwe Kleine-König, Rob Herring, Krzysztof Kozlowski
On 03/11/2022 10:03, Thierry Reding wrote:
> On Thu, Nov 03, 2022 at 07:35:43AM -0500, Rob Herring wrote:
>>
>> On Thu, 03 Nov 2022 13:01:37 +0100, Thierry Reding wrote:
>>> From: Thierry Reding <treding@nvidia.com>
>>>
>>> Convert the Tegra PWFM bindings from the free-form text format to
>>> json-schema.
>>>
>>> Signed-off-by: Thierry Reding <treding@nvidia.com>
>>> ---
>>> .../bindings/pwm/nvidia,tegra20-pwm.txt | 77 ----------
>>> .../bindings/pwm/nvidia,tegra20-pwm.yaml | 144 ++++++++++++++++++
>>> 2 files changed, 144 insertions(+), 77 deletions(-)
>>> delete mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
>>> create mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.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:
>>
>> dtschema/dtc warnings/errors:
>> Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.example.dtb:0:0: /example-1/pinmux@700008d4: failed to match any schema with compatible: ['nvidia,tegra210-pinmux']
>
> Still working on the conversion of that one.
Then drop the nodes from example. They are not really needed and example
checks must pass.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 12:01 [PATCH] dt-bindings: pwm: tegra: Convert to json-schema Thierry Reding
2022-11-03 12:35 ` Rob Herring
@ 2022-11-03 14:14 ` Krzysztof Kozlowski
2022-11-03 14:38 ` Thierry Reding
2022-11-07 19:58 ` Uwe Kleine-König
2 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2022-11-03 14:14 UTC (permalink / raw)
To: Thierry Reding, Rob Herring, Krzysztof Kozlowski
Cc: Uwe Kleine-König, Jon Hunter, devicetree, linux-pwm,
linux-tegra
On 03/11/2022 08:01, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> Convert the Tegra PWFM bindings from the free-form text format to
> json-schema.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> .../bindings/pwm/nvidia,tegra20-pwm.txt | 77 ----------
> .../bindings/pwm/nvidia,tegra20-pwm.yaml | 144 ++++++++++++++++++
> 2 files changed, 144 insertions(+), 77 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> create mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
>
> diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> deleted file mode 100644
> index 74c41e34c3b6..000000000000
> --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> +++ /dev/null
> @@ -1,77 +0,0 @@
> -Tegra SoC PWFM controller
> -
> -Required properties:
> -- compatible: Must be:
> - - "nvidia,tegra20-pwm": for Tegra20
> - - "nvidia,tegra30-pwm", "nvidia,tegra20-pwm": for Tegra30
> - - "nvidia,tegra114-pwm", "nvidia,tegra20-pwm": for Tegra114
> - - "nvidia,tegra124-pwm", "nvidia,tegra20-pwm": for Tegra124
> - - "nvidia,tegra132-pwm", "nvidia,tegra20-pwm": for Tegra132
> - - "nvidia,tegra210-pwm", "nvidia,tegra20-pwm": for Tegra210
> - - "nvidia,tegra186-pwm": for Tegra186
> - - "nvidia,tegra194-pwm": for Tegra194
> -- reg: physical base address and length of the controller's registers
> -- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
> - the cells format.
> -- clocks: Must contain one entry, for the module clock.
> - See ../clocks/clock-bindings.txt for details.
> -- resets: Must contain an entry for each entry in reset-names.
> - See ../reset/reset.txt for details.
> -- reset-names: Must include the following entries:
> - - pwm
> -
> -Optional properties:
> -============================
> -In some of the interface like PWM based regulator device, it is required
> -to configure the pins differently in different states, especially in suspend
> -state of the system. The configuration of pin is provided via the pinctrl
> -DT node as detailed in the pinctrl DT binding document
> - Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
> -
> -The PWM node will have following optional properties.
> -pinctrl-names: Pin state names. Must be "default" and "sleep".
> -pinctrl-0: phandle for the default/active state of pin configurations.
> -pinctrl-1: phandle for the sleep state of pin configurations.
> -
> -Example:
> -
> - pwm: pwm@7000a000 {
> - compatible = "nvidia,tegra20-pwm";
> - reg = <0x7000a000 0x100>;
> - #pwm-cells = <2>;
> - clocks = <&tegra_car 17>;
> - resets = <&tegra_car 17>;
> - reset-names = "pwm";
> - };
> -
> -
> -Example with the pin configuration for suspend and resume:
> -=========================================================
> -Suppose pin PE7 (On Tegra210) interfaced with the regulator device and
> -it requires PWM output to be tristated when system enters suspend.
> -Following will be DT binding to achieve this:
> -
> -#include <dt-bindings/pinctrl/pinctrl-tegra.h>
> -
> - pinmux@700008d4 {
> - pwm_active_state: pwm_active_state {
> - pe7 {
> - nvidia,pins = "pe7";
> - nvidia,tristate = <TEGRA_PIN_DISABLE>;
> - };
> - };
> -
> - pwm_sleep_state: pwm_sleep_state {
> - pe7 {
> - nvidia,pins = "pe7";
> - nvidia,tristate = <TEGRA_PIN_ENABLE>;
> - };
> - };
> - };
> -
> - pwm@7000a000 {
> - /* Mandatory PWM properties */
> - pinctrl-names = "default", "sleep";
> - pinctrl-0 = <&pwm_active_state>;
> - pinctrl-1 = <&pwm_sleep_state>;
> - };
> diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
> new file mode 100644
> index 000000000000..9c73e78ff434
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
> @@ -0,0 +1,144 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/pwm/nvidia,tegra20-pwm.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVIDIA Tegra PWFM controller
> +
> +maintainers:
> + - Thierry Reding <thierry.reding@gmail.com>
> + - Jon Hunter <jonathanh@nvidia.com>
> +
> +properties:
> + compatible:
> + oneOf:
> + - items:
> + - const: nvidia,tegra20-pwm
> +
> + - items:
> + - enum:
> + - nvidia,tegra30-pwm
> + - nvidia,tegra114-pwm
> + - nvidia,tegra124-pwm
> + - nvidia,tegra132-pwm
> + - nvidia,tegra210-pwm
> + - enum:
> + - nvidia,tegra20-pwm
> +
> + - items:
> + - const: nvidia,tegra186-pwm
I guess you wanted to keep some order between nvidia,tegra20-pwm and
nvidia,tegra186-pwm, but this creates impression you will have here more
items, which of course cannot happen. So either keep this one with
tegra20 as one enum or drop "items".
> +
> + - items:
> + - const: nvidia,tegra194-pwm
> + - const: nvidia,tegra186-pwm
> +
> + - items:
> + - const: nvidia,tegra234-pwm
> + - const: nvidia,tegra194-pwm
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: module clock
Just maxItems: 1, because description is not really helping.
> +
> + clock-names:
> + items:
> + - const: pwm
This wasn't in original binding and does not look needed. Mention
changes from pure conversion.
> +
> + resets:
> + items:
> + - description: module reset
> +
> + reset-names:
> + items:
> + - const: pwm
> +
> + "#pwm-cells":
> + const: 2
> +
> + pinctrl-names:
> + items:
> + - const: default
> + - const: sleep
> +
> + pinctrl-0:
> + description: configuration for the default/active state
> +
> + pinctrl-1:
> + description: configuration for the sleep state
> +
> + operating-points-v2:
> + $ref: "/schemas/types.yaml#/definitions/phandle"
Drop quotes. We should actually define it in some common schema.
> +
> + power-domains:
> + items:
> + - description: phandle to the core power domain
> +
> +allOf:
> + - $ref: pwm.yaml
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - resets
> + - reset-names
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/tegra20-car.h>
> +
> + pwm: pwm@7000a000 {
> + compatible = "nvidia,tegra20-pwm";
> + reg = <0x7000a000 0x100>;
> + #pwm-cells = <2>;
> + clocks = <&tegra_car TEGRA20_CLK_PWM>;
> + resets = <&tegra_car 17>;
> + reset-names = "pwm";
> + };
> +
> + # Example with the pin configuration for suspend and resume:
> + # ==========================================================
> + # Suppose pin PE7 (On Tegra210) interfaced with the regulator device and it requires PWM output
> + # to be tristated when system enters suspend.
> + - |
> + #include <dt-bindings/clock/tegra210-car.h>
> + #include <dt-bindings/pinctrl/pinctrl-tegra.h>
> +
> + pinmux@700008d4 {
> + compatible = "nvidia,tegra210-pinmux";
> + reg = <0x700008d4 0x29c>, /* Pad control registers */
> + <0x70003000 0x294>; /* Mux registers */
> +
> + pwm_active_state: pwm_active_state {
No underscores in node names.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 14:14 ` Krzysztof Kozlowski
@ 2022-11-03 14:38 ` Thierry Reding
2022-11-03 14:53 ` Krzysztof Kozlowski
0 siblings, 1 reply; 8+ messages in thread
From: Thierry Reding @ 2022-11-03 14:38 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rob Herring, Krzysztof Kozlowski, Uwe Kleine-König,
Jon Hunter, devicetree, linux-pwm, linux-tegra
[-- Attachment #1: Type: text/plain, Size: 9470 bytes --]
On Thu, Nov 03, 2022 at 10:14:04AM -0400, Krzysztof Kozlowski wrote:
> On 03/11/2022 08:01, Thierry Reding wrote:
> > From: Thierry Reding <treding@nvidia.com>
> >
> > Convert the Tegra PWFM bindings from the free-form text format to
> > json-schema.
> >
> > Signed-off-by: Thierry Reding <treding@nvidia.com>
> > ---
> > .../bindings/pwm/nvidia,tegra20-pwm.txt | 77 ----------
> > .../bindings/pwm/nvidia,tegra20-pwm.yaml | 144 ++++++++++++++++++
> > 2 files changed, 144 insertions(+), 77 deletions(-)
> > delete mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> > create mode 100644 Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> > deleted file mode 100644
> > index 74c41e34c3b6..000000000000
> > --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
> > +++ /dev/null
> > @@ -1,77 +0,0 @@
> > -Tegra SoC PWFM controller
> > -
> > -Required properties:
> > -- compatible: Must be:
> > - - "nvidia,tegra20-pwm": for Tegra20
> > - - "nvidia,tegra30-pwm", "nvidia,tegra20-pwm": for Tegra30
> > - - "nvidia,tegra114-pwm", "nvidia,tegra20-pwm": for Tegra114
> > - - "nvidia,tegra124-pwm", "nvidia,tegra20-pwm": for Tegra124
> > - - "nvidia,tegra132-pwm", "nvidia,tegra20-pwm": for Tegra132
> > - - "nvidia,tegra210-pwm", "nvidia,tegra20-pwm": for Tegra210
> > - - "nvidia,tegra186-pwm": for Tegra186
> > - - "nvidia,tegra194-pwm": for Tegra194
> > -- reg: physical base address and length of the controller's registers
> > -- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
> > - the cells format.
> > -- clocks: Must contain one entry, for the module clock.
> > - See ../clocks/clock-bindings.txt for details.
> > -- resets: Must contain an entry for each entry in reset-names.
> > - See ../reset/reset.txt for details.
> > -- reset-names: Must include the following entries:
> > - - pwm
> > -
> > -Optional properties:
> > -============================
> > -In some of the interface like PWM based regulator device, it is required
> > -to configure the pins differently in different states, especially in suspend
> > -state of the system. The configuration of pin is provided via the pinctrl
> > -DT node as detailed in the pinctrl DT binding document
> > - Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
> > -
> > -The PWM node will have following optional properties.
> > -pinctrl-names: Pin state names. Must be "default" and "sleep".
> > -pinctrl-0: phandle for the default/active state of pin configurations.
> > -pinctrl-1: phandle for the sleep state of pin configurations.
> > -
> > -Example:
> > -
> > - pwm: pwm@7000a000 {
> > - compatible = "nvidia,tegra20-pwm";
> > - reg = <0x7000a000 0x100>;
> > - #pwm-cells = <2>;
> > - clocks = <&tegra_car 17>;
> > - resets = <&tegra_car 17>;
> > - reset-names = "pwm";
> > - };
> > -
> > -
> > -Example with the pin configuration for suspend and resume:
> > -=========================================================
> > -Suppose pin PE7 (On Tegra210) interfaced with the regulator device and
> > -it requires PWM output to be tristated when system enters suspend.
> > -Following will be DT binding to achieve this:
> > -
> > -#include <dt-bindings/pinctrl/pinctrl-tegra.h>
> > -
> > - pinmux@700008d4 {
> > - pwm_active_state: pwm_active_state {
> > - pe7 {
> > - nvidia,pins = "pe7";
> > - nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > - };
> > - };
> > -
> > - pwm_sleep_state: pwm_sleep_state {
> > - pe7 {
> > - nvidia,pins = "pe7";
> > - nvidia,tristate = <TEGRA_PIN_ENABLE>;
> > - };
> > - };
> > - };
> > -
> > - pwm@7000a000 {
> > - /* Mandatory PWM properties */
> > - pinctrl-names = "default", "sleep";
> > - pinctrl-0 = <&pwm_active_state>;
> > - pinctrl-1 = <&pwm_sleep_state>;
> > - };
> > diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
> > new file mode 100644
> > index 000000000000..9c73e78ff434
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml
> > @@ -0,0 +1,144 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/pwm/nvidia,tegra20-pwm.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: NVIDIA Tegra PWFM controller
> > +
> > +maintainers:
> > + - Thierry Reding <thierry.reding@gmail.com>
> > + - Jon Hunter <jonathanh@nvidia.com>
> > +
> > +properties:
> > + compatible:
> > + oneOf:
> > + - items:
> > + - const: nvidia,tegra20-pwm
> > +
> > + - items:
> > + - enum:
> > + - nvidia,tegra30-pwm
> > + - nvidia,tegra114-pwm
> > + - nvidia,tegra124-pwm
> > + - nvidia,tegra132-pwm
> > + - nvidia,tegra210-pwm
> > + - enum:
> > + - nvidia,tegra20-pwm
> > +
> > + - items:
> > + - const: nvidia,tegra186-pwm
>
> I guess you wanted to keep some order between nvidia,tegra20-pwm and
> nvidia,tegra186-pwm, but this creates impression you will have here more
> items, which of course cannot happen. So either keep this one with
> tegra20 as one enum or drop "items".
Done.
>
> > +
> > + - items:
> > + - const: nvidia,tegra194-pwm
> > + - const: nvidia,tegra186-pwm
> > +
> > + - items:
> > + - const: nvidia,tegra234-pwm
> > + - const: nvidia,tegra194-pwm
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + clocks:
> > + items:
> > + - description: module clock
>
> Just maxItems: 1, because description is not really helping.
Okay, seems fine.
> > +
> > + clock-names:
> > + items:
> > + - const: pwm
>
> This wasn't in original binding and does not look needed. Mention
> changes from pure conversion.
At some point (looks like with the switch to 64-bit ARM) we started
adding these for consistency because we were noticing that sometimes
either we were missing clock entries or newer SoC generations gained
additional clocks. Whenever that happened it would become somewhat
cumbersome to describe this in device tree bindings and/or driver
code, so consistently adding a clock-names property preventively
even if only a single clock was used in the first iteration seemed a
prudent thing to do.
So these are not technically necessary, but many device tree files will
have these entries, so this is here for those to pass validation.
Note that the property doesn't show up along the "clocks" property in
"required:" below.
>
> > +
> > + resets:
> > + items:
> > + - description: module reset
> > +
> > + reset-names:
> > + items:
> > + - const: pwm
> > +
> > + "#pwm-cells":
> > + const: 2
> > +
> > + pinctrl-names:
> > + items:
> > + - const: default
> > + - const: sleep
> > +
> > + pinctrl-0:
> > + description: configuration for the default/active state
> > +
> > + pinctrl-1:
> > + description: configuration for the sleep state
> > +
> > + operating-points-v2:
> > + $ref: "/schemas/types.yaml#/definitions/phandle"
>
> Drop quotes. We should actually define it in some common schema.
Yeah, good idea. I'll drop the quotes for now and see if I can find a
good place to add this in dt-schema.
> > +
> > + power-domains:
> > + items:
> > + - description: phandle to the core power domain
> > +
> > +allOf:
> > + - $ref: pwm.yaml
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - clocks
> > + - resets
> > + - reset-names
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + #include <dt-bindings/clock/tegra20-car.h>
> > +
> > + pwm: pwm@7000a000 {
> > + compatible = "nvidia,tegra20-pwm";
> > + reg = <0x7000a000 0x100>;
> > + #pwm-cells = <2>;
> > + clocks = <&tegra_car TEGRA20_CLK_PWM>;
> > + resets = <&tegra_car 17>;
> > + reset-names = "pwm";
> > + };
> > +
> > + # Example with the pin configuration for suspend and resume:
> > + # ==========================================================
> > + # Suppose pin PE7 (On Tegra210) interfaced with the regulator device and it requires PWM output
> > + # to be tristated when system enters suspend.
> > + - |
> > + #include <dt-bindings/clock/tegra210-car.h>
> > + #include <dt-bindings/pinctrl/pinctrl-tegra.h>
> > +
> > + pinmux@700008d4 {
> > + compatible = "nvidia,tegra210-pinmux";
> > + reg = <0x700008d4 0x29c>, /* Pad control registers */
> > + <0x70003000 0x294>; /* Mux registers */
> > +
> > + pwm_active_state: pwm_active_state {
>
> No underscores in node names.
I've dropped the entire example, but I may want to put it back once the
pinmux conversion is done, in which case I'll make sure to replace the
underscores.
Thanks,
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 14:38 ` Thierry Reding
@ 2022-11-03 14:53 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2022-11-03 14:53 UTC (permalink / raw)
To: Thierry Reding
Cc: Rob Herring, Krzysztof Kozlowski, Uwe Kleine-König,
Jon Hunter, devicetree, linux-pwm, linux-tegra
On 03/11/2022 10:38, Thierry Reding wrote:
>>> +
>>> + clock-names:
>>> + items:
>>> + - const: pwm
>>
>> This wasn't in original binding and does not look needed. Mention
>> changes from pure conversion.
>
> At some point (looks like with the switch to 64-bit ARM) we started
> adding these for consistency because we were noticing that sometimes
> either we were missing clock entries or newer SoC generations gained
> additional clocks. Whenever that happened it would become somewhat
> cumbersome to describe this in device tree bindings and/or driver
> code, so consistently adding a clock-names property preventively
> even if only a single clock was used in the first iteration seemed a
> prudent thing to do.
Adding undocumented properties "preventively" is not the correct
approach. Either you document them, or you do not add them.
The property with one item and name matching the function is not really
a good approach, not helpful. Drop it.
>
> So these are not technically necessary, but many device tree files will
> have these entries, so this is here for those to pass validation.
Drop it from DTS then.
>
> Note that the property doesn't show up along the "clocks" property in
> "required:" below.
>
>>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] dt-bindings: pwm: tegra: Convert to json-schema
2022-11-03 12:01 [PATCH] dt-bindings: pwm: tegra: Convert to json-schema Thierry Reding
2022-11-03 12:35 ` Rob Herring
2022-11-03 14:14 ` Krzysztof Kozlowski
@ 2022-11-07 19:58 ` Uwe Kleine-König
2 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2022-11-07 19:58 UTC (permalink / raw)
To: Thierry Reding
Cc: Rob Herring, Krzysztof Kozlowski, Jon Hunter, devicetree,
linux-pwm, linux-tegra
[-- Attachment #1: Type: text/plain, Size: 430 bytes --]
On Thu, Nov 03, 2022 at 01:01:37PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> Convert the Tegra PWFM bindings from the free-form text format to
I hope I don't miss anything, but I think you want s/PWFM/PWM/.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-11-07 19:58 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-03 12:01 [PATCH] dt-bindings: pwm: tegra: Convert to json-schema Thierry Reding
2022-11-03 12:35 ` Rob Herring
2022-11-03 14:03 ` Thierry Reding
2022-11-03 14:07 ` Krzysztof Kozlowski
2022-11-03 14:14 ` Krzysztof Kozlowski
2022-11-03 14:38 ` Thierry Reding
2022-11-03 14:53 ` Krzysztof Kozlowski
2022-11-07 19:58 ` Uwe Kleine-König
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).