Message ID | 20230705155222.2519728-3-thierry.reding@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/3] dt-bindings: arm: tegra: flowctrl: Convert to json-schema | expand |
Hi Thierry, On Thu, 6 Jul 2023, Thierry Reding wrote: > On Wed, Jul 05, 2023 at 02:50:13PM -0600, Rob Herring wrote: >> On Wed, Jul 05, 2023 at 05:52:22PM +0200, Thierry Reding wrote: >>> From: Thierry Reding <treding@nvidia.com> >>> >>> Convert the NVIDIA embedded controller bindings from the free-form text >>> format to json-schema. >>> >>> Acked-by: Marc Dietrich <marvin24@gmx.de> >>> Signed-off-by: Thierry Reding <treding@nvidia.com> >>> --- >>> Changes in v2: >>> - drop $ref for standard clock-frequency property >>> - use 4 spaces for indentation in example >>> - move to soc/tegra directory >>> >>> .../bindings/arm/tegra/nvidia,nvec.txt | 21 ----- >>> .../bindings/soc/tegra/nvidia,nvec.yaml | 92 +++++++++++++++++++ >>> 2 files changed, 92 insertions(+), 21 deletions(-) >>> delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt >>> create mode 100644 Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml >>> >>> diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt >>> deleted file mode 100644 >>> index 5ae601e7f51f..000000000000 >>> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt >>> +++ /dev/null >>> @@ -1,21 +0,0 @@ >>> -NVIDIA compliant embedded controller >>> - >>> -Required properties: >>> -- compatible : should be "nvidia,nvec". >>> -- reg : the iomem of the i2c slave controller >>> -- interrupts : the interrupt line of the i2c slave controller >>> -- clock-frequency : the frequency of the i2c bus >>> -- gpios : the gpio used for ec request >>> -- slave-addr: the i2c address of the slave controller >>> -- clocks : Must contain an entry for each entry in clock-names. >>> - See ../clocks/clock-bindings.txt for details. >>> -- clock-names : Must include the following entries: >>> - Tegra20/Tegra30: >>> - - div-clk >>> - - fast-clk >>> - Tegra114: >>> - - div-clk >>> -- resets : Must contain an entry for each entry in reset-names. >>> - See ../reset/reset.txt for details. >>> -- reset-names : Must include the following entries: >>> - - i2c >>> diff --git a/Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml b/Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml >>> new file mode 100644 >>> index 000000000000..0b4f898b2a1d >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml >>> @@ -0,0 +1,92 @@ >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>> +%YAML 1.2 >>> +--- >>> +$id: http://devicetree.org/schemas/soc/tegra/nvidia,nvec.yaml# >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> + >>> +title: NVIDIA compliant embedded controller >>> + >>> +maintainers: >>> + - Thierry Reding <thierry.reding@gmail.com> >>> + - Jon Hunter <jonathanh@nvidia.com> >>> + >>> +properties: >>> + compatible: >>> + const: nvidia,nvec >>> + >>> + reg: >>> + maxItems: 1 >>> + >>> + interrupts: >>> + maxItems: 1 >>> + >>> + clocks: >>> + minItems: 1 >>> + items: >>> + - description: divider clock >>> + - description: fast clock >>> + >>> + clock-names: >>> + minItems: 1 >>> + items: >>> + - const: div-clk >>> + - const: fast-clk >>> + >>> + resets: >>> + items: >>> + - description: module reset >>> + >>> + reset-names: >>> + items: >>> + - const: i2c >>> + >>> + clock-frequency: true >>> + >>> + request-gpios: >>> + description: phandle to the GPIO used for EC request >>> + >>> + slave-addr: >>> + $ref: /schemas/types.yaml#/definitions/uint32 >>> + description: I2C address of the slave controller >>> + >>> + "#address-cells": >>> + const: 1 >>> + >>> + "#size-cells": >>> + const: 0 >> >> You don't have any child nodes defined, so these 2 properties are >> pointless. > > Good point. Looking at this a bit more, I think perhaps we should also > rename the node representing this to i2c@7000c500 because this is really > only a repurposed I2C controller, which is probably also where these > stray #address-cells and #size-cells come from. > > In DT we basically duplicate i2c@7000c500 and nvec@7000c500, but we can > probably also reuse most of i2c@7000c500 and just drop some things that > NVEC can't use (such as dmas and dma-names) and add the slave specific > bits (such as clock-frequency, slave-addr and request-gpios). > > Marc, any thoughts? the idea was indeed to convert the driver to the i2c-slave sub-sys and add the EC sub-functions (keyboard, mouse, power, ...) as children below the controllers node, which are currently hard-coded. As this didn't happen yet these entries could be removed for now. Using i2c instead of nvec as the node name also makes sense, because that is the real hardware described by the following properties. On the other hand, I'm not sure if it is worth the effort (u-boot would also need this change). Best regards, Marc
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt deleted file mode 100644 index 5ae601e7f51f..000000000000 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,nvec.txt +++ /dev/null @@ -1,21 +0,0 @@ -NVIDIA compliant embedded controller - -Required properties: -- compatible : should be "nvidia,nvec". -- reg : the iomem of the i2c slave controller -- interrupts : the interrupt line of the i2c slave controller -- clock-frequency : the frequency of the i2c bus -- gpios : the gpio used for ec request -- slave-addr: the i2c address of the slave controller -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - Tegra20/Tegra30: - - div-clk - - fast-clk - Tegra114: - - div-clk -- resets : Must contain an entry for each entry in reset-names. - See ../reset/reset.txt for details. -- reset-names : Must include the following entries: - - i2c diff --git a/Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml b/Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml new file mode 100644 index 000000000000..0b4f898b2a1d --- /dev/null +++ b/Documentation/devicetree/bindings/soc/tegra/nvidia,nvec.yaml @@ -0,0 +1,92 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/tegra/nvidia,nvec.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: NVIDIA compliant embedded controller + +maintainers: + - Thierry Reding <thierry.reding@gmail.com> + - Jon Hunter <jonathanh@nvidia.com> + +properties: + compatible: + const: nvidia,nvec + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + minItems: 1 + items: + - description: divider clock + - description: fast clock + + clock-names: + minItems: 1 + items: + - const: div-clk + - const: fast-clk + + resets: + items: + - description: module reset + + reset-names: + items: + - const: i2c + + clock-frequency: true + + request-gpios: + description: phandle to the GPIO used for EC request + + slave-addr: + $ref: /schemas/types.yaml#/definitions/uint32 + description: I2C address of the slave controller + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + +additionalProperties: false + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - resets + - reset-names + - clock-frequency + - request-gpios + - slave-addr + +examples: + - | + #include <dt-bindings/clock/tegra20-car.h> + #include <dt-bindings/gpio/tegra-gpio.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + + nvec@7000c500 { + compatible = "nvidia,nvec"; + reg = <0x7000c500 0x100>; + interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = <80000>; + request-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_HIGH>; + slave-addr = <138>; + clocks = <&tegra_car TEGRA20_CLK_I2C3>, + <&tegra_car TEGRA20_CLK_PLL_P_OUT3>; + clock-names = "div-clk", "fast-clk"; + resets = <&tegra_car 67>; + reset-names = "i2c"; + };