With qcomlt-4.9, the syntax used in the dtsi is completely different.
I’ve sorted through all that, and told the driver to claim the pins by actually including them in the pinctrl list:
/* apq8016-sbc.dtsi */
...
sound: sound {
...
-pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
+pinctrl-0 = <&cdc_dmic_lines_act &cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
-pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
+pinctrl-1 = <&cdc_dmic_lines_sus &cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
...
}
That gets me this:
root@dragonboard-2528:/sys/kernel/debug/pinctrl# grep -r dmic *
1000000.pinctrl/pinmux-pins:pin 0 (GPIO_0): 7702000.sound 1000000.pinctrl:0 function dmic0_clk group gpio0
1000000.pinctrl/pinmux-pins:pin 1 (GPIO_1): 7702000.sound (GPIO UNCLAIMED) function dmic0_data group gpio1
1000000.pinctrl/pinmux-functions:function: dmic0_clk, groups = [ gpio0 ]
1000000.pinctrl/pinmux-functions:function: dmic0_data, groups = [ gpio1 ]
pinctrl-handles: type: MUX_GROUP controller 1000000.pinctrl group: gpio0 (0) function: dmic0_clk (56)
pinctrl-handles: type: MUX_GROUP controller 1000000.pinctrl group: gpio1 (1) function: dmic0_data (57)
pinctrl-maps:function dmic0_clk
pinctrl-maps:function dmic0_data
I’ve also sorted out the typos in the lm80-p0436-43 doc, and put the Audio Mezzanine’s analog mic on TX1 (a.k.a. “left”), and the digital mic on TX2 (“right”):
# map analog mic to left channel
$ amixer –c 0 cset iface=MIXER,name=’ADC2 MUX’ ‘INP3’
$ amixer –c 0 cset iface=MIXER,name=’ADC2 Volume’ 8
$ amixer –c 0 cset iface=MIXER,name=’DEC1 MUX’ 'ADC2′
$ amixer -c 0 cset iface=MIXER,name='TX1 Digital Volume' 255
# map dmic to right channel
$ amixer -c 0 cset iface=MIXER,name='DEC2 MUX' 'DMIC1'
$ amixer -c 0 cset iface=MIXER,name='TX2 Digital Volume' 255
$ arecord –c 2 -D plughw:0,2 -r 48000 -f S16_LE /tmp/f-48000.wav
I’ve also swapped TX1 and TX2, and confirmed that the audio switches sides like you’d expect.
Still no clock on the DMIC lines, tho.
What’s left, I think, is possibly a silent failure related to this dmesg output:
[ 1380.949926] msm8916-wcd-digital-codec 771c000.codec: Invalid mclk rate 19200000
It’s too late in the day here to hunt this one down, so I’m passing the baton for the night.