# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/sound/qcom,lpass-cpu.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Technologies Inc. LPASS CPU dai driver maintainers: - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> - Rohit kumar <quic_rohkumar@quicinc.com> description: | Qualcomm Technologies Inc. SOC Low-Power Audio SubSystem (LPASS) that consist of MI2S interface for audio data transfer on external codecs. LPASS cpu driver is a module to configure Low-Power Audio Interface(LPAIF) core registers across different IP versions. properties: compatible: enum: - qcom,lpass-cpu - qcom,apq8016-lpass-cpu - qcom,sc7180-lpass-cpu - qcom,sc7280-lpass-cpu reg: minItems: 1 maxItems: 6 description: LPAIF core registers reg-names: minItems: 1 maxItems: 6 clocks: minItems: 3 maxItems: 10 clock-names: minItems: 1 maxItems: 10 interrupts: minItems: 1 maxItems: 4 description: LPAIF DMA buffer interrupt interrupt-names: minItems: 1 maxItems: 4 qcom,adsp: $ref: /schemas/types.yaml#/definitions/phandle description: Phandle for the audio DSP node iommus: minItems: 2 maxItems: 3 description: Phandle to apps_smmu node with sid mask power-domains: maxItems: 1 power-domain-names: maxItems: 1 required-opps: maxItems: 1 '#sound-dai-cells': const: 1 '#address-cells': const: 1 '#size-cells': const: 0 patternProperties: "^dai-link@[0-9a-f]+$": type: object description: | LPASS CPU dai node for each I2S device or Soundwire device. Bindings of each node depends on the specific driver providing the functionality and properties. properties: reg: maxItems: 1 description: Must be one of the DAI ID qcom,playback-sd-lines: $ref: /schemas/types.yaml#/definitions/uint32-array description: list of MI2S data lines for playback qcom,capture-sd-lines: $ref: /schemas/types.yaml#/definitions/uint32-array description: list of MI2S data lines for capture required: - reg additionalProperties: false required: - compatible - reg - reg-names - clocks - clock-names - interrupts - interrupt-names - '#sound-dai-cells' unevaluatedProperties: false allOf: - $ref: dai-common.yaml# - if: properties: compatible: contains: const: qcom,lpass-cpu then: properties: clocks: maxItems: 3 clock-names: items: - const: ahbix-clk - const: mi2s-osr-clk - const: mi2s-bit-clk - if: properties: compatible: contains: const: qcom,apq8016-lpass-cpu then: properties: clocks: minItems: 7 maxItems: 7 clock-names: items: - const: ahbix-clk - const: mi2s-bit-clk0 - const: mi2s-bit-clk1 - const: mi2s-bit-clk2 - const: mi2s-bit-clk3 - const: pcnoc-mport-clk - const: pcnoc-sway-clk - if: properties: compatible: contains: const: qcom,sc7180-lpass-cpu then: properties: clocks: minItems: 6 maxItems: 6 clock-names: items: - const: pcnoc-sway-clk - const: audio-core - const: mclk0 - const: pcnoc-mport-clk - const: mi2s-bit-clk0 - const: mi2s-bit-clk1 reg: minItems: 2 maxItems: 2 reg-names: items: - const: lpass-hdmiif - const: lpass-lpaif interrupts: minItems: 2 maxItems: 2 interrupt-names: items: - const: lpass-irq-lpaif - const: lpass-irq-hdmi required: - iommus - power-domains - if: properties: compatible: contains: const: qcom,sc7280-lpass-cpu then: properties: clocks: minItems: 10 maxItems: 10 clock-names: items: - const: aon_cc_audio_hm_h - const: audio_cc_ext_mclk0 - const: core_cc_sysnoc_mport_core - const: core_cc_ext_if0_ibit - const: core_cc_ext_if1_ibit - const: audio_cc_codec_mem - const: audio_cc_codec_mem0 - const: audio_cc_codec_mem1 - const: audio_cc_codec_mem2 - const: aon_cc_va_mem0 reg: minItems: 6 maxItems: 6 reg-names: items: - const: lpass-hdmiif - const: lpass-lpaif - const: lpass-rxtx-cdc-dma-lpm - const: lpass-rxtx-lpaif - const: lpass-va-lpaif - const: lpass-va-cdc-dma-lpm interrupts: minItems: 4 maxItems: 4 interrupt-names: items: - const: lpass-irq-lpaif - const: lpass-irq-hdmi - const: lpass-irq-vaif - const: lpass-irq-rxtxif power-domain-names: items: - const: lcx required: - iommus - power-domains examples: - | #include <dt-bindings/sound/sc7180-lpass.h> soc { #address-cells = <2>; #size-cells = <2>; lpass@62d80000 { compatible = "qcom,sc7180-lpass-cpu"; reg = <0 0x62d87000 0 0x68000>, <0 0x62f00000 0 0x29000>; reg-names = "lpass-hdmiif", "lpass-lpaif"; iommus = <&apps_smmu 0x1020 0>, <&apps_smmu 0x1032 0>; power-domains = <&lpass_hm 0>; clocks = <&gcc 131>, <&lpasscorecc 6>, <&lpasscorecc 7>, <&lpasscorecc 10>, <&lpasscorecc 8>, <&lpasscorecc 9>; clock-names = "pcnoc-sway-clk", "audio-core", "mclk0", "pcnoc-mport-clk", "mi2s-bit-clk0", "mi2s-bit-clk1"; interrupts = <0 160 1>, <0 268 1>; interrupt-names = "lpass-irq-lpaif", "lpass-irq-hdmi"; #sound-dai-cells = <1>; #address-cells = <1>; #size-cells = <0>; /* Optional to set different MI2S SD lines */ dai-link@0 { reg = <MI2S_PRIMARY>; qcom,playback-sd-lines = <1>; qcom,capture-sd-lines = <0>; }; }; }; ...