Hi,
I am using postmarket OS edge (phosh) with the msm8953-mainline kernel of the linux-6.7.2/main branch.
The issues I am facing are:
- static noise as soon as I have plugged in and switched to my headphones
- The noise pattern depends on which parts of the device are powered (WiFi, screen etc.)
- It seems to be some inductive coupling (or floating OpAmp input)
- a loud pop sound when I start/stop sound playback (my ears still hurt 😢 )
- After the pop sound the playback starts/stops perfectly
In some situations after wildly enabling/disabling or plugging/unplugging headphones and starting/stopping playback, the static noise is gone.
I assume the noise stems from some output not being turned off properly. Longnoserob suggested it could be an erroneously configured power-saving feature or option.
After investigating a bit further, I found out that almost always error messages appear in dmesg that look like this:
[70807.344061] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70807.344107] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70807.344123] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70807.344313] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70812.881674] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp
[70843.282577] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp
[70896.027385] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70896.027432] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70896.027449] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70896.027464] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70901.294569] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp
Again when pushing buttons randomly, sometimes these messages stop appearing (while the problem persists).
I wondered whether the alsa ucm configuration could be the culprit, but I have just started investigating and the current configuration looked very similar to what xml2ucm produces from an Android mixer_paths.xml file.
Does anyone have an idea what could cause these problems?
Regards,
spongy
EDIT:
There seem to exist specialized audio chips which suppress "clicks and pops".
For example analog devices says the following on their website:
Click-Pop Suppressors
Analog Devices provides integrated audio click-and-pop suppressors for devices, such as codecs that have integrated headphone amplifiers but lack a clickless and/or popless startup or shutdown.
That sounds pretty much like the cure to my problem and the Xiaomi Vince uses a wcd_codec which is compatible to qcom,pm8916-wcd-analog-codec.
The datasheet of the msm-8953 recommends three audio configurations:
- PM8953 codec
- PM8953 + WSA8810/WSA8815
- WCD9326/WCD9335 + WSA8810/WSA8815
The datasheet of the WCD9335 features two protection mechanisms: click-and-pop and overcurrent.
The device tree features interrupts(?) for both protection mechanisms:
- cdc_hphr_ocp_int: headphone right over-current protection interrupt
<0x1 0xf1 0x1 IRQ_TYPE_NONE>
- cdc_hphl_ocp_det: headphone left over-current protection detection/interrupt
<0x1 0xf1 0x2 IRQ_TYPE_NONE>
- cdc_hphr_cnp_int: headphone right click-and-pop interrupt
<0x1 0xf1 0x4 IRQ_TYPE_NONE>
- cdc_hphl_cnp_int: headphone left click-and-pop interrupt
<0x1 0xf1 0x5 IRQ_TYPE_NONE>
So perhaps the click-and-pop protection mechanism is not enabled on my device.
On Xiaomi vince several kernel modules are loaded, so that I believe that the audio chip is controlled via these:
q6asm_dai 24576 1
q6routing 385024 2 q6asm_dai
q6voice_dai 20480 1
q6afe_clocks 12288 1
q6afe_dai 77824 1
q6voice 16384 1 q6voice_dai
q6adm 16384 1 q6routing
q6asm 32768 1 q6asm_dai
q6afe 20480 4 q6voice,q6afe_dai,q6afe_clocks,q6adm
q6cvp 12288 1 q6voice
q6cvs 12288 0
q6mvm 12288 1 q6voice
snd_q6dsp_common 45056 4 q6asm,q6afe_dai,q6afe_clocks,q6adm
q6voice_common 16384 4 q6cvp,q6voice,q6mvm,q6cvs
q6core 12288 3 q6asm,q6afe,q6adm
apr 20480 8 q6asm,q6cvp,q6core,q6mvm,q6afe,q6cvs,q6voice_common,q6adm
pdr_interface 24576 1 apr
qrtr_smd 16384 0
venus_dec 32768 0
venus_enc 28672 0
snd_soc_apq8016_sbc 12288 0
snd_soc_qcom_common 12288 1 snd_soc_apq8016_sbc
qrtr 28672 47 qrtr_smd
qcom_camss 245760 16
snd_soc_msm8916_analog 49152 1
snd_soc_msm8916_analog is the real audio driver which is used for the pm8953 power management chip. This chip also provides the audio dac.
References:
Further references:
Hi,
I am using postmarket OS edge (phosh) with the msm8953-mainline kernel of the
linux-6.7.2/mainbranch.The issues I am facing are:
In some situations after wildly enabling/disabling or plugging/unplugging headphones and starting/stopping playback, the static noise is gone.
I assume the noise stems from some output not being turned off properly. Longnoserob suggested it could be an erroneously configured power-saving feature or option.
After investigating a bit further, I found out that almost always error messages appear in dmesg that look like this:
Again when pushing buttons randomly, sometimes these messages stop appearing (while the problem persists).
I wondered whether the alsa ucm configuration could be the culprit, but I have just started investigating and the current configuration looked very similar to what
xml2ucmproduces from an Android mixer_paths.xml file.Does anyone have an idea what could cause these problems?
Regards,
spongy
EDIT:
There seem to exist specialized audio chips which suppress "clicks and pops".
For example analog devices says the following on their website:
That sounds pretty much like the cure to my problem and the Xiaomi Vince uses a
wcd_codecwhich is compatible toqcom,pm8916-wcd-analog-codec.The datasheet of the msm-8953 recommends three audio configurations:
The datasheet of the WCD9335 features two protection mechanisms:
click-and-popandovercurrent.The device tree features interrupts(?) for both protection mechanisms:
<0x1 0xf1 0x1 IRQ_TYPE_NONE><0x1 0xf1 0x2 IRQ_TYPE_NONE><0x1 0xf1 0x4 IRQ_TYPE_NONE><0x1 0xf1 0x5 IRQ_TYPE_NONE>So perhaps the click-and-pop protection mechanism is not enabled on my device.
On Xiaomi vince several kernel modules are loaded, so that I believe that the audio chip is controlled via these:
snd_soc_msm8916_analog is the real audio driver which is used for the pm8953 power management chip. This chip also provides the audio dac.
References:
Further references: