# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,lcc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm LPASS Clock & Reset Controller

maintainers:
  - Bjorn Andersson <andersson@kernel.org>

properties:
  compatible:
    enum:
      - qcom,lcc-apq8064
      - qcom,lcc-ipq8064
      - qcom,lcc-mdm9615
      - qcom,lcc-msm8960

  clocks:
    maxItems: 8

  clock-names:
    maxItems: 8

  '#clock-cells':
    const: 1

  '#reset-cells':
    const: 1

  reg:
    maxItems: 1

required:
  - compatible
  - reg
  - '#clock-cells'
  - '#reset-cells'

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,lcc-apq8064
              - qcom,lcc-msm8960
    then:
      properties:
        clocks:
          items:
            - description: Board PXO source
            - description: PLL 4 Vote clock
            - description: MI2S codec clock
            - description: Mic I2S codec clock
            - description: Mic I2S spare clock
            - description: Speaker I2S codec clock
            - description: Speaker I2S spare clock
            - description: PCM codec clock

        clock-names:
          items:
            - const: pxo
            - const: pll4_vote
            - const: mi2s_codec_clk
            - const: codec_i2s_mic_codec_clk
            - const: spare_i2s_mic_codec_clk
            - const: codec_i2s_spkr_codec_clk
            - const: spare_i2s_spkr_codec_clk
            - const: pcm_codec_clk

      required:
        - clocks
        - clock-names

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,lcc-mdm9615
    then:
      properties:
        clocks:
          items:
            - description: Board CXO source
            - description: PLL 4 Vote clock
            - description: MI2S codec clock
            - description: Mic I2S codec clock
            - description: Mic I2S spare clock
            - description: Speaker I2S codec clock
            - description: Speaker I2S spare clock
            - description: PCM codec clock

        clock-names:
          items:
            - const: cxo
            - const: pll4_vote
            - const: mi2s_codec_clk
            - const: codec_i2s_mic_codec_clk
            - const: spare_i2s_mic_codec_clk
            - const: codec_i2s_spkr_codec_clk
            - const: spare_i2s_spkr_codec_clk
            - const: pcm_codec_clk

      required:
        - clocks
        - clock-names

examples:
  - |
    clock-controller@28000000 {
        compatible = "qcom,lcc-ipq8064";
        reg = <0x28000000 0x1000>;
        #clock-cells = <1>;
        #reset-cells = <1>;
    };