Hi Tony,
On 12/02/2020 16.35, Tony Lindgren wrote:
- Peter Ujfalusi peter.ujfalusi@ti.com [200212 08:02]:
On 11/02/2020 19.16, Tony Lindgren wrote:
We can have multiple connections on a single McBSP instance configured with audio graph card when using TDM (Time Division Multiplexing). Let's allow that by configuring dais dynamically.
It is still one DAI... If you have multiple codec connected to the same I2S lines, but the codecs communicate within different time slots, you still have one DAI on the CPU side, but multiple codecs (codec DAIs) with different TDM slot.
OK so subject should say "dodec DAIs" then I guess?
See Documentation/devicetree/bindings/sound/audio-graph-card.txt and Documentation/devicetree/bindings/graph.txt for more details for multiple endpoints.
See the example for 'Multi DAI with DPCM' in audio-graph-card.txt The PCM3168a have 2 DAIs: playback and capture, but you can have multiple endpoints within a DAI.
Yes this should follow the audio-graph-card.txt example. We end up with mcbsp3 dts node as below on droid4:
&mcbsp3 { #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&mcbsp3_pins>; status = "okay";
ports { mcbsp3_port: port@0 { #address-cells = <1>; #size-cells = <0>; cpu_dai3: endpoint@0 { reg = <0>; dai-format = "dsp_a"; frame-master = <&cpcap_audio_codec1>; bitclock-master = <&cpcap_audio_codec1>; remote-endpoint = <&cpcap_audio_codec1>; }; cpu_dai_mdm: endpoint@1 { reg = <1>; dai-format = "dsp_a"; frame-master = <&cpcap_audio_codec1>; bitclock-master = <&cpcap_audio_codec1>; remote-endpoint = <&mot_mdm6600_audio_codec0>; }; }; };
};
According to Documentation/devicetree/bindings/sound/audio-graph-card.txt it should be something like this: &mcbsp3 { #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&mcbsp3_pins>; status = "okay";
ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>;
cpu_dai3: endpoint@0 { dai-format = "dsp_a"; frame-master = <&cpcap_audio_codec1>; bitclock-master = <&cpcap_audio_codec1>; remote-endpoint = <&cpcap_audio_codec1>; };
cpu_dai_mdm: endpoint@1 { dai-format = "dsp_a"; frame-master = <&cpcap_audio_codec1>; bitclock-master = <&cpcap_audio_codec1>; remote-endpoint = <&mot_mdm6600_audio_codec0>; }; }; }; };
If you span out dummy DAIs got dai1+ then how you will get anything working via endpoint1+? There will be no ops for McBSP, so it is not going to do anything...
That is pretty much the same as the 'Multi DAI with DPCM' example, with dne dai, and multiple endpoints. I think we still have just one port for one i2s transport on the mcbsp :)
Does the above look as what you would expect based on the binding?
The audio-graph-card.txt example shows pcm3168a which have two DAIs, one for playback and one for capture.
I guess Morimoto-san can explain if he carries out of tree patches to get the described setup working on top of mainline...
But, no, based on the documentation I don't ;)
I've tested this with droid4 where cpcap pmic and modem voice are both both wired to mcbsp3. I've also tested this on droid4 both with and without the pending modem audio codec driver that is waiting for n_gsm serdev dependencies to clear.
What this patch you effectively just creating dummy-dais on top of the real McBSP DAI.
Yes I think this is needed for snd-soc-audio-graph-card, and this allows configuring whatever is needed for the i2s slot. But maybe you have some better way of doing it in mind?
You also rename the DAIs, which might break ams-delta.
Oops, that's not good. So should we just keep the old naming if there's only one endpoint?
That's an option, yes, if we really need extra dummy McBSP DAIs at all, again, let's hear from Morimoto-san or Mark.
We still have legacy support in omap-twl4030.c omap3pandora.c osk5912.c rx51.c
which will break with the renamed DAI. On the other hand I think the legacy support can be dropped from them.
I'm not sure what all that would take.
For some it should not be a big deal as they only boot in DT mode. /me adds this to the TODO list.
I know it was discussed, but can not find the mail: Can you brief again on the audio connection?
Below is a link to a mailing list thread where Sebastian describes the audio connection:
Thanks!
Do you have branch with working code?
Yeah I have slightly older set of the patches in my droid4-pending-v5.5 kernel.org git branch with voice calls working.
I think I should put my droid4 out and try to get it working... Do you have a link for dummies to follow to get started? ;)
Regards,
Tony
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki