1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/ti,j721e-cpb-audio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments J721e Common Processor Board Audio Support
8
9maintainers:
10  - Peter Ujfalusi <peter.ujfalusi@ti.com>
11
12description: |
13  The audio support on the board is using pcm3168a codec connected to McASP10
14  serializers in parallel setup.
15  The pcm3168a SCKI clock is sourced from j721e AUDIO_REFCLK2 pin.
16  In order to support 48KHz and 44.1KHz family of sampling rates the parent
17  clock for AUDIO_REFCLK2 needs to be changed between PLL4 (for 48KHz) and
18  PLL15 (for 44.1KHz). The same PLLs are used for McASP10's AUXCLK clock via
19  different HSDIVIDER.
20
21  Clocking setup for j721e:
22    48KHz family:
23    PLL4 ---> PLL4_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
24          |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
25
26    44.1KHz family:
27    PLL15 ---> PLL15_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
28           |-> PLL15_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
29
30  Clocking setup for j7200:
31    48KHz family:
32    PLL4 ---> PLL4_HSDIV0 ---> MCASP0_AUXCLK ---> McASP0.auxclk
33          |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
34
35properties:
36  compatible:
37    enum:
38      - ti,j721e-cpb-audio
39      - ti,j7200-cpb-audio
40
41  model:
42    $ref: /schemas/types.yaml#/definitions/string
43    description: User specified audio sound card name
44
45  ti,cpb-mcasp:
46    description: phandle to McASP used on CPB
47    $ref: /schemas/types.yaml#/definitions/phandle
48
49  ti,cpb-codec:
50    description: phandle to the pcm3168a codec used on the CPB
51    $ref: /schemas/types.yaml#/definitions/phandle
52
53  clocks:
54    minItems: 4
55    maxItems: 6
56
57  clock-names:
58    minItems: 4
59    maxItems: 6
60
61required:
62  - compatible
63  - model
64  - ti,cpb-mcasp
65  - ti,cpb-codec
66  - clocks
67  - clock-names
68
69additionalProperties: false
70
71allOf:
72  - if:
73      properties:
74        compatible:
75          contains:
76            const: ti,j721e-cpb-audio
77
78    then:
79      properties:
80        clocks:
81          minItems: 6
82          items:
83            - description: AUXCLK clock for McASP used by CPB audio
84            - description: Parent for CPB_McASP auxclk (for 48KHz)
85            - description: Parent for CPB_McASP auxclk (for 44.1KHz)
86            - description: SCKI clock for the pcm3168a codec on CPB
87            - description: Parent for CPB_SCKI clock (for 48KHz)
88            - description: Parent for CPB_SCKI clock (for 44.1KHz)
89
90        clock-names:
91          items:
92            - const: cpb-mcasp-auxclk
93            - const: cpb-mcasp-auxclk-48000
94            - const: cpb-mcasp-auxclk-44100
95            - const: cpb-codec-scki
96            - const: cpb-codec-scki-48000
97            - const: cpb-codec-scki-44100
98
99  - if:
100      properties:
101        compatible:
102          contains:
103            const: ti,j7200-cpb-audio
104
105    then:
106      properties:
107        clocks:
108          maxItems: 4
109          items:
110            - description: AUXCLK clock for McASP used by CPB audio
111            - description: Parent for CPB_McASP auxclk (for 48KHz)
112            - description: SCKI clock for the pcm3168a codec on CPB
113            - description: Parent for CPB_SCKI clock (for 48KHz)
114
115        clock-names:
116          items:
117            - const: cpb-mcasp-auxclk
118            - const: cpb-mcasp-auxclk-48000
119            - const: cpb-codec-scki
120            - const: cpb-codec-scki-48000
121
122examples:
123  - |+
124    sound {
125        compatible = "ti,j721e-cpb-audio";
126        model = "j721e-cpb";
127
128        status = "okay";
129
130        ti,cpb-mcasp = <&mcasp10>;
131        ti,cpb-codec = <&pcm3168a_1>;
132
133        clocks = <&k3_clks 184 1>,
134                 <&k3_clks 184 2>, <&k3_clks 184 4>,
135                 <&k3_clks 157 371>,
136                 <&k3_clks 157 400>, <&k3_clks 157 401>;
137        clock-names = "cpb-mcasp-auxclk",
138                      "cpb-mcasp-auxclk-48000", "cpb-mcasp-auxclk-44100",
139                      "cpb-codec-scki",
140                      "cpb-codec-scki-48000", "cpb-codec-scki-44100";
141    };
142