162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci# Copyright (C) 2020 Texas Instruments Incorporated
362306a36Sopenharmony_ci# Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
462306a36Sopenharmony_ci%YAML 1.2
562306a36Sopenharmony_ci---
662306a36Sopenharmony_ci$id: http://devicetree.org/schemas/sound/ti,j721e-cpb-audio.yaml#
762306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
862306a36Sopenharmony_ci
962306a36Sopenharmony_cititle: Texas Instruments J721e Common Processor Board Audio Support
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cimaintainers:
1262306a36Sopenharmony_ci  - Peter Ujfalusi <peter.ujfalusi@gmail.com>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cidescription: |
1562306a36Sopenharmony_ci  The audio support on the board is using pcm3168a codec connected to McASP10
1662306a36Sopenharmony_ci  serializers in parallel setup.
1762306a36Sopenharmony_ci  The pcm3168a SCKI clock is sourced from j721e AUDIO_REFCLK2 pin.
1862306a36Sopenharmony_ci  In order to support 48KHz and 44.1KHz family of sampling rates the parent
1962306a36Sopenharmony_ci  clock for AUDIO_REFCLK2 needs to be changed between PLL4 (for 48KHz) and
2062306a36Sopenharmony_ci  PLL15 (for 44.1KHz). The same PLLs are used for McASP10's AUXCLK clock via
2162306a36Sopenharmony_ci  different HSDIVIDER.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  Clocking setup for j721e:
2462306a36Sopenharmony_ci    48KHz family:
2562306a36Sopenharmony_ci    PLL4 ---> PLL4_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
2662306a36Sopenharmony_ci          |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci    44.1KHz family:
2962306a36Sopenharmony_ci    PLL15 ---> PLL15_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
3062306a36Sopenharmony_ci           |-> PLL15_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  Clocking setup for j7200:
3362306a36Sopenharmony_ci    48KHz family:
3462306a36Sopenharmony_ci    PLL4 ---> PLL4_HSDIV0 ---> MCASP0_AUXCLK ---> McASP0.auxclk
3562306a36Sopenharmony_ci          |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciproperties:
3862306a36Sopenharmony_ci  compatible:
3962306a36Sopenharmony_ci    enum:
4062306a36Sopenharmony_ci      - ti,j721e-cpb-audio
4162306a36Sopenharmony_ci      - ti,j7200-cpb-audio
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  model:
4462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string
4562306a36Sopenharmony_ci    description: User specified audio sound card name
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  ti,cpb-mcasp:
4862306a36Sopenharmony_ci    description: phandle to McASP used on CPB
4962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  ti,cpb-codec:
5262306a36Sopenharmony_ci    description: phandle to the pcm3168a codec used on the CPB
5362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  clocks:
5662306a36Sopenharmony_ci    minItems: 4
5762306a36Sopenharmony_ci    maxItems: 6
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  clock-names:
6062306a36Sopenharmony_ci    minItems: 4
6162306a36Sopenharmony_ci    maxItems: 6
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cirequired:
6462306a36Sopenharmony_ci  - compatible
6562306a36Sopenharmony_ci  - model
6662306a36Sopenharmony_ci  - ti,cpb-mcasp
6762306a36Sopenharmony_ci  - ti,cpb-codec
6862306a36Sopenharmony_ci  - clocks
6962306a36Sopenharmony_ci  - clock-names
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciadditionalProperties: false
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciallOf:
7462306a36Sopenharmony_ci  - if:
7562306a36Sopenharmony_ci      properties:
7662306a36Sopenharmony_ci        compatible:
7762306a36Sopenharmony_ci          contains:
7862306a36Sopenharmony_ci            const: ti,j721e-cpb-audio
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci    then:
8162306a36Sopenharmony_ci      properties:
8262306a36Sopenharmony_ci        clocks:
8362306a36Sopenharmony_ci          items:
8462306a36Sopenharmony_ci            - description: AUXCLK clock for McASP used by CPB audio
8562306a36Sopenharmony_ci            - description: Parent for CPB_McASP auxclk (for 48KHz)
8662306a36Sopenharmony_ci            - description: Parent for CPB_McASP auxclk (for 44.1KHz)
8762306a36Sopenharmony_ci            - description: SCKI clock for the pcm3168a codec on CPB
8862306a36Sopenharmony_ci            - description: Parent for CPB_SCKI clock (for 48KHz)
8962306a36Sopenharmony_ci            - description: Parent for CPB_SCKI clock (for 44.1KHz)
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci        clock-names:
9262306a36Sopenharmony_ci          items:
9362306a36Sopenharmony_ci            - const: cpb-mcasp-auxclk
9462306a36Sopenharmony_ci            - const: cpb-mcasp-auxclk-48000
9562306a36Sopenharmony_ci            - const: cpb-mcasp-auxclk-44100
9662306a36Sopenharmony_ci            - const: cpb-codec-scki
9762306a36Sopenharmony_ci            - const: cpb-codec-scki-48000
9862306a36Sopenharmony_ci            - const: cpb-codec-scki-44100
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci  - if:
10162306a36Sopenharmony_ci      properties:
10262306a36Sopenharmony_ci        compatible:
10362306a36Sopenharmony_ci          contains:
10462306a36Sopenharmony_ci            const: ti,j7200-cpb-audio
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci    then:
10762306a36Sopenharmony_ci      properties:
10862306a36Sopenharmony_ci        clocks:
10962306a36Sopenharmony_ci          items:
11062306a36Sopenharmony_ci            - description: AUXCLK clock for McASP used by CPB audio
11162306a36Sopenharmony_ci            - description: Parent for CPB_McASP auxclk (for 48KHz)
11262306a36Sopenharmony_ci            - description: SCKI clock for the pcm3168a codec on CPB
11362306a36Sopenharmony_ci            - description: Parent for CPB_SCKI clock (for 48KHz)
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci        clock-names:
11662306a36Sopenharmony_ci          items:
11762306a36Sopenharmony_ci            - const: cpb-mcasp-auxclk
11862306a36Sopenharmony_ci            - const: cpb-mcasp-auxclk-48000
11962306a36Sopenharmony_ci            - const: cpb-codec-scki
12062306a36Sopenharmony_ci            - const: cpb-codec-scki-48000
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciexamples:
12362306a36Sopenharmony_ci  - |+
12462306a36Sopenharmony_ci    sound {
12562306a36Sopenharmony_ci        compatible = "ti,j721e-cpb-audio";
12662306a36Sopenharmony_ci        model = "j721e-cpb";
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci        ti,cpb-mcasp = <&mcasp10>;
12962306a36Sopenharmony_ci        ti,cpb-codec = <&pcm3168a_1>;
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci        clocks = <&k3_clks 184 1>,
13262306a36Sopenharmony_ci                 <&k3_clks 184 2>, <&k3_clks 184 4>,
13362306a36Sopenharmony_ci                 <&k3_clks 157 371>,
13462306a36Sopenharmony_ci                 <&k3_clks 157 400>, <&k3_clks 157 401>;
13562306a36Sopenharmony_ci        clock-names = "cpb-mcasp-auxclk",
13662306a36Sopenharmony_ci                      "cpb-mcasp-auxclk-48000", "cpb-mcasp-auxclk-44100",
13762306a36Sopenharmony_ci                      "cpb-codec-scki",
13862306a36Sopenharmony_ci                      "cpb-codec-scki-48000", "cpb-codec-scki-44100";
13962306a36Sopenharmony_ci    };
140