Re: [PATCH v2 2/3] bindings: sound: Add documentation for TI j721e EVM (CPB and IVI)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Rob,

On 20/05/2020 1.21, Rob Herring wrote:
> On Tue, May 12, 2020 at 04:16:32PM +0300, Peter Ujfalusi wrote:
>> The audio support on the Common Processor Board board is using
>> pcm3168a codec connected to McASP10 serializers in parallel setup.
>>
>> The Infotainment board plugs into the Common Processor Board, the support
>> of the extension board is extending the CPB audio support by adding
>> the two codecs on the expansion board.
>>
>> The audio support on the Infotainment Expansion Board consists of McASP0
>> connected to two pcm3168a codecs with dedicated set of serializers to each.
>> The SCKI for pcm3168a is sourced from j721e AUDIO_REFCLK0 pin.
>>
>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx>
>> ---
>>  .../bindings/sound/ti,j721e-cpb-audio.yaml    |  93 ++++++++++++
>>  .../sound/ti,j721e-cpb-ivi-audio.yaml         | 142 ++++++++++++++++++
>>  2 files changed, 235 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/sound/ti,j721e-cpb-audio.yaml
>>  create mode 100644 Documentation/devicetree/bindings/sound/ti,j721e-cpb-ivi-audio.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/sound/ti,j721e-cpb-audio.yaml b/Documentation/devicetree/bindings/sound/ti,j721e-cpb-audio.yaml
>> new file mode 100644
>> index 000000000000..0355ffc2b01b
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/ti,j721e-cpb-audio.yaml
>> @@ -0,0 +1,93 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/sound/ti,j721e-cpb-audio.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Texas Instruments J721e Common Processor Board Audio Support
>> +
>> +maintainers:
>> +  - Peter Ujfalusi <peter.ujfalusi@xxxxxx>
>> +
>> +description: |
>> +  The audio support on the board is using pcm3168a codec connected to McASP10
>> +  serializers in parallel setup.
>> +  The pcm3168a SCKI clock is sourced from j721e AUDIO_REFCLK2 pin.
>> +  In order to support 48KHz and 44.1KHz family of sampling rates the parent
>> +  clock for AUDIO_REFCLK2 needs to be changed between PLL4 (for 48KHz) and
>> +  PLL15 (for 44.1KHz). The same PLLs are used for McASP10's AUXCLK clock via
>> +  different HSDIVIDER.
>> +
>> +properties:
>> +  compatible:
>> +    items:
>> +      - const: ti,j721e-cpb-audio
>> +
>> +  model:
>> +    $ref: /schemas/types.yaml#/definitions/string
>> +    description: User specified audio sound card name
>> +
>> +  ti,cpb-mcasp:
>> +    description: phandle to McASP10
>> +    allOf:
>> +      - $ref: /schemas/types.yaml#/definitions/phandle
>> +
>> +  ti,cpb-codec:
>> +    description: phandle to the pcm3168a codec used on the CPB
>> +    allOf:
>> +      - $ref: /schemas/types.yaml#/definitions/phandle
>> +
>> +  clocks:
>> +    items:
>> +      - description: PLL4 clock
>> +      - description: PLL15 clock
>> +      - description: McASP10 auxclk clock
>> +      - description: PLL4_HSDIV0 parent for McASP10 auxclk (for 48KHz)
>> +      - description: PLL15_HSDIV0 parent for McASP10 auxclk (for 44.1KHz)
>> +      - description: AUDIO_REFCLK2 clock
>> +      - description: PLL4_HSDIV2 parent for AUDIO_REFCLK2 clock (for 48KHz)
>> +      - description: PLL15_HSDIV2 parent for AUDIO_REFCLK2 clock (for 44.1KHz)
> 
> What h/w are these connected to?

These clocks are internal to the SoC with the exception of AUDIO_REFCLK2
which is routed to SoC pin.

> You have no control interface here, so how do you have clocks?

I need to control these clocks, the sound card is the user of these clocks.

> Defining parent clocks seems wrong, too. This seems to just be a 
> collection of clocks a driver happens to need. Really, you should be 
> able query possible parents and select one with the right frequency 
> multiple.

The issue in hand is that I need to dynamically switch between certain
parents of the cpb-mcasp (for McASP) and audio-refclk2 (for the codec)
based on sampling rate of the stream.

The McASP auxclk parent can be selected from 7 source and I must use the
two dedicated ones.
The REFCLK2 parent can be selected from 30 source.

It is also a limitation of the system that I can not query directly the
PLL4/PLL15 frequencies, I can only get the frequency on the HSDIVs, but
I can not get the divider on them.
In order to handle the constraints on clocking I need to know the source
rate so the dividers can be taken into account. The codec is picky when
it comes to clocking and there is a need to switch between
256/512/768xFS based SCKI in order to be able to support sampling rates.

At the moment I have fixed clocks in place for the pll4/15 with the
rates they are configured so the dts can switch to a real clock which I
can use in the future.
As things are it is unlikely that I will ever going to have access to
them, but I wanted to avoid in the bindings:
ti,j721e-pll4-rate = <1179648000>;
ti,j721e-pll15-rate = <1083801600>;

>> +
>> +  clock-names:
>> +    items:
>> +      - const: pll4
>> +      - const: pll15
>> +      - const: cpb-mcasp
>> +      - const: cpb-mcasp-48000
>> +      - const: cpb-mcasp-44100
>> +      - const: audio-refclk2
>> +      - const: audio-refclk2-48000
>> +      - const: audio-refclk2-44100
>> +
>> +required:
>> +  - compatible
>> +  - model
>> +  - ti,cpb-mcasp
>> +  - ti,cpb-codec
>> +  - clocks
>> +  - clock-names
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |+
>> +    sound {
>> +        compatible = "ti,j721e-cpb-audio";
>> +        model = "j721e-cpb";
>> +
>> +        status = "okay";
> 
> Don't show status in examples.

Oops, it is a leftower

> 
>> +
>> +        ti,cpb-mcasp = <&mcasp10>;
>> +        ti,cpb-codec = <&pcm3168a_1>;
>> +
>> +        clocks = <&pll4>, <&pll15>,
>> +                 <&k3_clks 184 1>,
>> +                 <&k3_clks 184 2>, <&k3_clks 184 4>,
>> +                 <&k3_clks 157 371>,
>> +                 <&k3_clks 157 400>, <&k3_clks 157 401>;
>> +        clock-names = "pll4", "pll15",
>> +                      "cpb-mcasp",
>> +                      "cpb-mcasp-48000", "cpb-mcasp-44100",
>> +                      "audio-refclk2",
>> +                      "audio-refclk2-48000", "audio-refclk2-44100";
>> +    };

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

Attachment: pEpkey.asc
Description: application/pgp-keys


[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux