* Sebastian Reichel sebastian.reichel@collabora.com [200218 06:05]:
Hi,
On Fri, Feb 14, 2020 at 09:09:46AM -0800, Tony Lindgren wrote:
- Sebastian Reichel sre@kernel.org [200214 13:05]:
On Thu, Feb 13, 2020 at 05:34:54PM -0800, Tony Lindgren wrote:
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?
Yes the direct link is i2s. I'm ot sure if mcbsp can be idle during voice call though, I guess it should be doable since mcbsp is not the clock master :)
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.
[NI] Normal idle (no BT headset connected) [BI] Bluetooth idle (with BT headset connected) [BC] Bluetooth call in progress [NC] Normal call in progress (BT headset disabled)
[NI] => [BI] => [BC] => [NC]
CPCAP_REG_VAUDIOC 0x0065 => 0x0065 => 0x0065 => 0x0025 CPCAP_REG_CC 0x0000 => 0x0000 => 0x6000 => 0x60df CPCAP_REG_CDI 0x0040 => 0x0000 => 0xaa40 => 0xae0a CPCAP_REG_SDAC -------------- 0x0000 -------------- CPCAP_REG_SDACDI -------------- 0x0004 -------------- CPCAP_REG_TXI 0x0804 => 0x0004 => 0x0000 => 0x0cc6 CPCAP_REG_TXMP 0x079c => 0x079c => 0x0400 => 0x0673 CPCAP_REG_RXOA 0x0000 => 0x0000 => 0x0001 => 0x0001 CPCAP_REG_RXVC 0x0d34 => 0x0d34 => 0x0000 => 0x0b2c CPCAP_REG_RXCOA 0x0000 => 0x0000 => 0x0000 => 0x0601 CPCAP_REG_RXSDOA 0x0000 => 0x0000 => 0x0600 => 0x0600 CPCAP_REG_RXEPOA -------------- 0x0400 -------------- CPCAP_REG_RXLL -------------- 0x0000 -------------- CPCAP_REG_A2LA -------------- 0x0030 -------------- CPCAP_REG_MIPIS1 -------------- 0x0000 -------------- CPCAP_REG_MIPIS2 -------------- 0x0000 -------------- CPCAP_REG_MIPIS3 -------------- 0x0000 -------------- CPCAP_REG_LVAB -------------- 0x0000 --------------
Great thanks! Care to do also a dump just playing music to on bluetooth headset at some point?
Regards,
Tony