1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2c66ec88fSEmmanuel Vadot%YAML 1.2 3c66ec88fSEmmanuel Vadot--- 4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/sound/nvidia,tegra210-ahub.yaml# 5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6c66ec88fSEmmanuel Vadot 77ef62cebSEmmanuel Vadottitle: Tegra210 AHUB 8c66ec88fSEmmanuel Vadot 9c66ec88fSEmmanuel Vadotdescription: | 10c66ec88fSEmmanuel Vadot The Audio Hub (AHUB) comprises a collection of hardware accelerators 11c66ec88fSEmmanuel Vadot for audio pre-processing, post-processing and a programmable full 12c66ec88fSEmmanuel Vadot crossbar for routing audio data across these accelerators. It has 13c66ec88fSEmmanuel Vadot external interfaces such as I2S, DMIC, DSPK. It interfaces with ADMA 14c66ec88fSEmmanuel Vadot engine through ADMAIF. 15c66ec88fSEmmanuel Vadot 16c66ec88fSEmmanuel Vadotmaintainers: 17c66ec88fSEmmanuel Vadot - Jon Hunter <jonathanh@nvidia.com> 18c66ec88fSEmmanuel Vadot - Sameer Pujar <spujar@nvidia.com> 19c66ec88fSEmmanuel Vadot 20c66ec88fSEmmanuel Vadotproperties: 21c66ec88fSEmmanuel Vadot $nodename: 22c66ec88fSEmmanuel Vadot pattern: "^ahub@[0-9a-f]*$" 23c66ec88fSEmmanuel Vadot 24c66ec88fSEmmanuel Vadot compatible: 25c66ec88fSEmmanuel Vadot oneOf: 26c66ec88fSEmmanuel Vadot - enum: 27c66ec88fSEmmanuel Vadot - nvidia,tegra210-ahub 28c66ec88fSEmmanuel Vadot - nvidia,tegra186-ahub 29c9ccf3a3SEmmanuel Vadot - nvidia,tegra234-ahub 30c66ec88fSEmmanuel Vadot - items: 31c66ec88fSEmmanuel Vadot - const: nvidia,tegra194-ahub 32c66ec88fSEmmanuel Vadot - const: nvidia,tegra186-ahub 33c66ec88fSEmmanuel Vadot 34c66ec88fSEmmanuel Vadot reg: 35c66ec88fSEmmanuel Vadot maxItems: 1 36c66ec88fSEmmanuel Vadot 37c66ec88fSEmmanuel Vadot clocks: 38c66ec88fSEmmanuel Vadot maxItems: 1 39c66ec88fSEmmanuel Vadot 40c66ec88fSEmmanuel Vadot clock-names: 41c66ec88fSEmmanuel Vadot const: ahub 42c66ec88fSEmmanuel Vadot 43c66ec88fSEmmanuel Vadot assigned-clocks: 44c66ec88fSEmmanuel Vadot maxItems: 1 45c66ec88fSEmmanuel Vadot 46c66ec88fSEmmanuel Vadot assigned-clock-parents: 47c66ec88fSEmmanuel Vadot maxItems: 1 48c66ec88fSEmmanuel Vadot 49c66ec88fSEmmanuel Vadot assigned-clock-rates: 50c66ec88fSEmmanuel Vadot maxItems: 1 51c66ec88fSEmmanuel Vadot 52c66ec88fSEmmanuel Vadot "#address-cells": 53*cb7aa33aSEmmanuel Vadot enum: [ 1, 2 ] 54c66ec88fSEmmanuel Vadot 55c66ec88fSEmmanuel Vadot "#size-cells": 56*cb7aa33aSEmmanuel Vadot enum: [ 1, 2 ] 57c66ec88fSEmmanuel Vadot 58c66ec88fSEmmanuel Vadot ranges: true 59c66ec88fSEmmanuel Vadot 605def4c47SEmmanuel Vadot ports: 612eb4d8dcSEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/ports 625def4c47SEmmanuel Vadot description: | 635def4c47SEmmanuel Vadot Contains list of ACIF (Audio CIF) port nodes for AHUB (Audio Hub). 645def4c47SEmmanuel Vadot These are connected to ACIF interfaces of AHUB clients. Thus the 655def4c47SEmmanuel Vadot number of port nodes depend on the number of clients that AHUB may 665def4c47SEmmanuel Vadot have depending on the SoC revision. 675def4c47SEmmanuel Vadot 682eb4d8dcSEmmanuel Vadot patternProperties: 692eb4d8dcSEmmanuel Vadot '^port@[0-9]': 702eb4d8dcSEmmanuel Vadot $ref: audio-graph-port.yaml# 712eb4d8dcSEmmanuel Vadot unevaluatedProperties: false 722eb4d8dcSEmmanuel Vadot 732eb4d8dcSEmmanuel VadotpatternProperties: 742eb4d8dcSEmmanuel Vadot '^i2s@[0-9a-f]+$': 752eb4d8dcSEmmanuel Vadot type: object 762eb4d8dcSEmmanuel Vadot 772eb4d8dcSEmmanuel Vadot '^dmic@[0-9a-f]+$': 782eb4d8dcSEmmanuel Vadot type: object 792eb4d8dcSEmmanuel Vadot $ref: nvidia,tegra210-dmic.yaml# 802eb4d8dcSEmmanuel Vadot 812eb4d8dcSEmmanuel Vadot '^admaif@[0-9a-f]+$': 822eb4d8dcSEmmanuel Vadot type: object 832eb4d8dcSEmmanuel Vadot $ref: nvidia,tegra210-admaif.yaml# 842eb4d8dcSEmmanuel Vadot 852eb4d8dcSEmmanuel Vadot '^dspk@[0-9a-f]+$': 862eb4d8dcSEmmanuel Vadot type: object 872eb4d8dcSEmmanuel Vadot $ref: nvidia,tegra186-dspk.yaml# 882eb4d8dcSEmmanuel Vadot 898cc087a1SEmmanuel Vadot '^mvc@[0-9a-f]+$': 908cc087a1SEmmanuel Vadot type: object 918cc087a1SEmmanuel Vadot $ref: nvidia,tegra210-mvc.yaml# 928cc087a1SEmmanuel Vadot 938cc087a1SEmmanuel Vadot '^sfc@[0-9a-f]+$': 948cc087a1SEmmanuel Vadot type: object 958cc087a1SEmmanuel Vadot $ref: nvidia,tegra210-sfc.yaml# 968cc087a1SEmmanuel Vadot 978cc087a1SEmmanuel Vadot '^amx@[0-9a-f]+$': 988cc087a1SEmmanuel Vadot type: object 998cc087a1SEmmanuel Vadot $ref: nvidia,tegra210-amx.yaml# 1008cc087a1SEmmanuel Vadot 1018cc087a1SEmmanuel Vadot '^adx@[0-9a-f]+$': 1028cc087a1SEmmanuel Vadot type: object 1038cc087a1SEmmanuel Vadot $ref: nvidia,tegra210-adx.yaml# 1048cc087a1SEmmanuel Vadot 1058cc087a1SEmmanuel Vadot '^amixer@[0-9a-f]+$': 1068cc087a1SEmmanuel Vadot type: object 1078cc087a1SEmmanuel Vadot $ref: nvidia,tegra210-mixer.yaml# 1088cc087a1SEmmanuel Vadot 109d5b0e70fSEmmanuel Vadot '^asrc@[0-9a-f]+$': 110d5b0e70fSEmmanuel Vadot type: object 111d5b0e70fSEmmanuel Vadot $ref: nvidia,tegra186-asrc.yaml# 112d5b0e70fSEmmanuel Vadot 113b97ee269SEmmanuel Vadot '^processing-engine@[0-9a-f]+$': 114b97ee269SEmmanuel Vadot type: object 115b97ee269SEmmanuel Vadot $ref: nvidia,tegra210-ope.yaml# 116b97ee269SEmmanuel Vadot 117c66ec88fSEmmanuel Vadotrequired: 118c66ec88fSEmmanuel Vadot - compatible 119c66ec88fSEmmanuel Vadot - reg 120c66ec88fSEmmanuel Vadot - clocks 121c66ec88fSEmmanuel Vadot - clock-names 122c66ec88fSEmmanuel Vadot - assigned-clocks 123c66ec88fSEmmanuel Vadot - assigned-clock-parents 124c66ec88fSEmmanuel Vadot - "#address-cells" 125c66ec88fSEmmanuel Vadot - "#size-cells" 126c66ec88fSEmmanuel Vadot - ranges 127c66ec88fSEmmanuel Vadot 1282eb4d8dcSEmmanuel VadotadditionalProperties: false 1296be33864SEmmanuel Vadot 130c66ec88fSEmmanuel Vadotexamples: 131c66ec88fSEmmanuel Vadot - | 132c66ec88fSEmmanuel Vadot #include<dt-bindings/clock/tegra210-car.h> 133c66ec88fSEmmanuel Vadot 134c66ec88fSEmmanuel Vadot ahub@702d0800 { 135c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra210-ahub"; 136c66ec88fSEmmanuel Vadot reg = <0x702d0800 0x800>; 137c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>; 138c66ec88fSEmmanuel Vadot clock-names = "ahub"; 139c66ec88fSEmmanuel Vadot assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>; 140c66ec88fSEmmanuel Vadot assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>; 141c66ec88fSEmmanuel Vadot #address-cells = <1>; 142c66ec88fSEmmanuel Vadot #size-cells = <1>; 143c66ec88fSEmmanuel Vadot ranges = <0x702d0000 0x702d0000 0x0000e400>; 144c66ec88fSEmmanuel Vadot 145c66ec88fSEmmanuel Vadot // All AHUB child nodes below 146c66ec88fSEmmanuel Vadot admaif@702d0000 { 147c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra210-admaif"; 148c66ec88fSEmmanuel Vadot reg = <0x702d0000 0x800>; 149c66ec88fSEmmanuel Vadot dmas = <&adma 1>, <&adma 1>, 150c66ec88fSEmmanuel Vadot <&adma 2>, <&adma 2>, 151c66ec88fSEmmanuel Vadot <&adma 3>, <&adma 3>, 152c66ec88fSEmmanuel Vadot <&adma 4>, <&adma 4>, 153c66ec88fSEmmanuel Vadot <&adma 5>, <&adma 5>, 154c66ec88fSEmmanuel Vadot <&adma 6>, <&adma 6>, 155c66ec88fSEmmanuel Vadot <&adma 7>, <&adma 7>, 156c66ec88fSEmmanuel Vadot <&adma 8>, <&adma 8>, 157c66ec88fSEmmanuel Vadot <&adma 9>, <&adma 9>, 158c66ec88fSEmmanuel Vadot <&adma 10>, <&adma 10>; 159c66ec88fSEmmanuel Vadot dma-names = "rx1", "tx1", 160c66ec88fSEmmanuel Vadot "rx2", "tx2", 161c66ec88fSEmmanuel Vadot "rx3", "tx3", 162c66ec88fSEmmanuel Vadot "rx4", "tx4", 163c66ec88fSEmmanuel Vadot "rx5", "tx5", 164c66ec88fSEmmanuel Vadot "rx6", "tx6", 165c66ec88fSEmmanuel Vadot "rx7", "tx7", 166c66ec88fSEmmanuel Vadot "rx8", "tx8", 167c66ec88fSEmmanuel Vadot "rx9", "tx9", 168c66ec88fSEmmanuel Vadot "rx10", "tx10"; 169c66ec88fSEmmanuel Vadot }; 170c66ec88fSEmmanuel Vadot 171c66ec88fSEmmanuel Vadot i2s@702d1000 { 172c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra210-i2s"; 173c66ec88fSEmmanuel Vadot reg = <0x702d1000 0x100>; 174c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA210_CLK_I2S0>; 175c66ec88fSEmmanuel Vadot clock-names = "i2s"; 176c66ec88fSEmmanuel Vadot assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>; 177c66ec88fSEmmanuel Vadot assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>; 178c66ec88fSEmmanuel Vadot assigned-clock-rates = <1536000>; 179c66ec88fSEmmanuel Vadot sound-name-prefix = "I2S1"; 180c66ec88fSEmmanuel Vadot }; 181c66ec88fSEmmanuel Vadot 182c66ec88fSEmmanuel Vadot dmic@702d4000 { 183c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra210-dmic"; 184c66ec88fSEmmanuel Vadot reg = <0x702d4000 0x100>; 185c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA210_CLK_DMIC1>; 186c66ec88fSEmmanuel Vadot clock-names = "dmic"; 187c66ec88fSEmmanuel Vadot assigned-clocks = <&tegra_car TEGRA210_CLK_DMIC1>; 188c66ec88fSEmmanuel Vadot assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>; 189c66ec88fSEmmanuel Vadot assigned-clock-rates = <3072000>; 190c66ec88fSEmmanuel Vadot sound-name-prefix = "DMIC1"; 191c66ec88fSEmmanuel Vadot }; 192c66ec88fSEmmanuel Vadot 193c66ec88fSEmmanuel Vadot // More child nodes to follow 194c66ec88fSEmmanuel Vadot }; 195c66ec88fSEmmanuel Vadot 196c66ec88fSEmmanuel Vadot... 197