we are using an DB410c based Myon1 Linux SoM for a communication product in our company. Actually, we have a problem with the class-D speaker amplifier and the headset speaker signals which are embedded on the PM8916’s audio codec:
“DragonBoard 410c Hardware Manual”, page 21
The speaker signals are routed from the PM8916 PMIC built-in Audio CODEC, the two signals are:
-SKPR_DRV_P - Class-D speaker amplifier output+
-SKPR_DRV_M - Class-D speaker amplifier output-
Hardware design facts:
-8 ohm speaker, connected the SKPR_DRV_*
-headset audio jack, connected to HPH_L/R and HPH_REF
Case 1: When I use aplay to play a test wav via speaker, the PMICs codec have to enable the class-D clock signal (300kHz) and generates the audio signal on the speaker as expected. The 300kHz class-D modulation frequency can be measured via scope and can also be sniffed on the speaker wiring via HF sniffer probe and spectrum analyzer (see images).
Case 2: When I use aplay to play a test wav via headset, I do mute the speaker channel first, so audio is only served to the headset. The audio signal plays on the headphone as expected.
The problem: I can hear a quite loud, high frequency signal (approx. 10kHz) on the headphones in this scenario for 5sec. after stopping aplay. The reason is, that the class-D amp gots activated also in this headset scenario and not as expected only when I’m using the speaker. For my understanding, this is because the underlying sound architecture doesn’t take care about the muted speaker output and activates the codecs class-D output stage as soon as a sound output is generated. For clarification: The problem is NOT, that the speaker is playing sound when it is muted (it doesn’t!). The problem is, that the class-D modulates the speaker output to a 0V amplitude since it is muted via alsas “RX3 Digital” control element. Due to a layout problem (I think so) of our baseboard, this modulation frequency is electromagnetically coupled in into the headset channel traces. The result is a high frequency interference on the headset speakers.
A workaround for the first delivered devices would be to force the class-D amp to be deactivated in headset scenario.
Is it possible to deactivate the PM8916’s class-D subsystem at run time?
Thanks for reading, sincerely!
Manuel Del Basso