Tool/software:
We have in issue to get mic working from long range distance, we are able to capture voice within 10cm only.
Bellow are the register values
root@imx8mp-lpddr4-evk:~# i2cdump -y -f 2 0x18
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 20 04 00 00 0a 00 00 00 c1 f0 00 00 20 ... ?..?...??..
10: 20 ff ff 04 78 78 04 78 78 06 7f fe 00 00 fe 00 ..?xx?xx???..?.
20: 00 00 00 00 cc 00 00 00 40 80 00 80 80 00 00 80 ....?...@?.??..?
30: 00 00 00 9c 00 00 80 00 00 00 9c 00 00 00 00 00 ...?..?...?.....
40: 80 9c 00 00 00 00 00 80 9c 00 00 80 00 00 80 98 ??.....??..?..??
50: 00 00 80 00 00 00 98 00 00 00 00 00 80 98 00 00 ..?...?.....??..
60: 00 00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 .....??.........
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 00 00 00 20 04 00 00 0a 00 00 00 c1 f0 00 00 20 ... ?..?...??..
90: 20 ff ff 04 78 78 04 78 78 06 7f fe 00 00 fe 00 ..?xx?xx???..?.
a0: 00 00 00 00 cc 00 00 00 40 80 00 80 80 00 00 80 ....?...@?.??..?
b0: 00 00 00 9c 00 00 80 00 00 00 9c 00 00 00 00 00 ...?..?...?.....
c0: 80 9c 00 00 00 00 00 80 9c 00 00 80 00 00 80 98 ??.....??..?..??
d0: 00 00 80 00 00 00 98 00 00 00 00 00 80 98 00 00 ..?...?.....??..
e0: 00 00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 .....??.........
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
root@imx8mp-lpddr4-evk:~#
After setting i2cset -y -f 2 0x18 0x19 0x40 voltage at micbias is 2v
root@imx8mp-lpddr4-evk:~# i2cdump -y -f 2 0x18
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 20 04 00 00 0a 00 00 00 f1 f0 00 00 20 ... ?..?...??..
10: 20 ff ff 00 78 78 00 78 78 46 7c fe 00 00 fe 00 ...xx.xxF|?..?.
20: 00 00 00 00 00 c0 00 00 40 80 00 00 00 00 00 80 .....?..@?.....?
30: 00 00 00 9f 00 00 80 00 00 00 9f 00 00 00 00 00 ...?..?...?.....
40: 80 9f 00 00 00 00 00 80 9f 00 00 80 00 00 80 9b ??.....??..?..??
50: 00 00 80 00 00 00 9b 00 00 00 00 00 80 9b fe 0c ..?...?.....????
60: 00 00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 .....??.........
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 00 00 00 20 04 00 00 0a 00 00 00 01 f0 00 00 20 ... ?..?...??..
90: 20 ff ff 00 78 78 00 78 78 46 7c fe 00 00 fe 00 ...xx.xxF|?..?.
a0: 00 00 00 00 00 c0 00 00 40 80 00 00 00 00 00 80 .....?..@?.....?
b0: 00 00 00 9f 00 00 80 00 00 00 9f 00 00 00 00 00 ...?..?...?.....
c0: 80 9f 00 00 00 00 00 80 9f 00 00 80 00 00 80 9b ??.....??..?..??
d0: 00 00 80 00 00 00 9b 00 00 00 00 00 80 9b fe 0c ..?...?.....????
e0: 00 00 00 00 00 01 02 00 00 00 00 00 00 00 00 00 .....??.........
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
DTS configuration is bellow
152 sound-tlv320aic310x {
153 compatible = "simple-audio-card";
154 simple-audio-card,name = "sound-tlv320aic310x";
155 simple-audio-card,format = "i2s";
156 simple-audio-card,bitclock-master = <&cpudai2>;
157 simple-audio-card,frame-master = <&cpudai2>;
158 /* simple-audio-card,mclk-fs = <256>;*/
159 simple-audio-card,widgets =
160 "Microphone", "Microphone Jack",
161 "Line", "Line In Jack",
162 "Line", "Line Out Jack",
163 "Headphone", "Headphone Jack",
164 "Speaker", "Speaker External",
165 "Line", "POTS Line In",
166 "Line", "External Mic";
167 simple-audio-card,routing =
168 "Headphone Jack", "HPLOUT",
169 "Headphone Jack", "HPROUT",
170 "LINE2R", "POTS Line In",
171 "Line Out Jack", "LLOUT",
172 "Line Out Jack", "RLOUT";
173
174 cpudai2:simple-audio-card,cpu {
175 sound-dai = <&sai3>;
176 clocks = <&clk IMX8MP_CLK_SAI3_ROOT>;
177 dai-tdm-slot-num = <2>;
178 dai-tdm-slot-width = <32>;
179 dai-tdm-slot-tx-mask = <0 0 0 0 0 0 0 0>;
180 dai-tdm-slot-rx-mask = <1 1 1 1 0 0 0 0>;
181 };
182 simple-audio-card,codec {
183 sound-dai = <&codec>;
184 /*clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_MCLK1>; */
185 clocks = <&clk IMX8MP_CLK_SAI3_ROOT>;
186 };
187 };
721 codec: codec@18 {
722 #sound-dai-cells=<0>;
723 pinctrl-names = "default";
724 pinctrl-0 = <&pinctrl_tlv320>;
725 compatible = "ti,tlv320aic3x";
726 reg = <0x18>;
727 reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
728 ai31xx-micbias-vg = <MICBIAS_2_0V>;
729 /* ai31xx-micbias-vg = <MICBIAS_AVDDV>; */
730 IOVDD-supply = <&buck5>;
731 DVDD-supply = <&buck5>;
732 AVDD-supply = <&buck4>;
733 DRVDD-supply = <&buck4>;
734 };
735
930 &sai3 {
931 #sound-dai-cells = <0>;
932 pinctrl-names = "default";
933 pinctrl-0 = <&pinctrl_sai3>;
934 assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
935 assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
936 assigned-clock-rates = <24576000>;
937 clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_IPG>, <&clk IMX8MP_CLK_DUMMY>,
938 <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
939 <&clk IMX8MP_CLK_DUMMY>, <&clk IMX8MP_AUDIO_PLL1_OUT>, <&clk IMX8MP_AUDIO_PLL2_OUT>;
940 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
941 fsl,sai-mclk-direction-output;
942 /*fsl,sai-synchronous-rx;*/
943 status = "okay";
944 };
945
1304 pinctrl_tlv320: tlv320grp {
1305 fsl,pins = <
1306 MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x00
1307 >;
1308 };
1309
1310 pinctrl_sai3: sai3grp {
1311 fsl,pins = <
1312 MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC 0xd6
1313 MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK 0xd6
1314 MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00 0xd6
1315 MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00 0xd6
1316 MX8MP_IOMUXC_SAI3_MCLK__AUDIOMIX_SAI3_MCLK 0xd6
1317 MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28 0xd6
1318 MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29 0xd6
1319 >;
1320 };
is there any configuration need to be down to capture from long rang distance.? at least from 25cm.