291 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			291 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # 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 bindings
 | |
| 
 | |
| maintainers:
 | |
|   - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 | |
|   - Rohit kumar <rohitkr@codeaurora.org>
 | |
| 
 | |
| 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>;
 | |
|             };
 | |
|         };
 | |
|     };    
 | |
| 
 | |
| ...
 |