Re: [PATCH 2/2] dt-bindings: sound: tegra-ahub: Convert to json-schema
From: Rob Herring
Date: Mon Sep 28 2026 - 17:47:12 EST
On Mon, Sep 28, 2026 at 06:24:41PM +0200, Thierry Reding wrote:
> From: Thierry Reding <treding@xxxxxxxxxx>
>
> Convert Tegra AHUB bindings from the free-form text format to
> json-schema.
Pretty sure there was a prior version posted... Please check any
comments there.
>
> Signed-off-by: Thierry Reding <treding@xxxxxxxxxx>
> ---
> .../bindings/sound/nvidia,tegra30-ahub.txt | 88 -------
> .../bindings/sound/nvidia,tegra30-ahub.yaml | 260 +++++++++++++++++++++
> 2 files changed, 260 insertions(+), 88 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
> deleted file mode 100644
> index 0e9a1895d7fb..000000000000
> --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -NVIDIA Tegra30 AHUB (Audio Hub)
> -
> -Required properties:
> -- compatible : For Tegra30, must contain "nvidia,tegra30-ahub". For Tegra114,
> - must contain "nvidia,tegra114-ahub". For Tegra124, must contain
> - "nvidia,tegra124-ahub". Otherwise, must contain "nvidia,<chip>-ahub",
> - plus at least one of the above, where <chip> is tegra132.
> -- reg : Should contain the register physical address and length for each of
> - the AHUB's register blocks.
> - - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks.
> - - Tegra114 requires an additional entry, for the APBIF2 register block.
> -- interrupts : Should contain AHUB interrupt
> -- 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:
> - - d_audio
> - - apbif
> -- resets : Must contain an entry for each entry in reset-names.
> - See ../reset/reset.txt for details.
> -- reset-names : Must include the following entries:
> - Tegra30 and later:
> - - d_audio
> - - apbif
> - - i2s0
> - - i2s1
> - - i2s2
> - - i2s3
> - - i2s4
> - - dam0
> - - dam1
> - - dam2
> - - spdif
> - Tegra114 and later additionally require:
> - - amx
> - - adx
> - Tegra124 and later additionally require:
> - - amx1
> - - adx1
> - - afc0
> - - afc1
> - - afc2
> - - afc3
> - - afc4
> - - afc5
> -- ranges : The bus address mapping for the configlink register bus.
> - Can be empty since the mapping is 1:1.
> -- dmas : Must contain an entry for each entry in clock-names.
> - See ../dma/dma.txt for details.
> -- dma-names : Must include the following entries:
> - - rx0 .. rx<n>
> - - tx0 .. tx<n>
> - ... where n is:
> - Tegra30: 3
> - Tegra114, Tegra124: 9
> -- #address-cells : For the configlink bus. Should be <1>;
> -- #size-cells : For the configlink bus. Should be <1>.
> -
> -AHUB client modules need to specify the IDs of their CIFs (Client InterFaces).
> -For RX CIFs, the numbers indicate the register number within AHUB routing
> -register space (APBIF 0..3 RX, I2S 0..5 RX, DAM 0..2 RX 0..1, SPDIF RX 0..1).
> -For TX CIFs, the numbers indicate the bit position within the AHUB routing
> -registers (APBIF 0..3 TX, I2S 0..5 TX, DAM 0..2 TX, SPDIF TX 0..1).
> -
> -Example:
> -
> -ahub@70080000 {
> - compatible = "nvidia,tegra30-ahub";
> - reg = <0x70080000 0x200 0x70080200 0x100>;
> - interrupts = < 0 103 0x04 >;
> - nvidia,dma-request-selector = <&apbdma 1>;
> - clocks = <&tegra_car 106>, <&tegra_car 107>;
> - clock-names = "d_audio", "apbif";
> - resets = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>,
> - <&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>,
> - <&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>,
> - <&tegra_car 110>, <&tegra_car 10>;
> - reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
> - "i2s3", "i2s4", "dam0", "dam1", "dam2",
> - "spdif";
> - dmas = <&apbdma 1>, <&apbdma 1>;
> - <&apbdma 2>, <&apbdma 2>;
> - <&apbdma 3>, <&apbdma 3>;
> - <&apbdma 4>, <&apbdma 4>;
> - dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2", "rx3", "tx3";
> - ranges;
> - #address-cells = <1>;
> - #size-cells = <1>;
> -};
> diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.yaml
> new file mode 100644
> index 000000000000..c064a2acae5e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.yaml
> @@ -0,0 +1,260 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/nvidia,tegra30-ahub.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVIDIA Tegra30 AHUB (Audio Hub)
> +
> +maintainers:
> + - Thierry Reding <thierry.reding@xxxxxxxxx>
> + - Jon Hunter <jonathanh@xxxxxxxxxx>
> +
> +description: AHUB client modules need to specify the IDs of their CIFs (Client InterFaces). For RX
> + CIFs, the numbers indicate the register number within AHUB routing register space (APBIF 0..3 RX,
> + I2S 0..5 RX, DAM 0..2 RX 0..1, SPDIF RX 0..1). For TX CIFs, the numbers indicate the bit position
> + within the AHUB routing registers (APBIF 0..3 TX, I2S 0..5 TX, DAM 0..2 TX, SPDIF TX 0..1).
CR after 'description' and rewrap to 80 chars.
> +
> +properties:
> + compatible:
> + enum:
> + - nvidia,tegra30-ahub
> + - nvidia,tegra114-ahub
> + - nvidia,tegra124-ahub
> +
> + reg:
> + minItems: 2
> + maxItems: 3
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: digital audio clock
> + - description: module clock
> +
> + clock-names:
> + items:
> + - const: d_audio
> + - const: apbif
> +
> + resets:
> + minItems: 11
> + maxItems: 21
> +
> + reset-names:
> + minItems: 11
> + maxItems: 21
> +
> + ranges: true
> +
> + dmas:
> + minItems: 8
> + maxItems: 20
> +
> + dma-names:
> + minItems: 8
> + maxItems: 20
> +
> + "#address-cells":
> + enum: [ 1, 2 ]
> +
> + "#size-cells":
> + enum: [ 1, 2 ]
> +
> +patternProperties:
> + "^i2s@[0-9a-f]+$":
> + type: object
required:
- compatible
Otherwise, we can't be sure it is validated. Or if there isn't a
compatible, then the schema needs to go here (directly or via a $ref).
Rob