# 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 - Jon Hunter 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). properties: compatible: oneOf: - const: nvidia,tegra30-ahub - const: nvidia,tegra114-ahub - const: nvidia,tegra124-ahub - items: - const: nvidia,tegra132-ahub - const: 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 required: - compatible - reg - interrupts - clocks - clock-names - resets - reset-names - ranges - dmas - dma-names - "#address-cells" - "#size-cells" allOf: - if: properties: compatible: const: nvidia,tegra30-ahub then: properties: reg: items: - description: APBIF registers - description: AHUB/AUDIO registers resets: 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: maxItems: 8 dma-names: items: - const: rx0 - const: tx0 - const: rx1 - const: tx1 - const: rx2 - const: tx2 - const: rx3 - const: tx3 - if: properties: compatible: const: nvidia,tegra114-ahub then: properties: reg: items: - description: APBIF registers - description: AHUB/AUDIO registers - description: APBIF2 registers 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 dma-names: 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 - if: properties: compatible: contains: const: nvidia,tegra124-ahub then: properties: reg: items: - description: APBIF registers - description: AHUB/AUDIO registers - description: APBIF2 registers resets: minItems: 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 dma-names: 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 additionalProperties: false examples: - | #include #include ahub@70080000 { compatible = "nvidia,tegra30-ahub"; reg = <0x70080000 0x200>, <0x70080200 0x100>; interrupts = ; clocks = <&tegra_car TEGRA30_CLK_D_AUDIO>, <&tegra_car TEGRA30_CLK_APBIF>; 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>; };