From: Rob Herring <robh@kernel.org>
To: Charan Pedumuru <charan.pedumuru@gmail.com>
Cc: Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Thierry Reding <thierry.reding@kernel.org>,
Jonathan Hunter <jonathanh@nvidia.com>,
linux-sound@vger.kernel.org, devicetree@vger.kernel.org,
linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] ASoC: dt-bindings: sound: nvidia,tegra30-ahub: Convert to DT schema
Date: Tue, 30 Jun 2026 11:32:30 -0500 [thread overview]
Message-ID: <20260630163230.GA3903861-robh@kernel.org> (raw)
In-Reply-To: <20260625-nvidia-ahub-v2-1-eb041c30f1f8@gmail.com>
On Thu, Jun 25, 2026 at 03:28:48PM +0000, Charan Pedumuru wrote:
> Convert NVIDIA Tegra Audio Hub (AHUB) binding to DT schema.
>
> Per-SoC differences in reg, reset-names, and dma-names are enforced
> via allOf conditionals.
>
> Add patternProperties for i2s child nodes referencing
> nvidia,tegra30-i2s.yaml, reflecting actual DTSI usage where i2s
> controllers are placed directly under ahub. nvidia,ahub-cif-ids is
> not redeclared here as it is defined in the child i2s schema.
>
> Signed-off-by: Charan Pedumuru <charan.pedumuru@gmail.com>
> ---
[...]
> 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..1c3fc7a97465
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.yaml
> @@ -0,0 +1,297 @@
> +# 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 Tegra Audio Hub (AHUB)
> +
> +maintainers:
> + - Jonathan Hunter <jonathanh@nvidia.com>
> +
> +description:
> + The NVIDIA Tegra AHUB (Audio Hub) is an audio interconnect block used to
> + route data between various audio clients such as I2S, DAM, SPDIF, and
> + APBIF. It exposes multiple register regions and supports different
> + configurations depending on the Tegra SoC generation. The AHUB also
> + provides a configlink bus for child audio components, which use CIF
> + (Client Interface) IDs to identify their data paths. The number of DMA
> + channels, reset lines, and additional modules varies across Tegra30,
> + Tegra114, and Tegra124 platforms.
> +
> +properties:
> + compatible:
> + oneOf:
> + - enum:
> + - nvidia,tegra114-ahub
> + - nvidia,tegra124-ahub
> + - nvidia,tegra30-ahub
> + - items:
> + - const: nvidia,tegra132-ahub
> + - const: nvidia,tegra124-ahub
> +
> + reg:
> + minItems: 2
> + maxItems: 3
Somewhere what each entry is needs to be defined.
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: Clock for the D_AUDIO domain
> + - description: Clock for the APBIF interface
> +
> + clock-names:
> + items:
> + - const: d_audio
> + - const: apbif
> +
> + resets:
> + minItems: 11
> + maxItems: 21
> +
> + reset-names:
> + minItems: 11
> + maxItems: 21
> +
> + dmas:
> + minItems: 8
> + maxItems: 20
> +
> + dma-names:
> + minItems: 8
> + items:
> + - const: rx0
> + - const: tx0
> + - const: rx1
> + - const: tx1
> + - const: rx2
> + - const: tx2
> + - const: rx3
> + - const: tx3
> + - const: rx4
> + - const: tx4
> + - const: rx5
> + - const: tx5
> + - const: rx6
> + - const: tx6
> + - const: rx7
> + - const: tx7
> + - const: rx8
> + - const: tx8
> + - const: rx9
> + - const: tx9
> +
> + "#address-cells":
> + enum: [1, 2]
> +
> + "#size-cells":
> + enum: [1, 2]
> +
> + ranges: true
> +
> +patternProperties:
> + "^i2s@[0-9a-f]+$":
> + $ref: /schemas/sound/nvidia,tegra30-i2s.yaml#
> + unevaluatedProperties: false
> +
> +allOf:
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: nvidia,tegra30-ahub
> + then:
> + properties:
> + reg:
> + minItems: 2
Drop. 2 is already the min.
> + maxItems: 2
> +
> + resets:
> + minItems: 11
Drop. 11 is already the min at the top-level.
Same issue elsewhere.
> + maxItems: 11
> +
> + reset-names:
> + items:
> + - const: d_audio
> + - const: apbif
> + - const: i2s0
> + - const: i2s1
> + - const: i2s2
> + - const: i2s3
> + - const: i2s4
> + - const: dam0
> + - const: dam1
> + - const: dam2
> + - const: spdif
> +
> + dmas:
> + minItems: 8
> + maxItems: 8
> +
> + dma-names:
> + minItems: 8
> + maxItems: 8
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 1
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: nvidia,tegra114-ahub
> + then:
> + properties:
> + reg:
> + minItems: 3
> + maxItems: 3
3 is already the max.
> +
> + resets:
> + minItems: 13
> + maxItems: 13
> +
> + reset-names:
> + items:
> + - const: d_audio
> + - const: apbif
> + - const: i2s0
> + - const: i2s1
> + - const: i2s2
> + - const: i2s3
> + - const: i2s4
> + - const: dam0
> + - const: dam1
> + - const: dam2
> + - const: spdif
> + - const: amx
> + - const: adx
> +
> + dmas:
> + minItems: 20
> + maxItems: 20
> +
> + dma-names:
> + minItems: 20
> + maxItems: 20
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 1
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: nvidia,tegra124-ahub
> + then:
> + properties:
> + reg:
> + minItems: 3
> + maxItems: 3
> +
> + resets:
> + minItems: 21
> + maxItems: 21
> +
> + reset-names:
> + items:
> + - const: d_audio
> + - const: apbif
> + - const: i2s0
> + - const: i2s1
> + - const: i2s2
> + - const: i2s3
> + - const: i2s4
> + - const: dam0
> + - const: dam1
> + - const: dam2
> + - const: spdif
> + - const: amx
> + - const: amx1
> + - const: adx
> + - const: adx1
> + - const: afc0
> + - const: afc1
> + - const: afc2
> + - const: afc3
> + - const: afc4
> + - const: afc5
> +
> + dmas:
> + minItems: 20
> + maxItems: 20
> +
> + dma-names:
> + minItems: 20
> + maxItems: 20
> +
> + "#address-cells":
> + const: 2
> +
> + "#size-cells":
> + const: 2
> +
> +required:
> + - reg
> + - compatible
> + - interrupts
> + - clocks
> + - clock-names
> + - resets
> + - reset-names
> + - dmas
> + - dma-names
> + - "#address-cells"
> + - "#size-cells"
> + - ranges
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/clock/tegra30-car.h>
blank line
> + ahub@70080000 {
prev parent reply other threads:[~2026-06-30 16:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-25 15:28 [PATCH v2] ASoC: dt-bindings: sound: nvidia,tegra30-ahub: Convert to DT schema Charan Pedumuru
2026-06-30 16:32 ` Rob Herring [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260630163230.GA3903861-robh@kernel.org \
--to=robh@kernel.org \
--cc=broonie@kernel.org \
--cc=charan.pedumuru@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jonathanh@nvidia.com \
--cc=krzk+dt@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=thierry.reding@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.