Hi, On Thu, Feb 13, 2020 at 05:34:54PM -0800, Tony Lindgren wrote: > * Sebastian Reichel [200214 00:35]: > > On Wed, Feb 12, 2020 at 06:35:43AM -0800, Tony Lindgren wrote: > > > 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 { > > > > cpu_dai3_cpcap > > > > > 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 { > > > > cpu_dai3_mdm > > OK > > > > reg = <1>; > > > dai-format = "dsp_a"; > > > frame-master = <&cpcap_audio_codec1>; > > > bitclock-master = <&cpcap_audio_codec1>; > > > remote-endpoint = <&mot_mdm6600_audio_codec0>; > > > }; > > > }; > > > }; > > > }; > > > > > > 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? > > > > I haven't had a look at this for quite some time. I suppose the > > cpcap voice DAI and the modem will also have two endpoints? So > > once the BT support is added it will looks like this [simplified]? > > Well it will be even simpler, no need for extra endpoints at > the codecs, see below. > > > &mcbsp3 { > > ports { > > port@0 { > > cpu_dai3_cpcap: endpoint@0 {}; > > cpu_dai3_modem: endpoint@1 {}; > > cpu_dai3_bt: endpoint@2 {}; > > }; > > }; > > }; > > But yes, bluetooth would be just added as above under mcbsp3. > [...] > > Then the modem codec looks like this: > > mot_mdm6600_audio: audio-codec { > #address-cells = <1>; > #size-cells = <0>; > #sound-dai-cells = <1>; > > port@0 { > mot_mdm6600_audio_codec0: endpoint { > remote-endpoint = <&cpu_dai_mdm>; > }; > }; > }; > > > &bluetooth { > > ports { > > port@0 { > > bt_dai_cpu: endpoint@0 {}; > > bt_dai_modem: endpoint@1 {}; > > bt_dai_cpcap: endpoint@2 {}; > > }; > > }; > > }; > > And bluetooth would be similar to cpcap_audio and mot_mdm6600_audio > above. My understanding is, that CPU is not involved for calls (except for setting up cpcap registers correctly). Basically McBSP3 should remain idle for a call and data goes directly from modem to cpcap. The same should work for modem <-> BT, except that CPCAP seems to always provide the clock. That would imply a direct link between modem and codec / BT? > My guess is that only cpcap registers and clock rate needs to be > changed for bluetooth audio BTW, so if somebody havs a bluetooth > headset just do the following in Android: > > # cpcaprw --all > /tmp/before > configure bluetooth headset for audio in android and start > playing some music or make a phone call > ... > # cpcaprw --all > /tmp/after > stop playing music or phone call > ... > diff -u /tmp/before /tmp/after > > The registers will be different for a bluetooth phone call and > playing music. I can provider register values once I find some time. -- Sebastian