Other Parts Discussed in Thread: TLV320AIC3104, TLV320AIC3110, TAS2764
Hi team,
I'm using TLV320AIC3104EVM-K(external codec) with IMX8MM.
With below changes I can hear only noise.
Changes:
+ sound-tlv320aic3x {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "tlv320aic3x-Codec";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,frame-master = <&cpudai1>;
+ simple-audio-card,bitclock-master = <&cpudai1>;
+
+ simple-audio-card,widgets =
+ "Microphone", "Mic Jack",
+ "Line", "Line Out",
+ "Line", "Line In",
+ "Headphone", "Headphone Jack",
+ "Speaker", "speaker";
+ simple-audio-card,routing =
+ "Line Out", "HPLCOM",
+ "Line Out", "HPRCOM",
+ "LINE1L", "Line In",
+ "LINE1R", "Line In",
+ "Headphone Jack", "HPLOUT",
+ "Headphone Jack", "HPROUT",
+ "MIC2L", "Mic Jack",
+ "MIC2R", "Mic Jack",
+ "Mic Jack", "Mic Bias",
+ "speaker", "LLOUT",
+ "speaker", "RLOUT";
+
+ cpudai1: simple-audio-card,cpu {
+ sound-dai = <&sai1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ };
+
+ simple-audio-card,codec {
+ sound-dai = <&tlv320aic3x>;
+ clocks = <&clk IMX8MM_CLK_SAI1_ROOT>;
+ };
+ };
+ reg_3p3v: regulator-3p3v {
+ compatible = "regulator-fixed";
+ regulator-name = "3P3V";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ startup-delay-us = <300000>;
+ regulator-always-on;
+ };
+
+ reg_1p8v: regulator-1p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "1P8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+ tlv320aic3x: codec@18 {
+ compatible = "ti,tlv320aic3104";
+ reg = <0x18>;
+ pinctrl-0 = <&pinctrl_audio_reset>;
+ reset-gpios = <&gpio4 1 GPIO_ACTIVE_LOW>;
+ ai31xx-micbias-vg = <MICBIAS_2_0V>;
+ #sound-dai-cells = <0>;
+ DRVDD-supply = <®_3p3v>;
+ AVDD-supply = <®_3p3v>;
+ IOVDD-supply = <®_3p3v>;
+ DVDD-supply = <®_1p8v>;
+ };
&sai1 {
+ #sound-dai-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai1>;
+ fsl,sai-mclk-direction-output;
+ assigned-clocks = <&clk IMX8MM_CLK_SAI1>;
+ assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
+ assigned-clock-rates = <24576000>;
+ status = "okay";
+};
+ pinctrl_audio_reset: pinctrl_audio_reset {
+ fsl,pins = <
+ MX8MM_IOMUXC_SAI1_RXC_GPIO4_IO1 0x13
+ >;
+ };
pinctrl_sai1: sai1grp {
fsl,pins = <
MX8MM_IOMUXC_SAI1_MCLK_SAI1_MCLK 0xd6
MX8MM_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC 0xd6
- MX8MM_IOMUXC_SAI1_RXD7_SAI1_TX_SYNC 0xd6
+ /*MX8MM_IOMUXC_SAI1_RXD7_SAI1_TX_SYNC 0xd6*/
MX8MM_IOMUXC_SAI1_TXC_SAI1_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI1_TXD0_SAI1_TX_DATA0 0xd6
- MX8MM_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1 0xd6
+ /*MX8MM_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1 0xd6
MX8MM_IOMUXC_SAI1_TXD2_SAI1_TX_DATA2 0xd6
MX8MM_IOMUXC_SAI1_TXD3_SAI1_TX_DATA3 0xd6
MX8MM_IOMUXC_SAI1_TXD4_SAI1_TX_DATA4 0xd6
MX8MM_IOMUXC_SAI1_TXD5_SAI1_TX_DATA5 0xd6
MX8MM_IOMUXC_SAI1_TXD6_SAI1_TX_DATA6 0xd6
- MX8MM_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7 0xd6
+ MX8MM_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7 0xd6 */
+ MX8MM_IOMUXC_SAI1_RXD0_SAI1_RX_DATA0 0xd6
>;
};
@@ -923,16 +1015,17 @@
fsl,pins = <
MX8MM_IOMUXC_SAI1_MCLK_SAI1_MCLK 0xd6
MX8MM_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC 0xd6
- MX8MM_IOMUXC_SAI1_RXD7_SAI1_TX_DATA4 0xd6
+ /* MX8MM_IOMUXC_SAI1_RXD7_SAI1_TX_DATA4 0xd6*/
MX8MM_IOMUXC_SAI1_TXC_SAI1_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI1_TXD0_SAI1_TX_DATA0 0xd6
- MX8MM_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1 0xd6
+ /*MX8MM_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1 0xd6
MX8MM_IOMUXC_SAI1_TXD2_SAI1_TX_DATA2 0xd6
MX8MM_IOMUXC_SAI1_TXD3_SAI1_TX_DATA3 0xd6
MX8MM_IOMUXC_SAI1_TXD4_SAI1_TX_DATA4 0xd6
MX8MM_IOMUXC_SAI1_TXD5_SAI1_TX_DATA5 0xd6
MX8MM_IOMUXC_SAI1_TXD6_SAI1_TX_DATA6 0xd6
- MX8MM_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7 0xd6
+ MX8MM_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7 0xd6 */
+ MX8MM_IOMUXC_SAI1_RXD0_SAI1_RX_DATA0 0xd6
>;
};
OUTPUT:
130|evk_8mm:/ # i2cdump -y -f 2 0x18
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 10 04 00 00 00 00 00 00 01 00 00 00 80 ...??......?...?
10: 80 ff ff 78 78 78 78 78 78 06 00 fe 00 00 fe 00 ???xxxxxx?.?..?.
20: 00 20 00 00 20 00 00 00 00 00 00 80 80 00 00 00 . .. ......??...
30: 00 00 00 04 00 00 00 00 00 00 04 00 00 00 00 00 ...?......?.....
40: 00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 .?......?.......
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 02 00 00 00 00 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 10 04 00 00 00 00 00 00 01 00 00 00 80 ...??......?...?
90: 80 ff ff 78 78 78 78 78 78 06 00 fe 00 00 fe 00 ???xxxxxx?.?..?.
a0: 00 20 00 00 20 00 00 00 00 00 00 80 80 00 00 00 . .. ......??...
b0: 00 00 00 04 00 00 00 00 00 00 04 00 00 00 00 00 ...?......?.....
c0: 00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 .?......?.......
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 02 00 00 00 00 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 ................
evk_8mm:/ #
regmap:
vk_8mm:/sys/kernel/debug/regmap/2-0018 # cat registers
00: 00
01: XX
02: 00
03: 20
04: 1c
05: 36
06: b0
07: 0a
08: 00
09: 00
0a: 00
0b: 01
0c: 00
0d: 00
0e: 00
0f: 20
10: 20
11: ff
12: ff
13: 00
14: 78
15: 78
16: 00
17: 78
18: 78
19: 00
1a: 00
1b: fe
1c: 00
1d: 00
1e: fe
1f: 00
20: 18
21: 18
22: 00
23: 00
24: 00
25: 00
26: 00
27: 00
28: 40
29: 00
2a: 00
2b: af
2c: af
2d: 00
2e: 2f
2f: af
30: 00
31: 00
32: 00
33: 0c
34: 00
35: 2f
36: af
37: 00
38: 00
39: 00
3a: 0c
3b: 00
3c: 00
3d: 00
3e: 00
3f: 2f
40: af
41: 0c
42: 00
43: 00
44: 00
45: 00
46: 2f
47: af
48: 0c
49: 00
4a: 00
4b: 00
4c: 00
4d: 00
4e: 00
4f: 00
50: 00
51: 2f
52: af
53: 00
54: 00
55: 00
56: 08
57: 00
58: 00
59: 00
5a: 00
5b: 2f
5c: af
5d: 08
5e: 00
5f: 00
60: 00
61: 00
62: 00
63: 00
64: 00
65: 01
66: 02
67: 00
68: 00
69: 00
6a: 00
6b: 00
6c: 00
6d: 00
tinymix:
evk_8mm:/ # tinymix
Mixer name: 'tlv320aic3x-Codec'
Number of controls: 78
ctl type num name value
0 INT 2 PCM Playback Volume 80 80
1 INT 1 Left Line Mixer PGAR Bypass Volume 118
2 INT 1 Left Line Mixer DACR1 Playback Volume 118
3 INT 1 Right Line Mixer PGAL Bypass Volume 118
4 INT 1 Right Line Mixer DACL1 Playback Volume 118
5 INT 1 Left HP Mixer PGAR Bypass Volume 118
6 INT 1 Left HP Mixer DACR1 Playback Volume 118
7 INT 1 Right HP Mixer PGAL Bypass Volume 118
8 INT 1 Right HP Mixer DACL1 Playback Volume 118
9 INT 1 Left HPCOM Mixer PGAR Bypass Volume 118
10 INT 1 Left HPCOM Mixer DACR1 Playback Volume 118
11 INT 1 Right HPCOM Mixer PGAL Bypass Volume 118
12 INT 1 Right HPCOM Mixer DACL1 Playback Volume 118
13 INT 2 Line PGA Bypass Volume 71 71
14 INT 2 Line DAC Playback Volume 71 71
15 INT 2 HP PGA Bypass Volume 71 71
16 INT 2 HP DAC Playback Volume 71 71
17 INT 2 HPCOM PGA Bypass Volume 71 71
18 INT 2 HPCOM DAC Playback Volume 71 71
19 INT 2 Line Playback Volume 0 0
20 BOOL 2 Line Playback Switch On On
21 INT 2 HP Playback Volume 0 0
22 BOOL 2 HP Playback Switch On On
23 INT 2 HPCOM Playback Volume 0 0
24 BOOL 2 HPCOM Playback Switch On On
25 BOOL 2 AGC Switch Off Off
26 ENUM 1 Left AGC Target level -5.5dB
27 ENUM 1 Right AGC Target level -5.5dB
28 ENUM 1 Left AGC Attack time 8ms
29 ENUM 1 Right AGC Attack time 8ms
30 ENUM 1 Left AGC Decay time 100ms
31 ENUM 1 Right AGC Decay time 100ms
32 BOOL 2 De-emphasis Switch Off Off
33 INT 2 PGA Capture Volume 32 32
34 BOOL 2 PGA Capture Switch On On
35 ENUM 2 ADC HPF Cut-off Disabled Disabled
36 ENUM 1 Output Driver Power-On time 0us
37 ENUM 1 Output Driver Ramp-up step 0ms
38 ENUM 1 Left DAC Mux DAC_L1
39 ENUM 1 Left HPCOM Mux differential of HPLOUT
40 ENUM 1 Right DAC Mux DAC_R1
41 ENUM 1 Right HPCOM Mux differential of HPROUT
42 ENUM 1 Left Line1L Mux single-ended
43 ENUM 1 Left Line1R Mux single-ended
44 ENUM 1 Right Line1L Mux single-ended
45 ENUM 1 Right Line1R Mux single-ended
46 BOOL 1 Left PGA Mixer Line1L Switch On
47 BOOL 1 Left PGA Mixer Line1R Switch Off
48 BOOL 1 Left PGA Mixer Mic2L Switch Off
49 BOOL 1 Left PGA Mixer Mic2R Switch Off
50 BOOL 1 Right PGA Mixer Line1R Switch On
51 BOOL 1 Right PGA Mixer Line1L Switch Off
52 BOOL 1 Right PGA Mixer Mic2L Switch Off
53 BOOL 1 Right PGA Mixer Mic2R Switch Off
54 BOOL 1 Left Line Mixer PGAL Bypass Switch Off
55 BOOL 1 Left Line Mixer DACL1 Switch On
56 BOOL 1 Left Line Mixer PGAR Bypass Switch Off
57 BOOL 1 Left Line Mixer DACR1 Switch Off
58 BOOL 1 Right Line Mixer PGAL Bypass Switch Off
59 BOOL 1 Right Line Mixer DACL1 Switch Off
60 BOOL 1 Right Line Mixer PGAR Bypass Switch Off
61 BOOL 1 Right Line Mixer DACR1 Switch On
62 BOOL 1 Left HP Mixer PGAL Bypass Switch Off
63 BOOL 1 Left HP Mixer DACL1 Switch On
64 BOOL 1 Left HP Mixer PGAR Bypass Switch Off
65 BOOL 1 Left HP Mixer DACR1 Switch Off
66 BOOL 1 Right HP Mixer PGAL Bypass Switch Off
67 BOOL 1 Right HP Mixer DACL1 Switch Off
68 BOOL 1 Right HP Mixer PGAR Bypass Switch Off
69 BOOL 1 Right HP Mixer DACR1 Switch On
70 BOOL 1 Left HPCOM Mixer PGAL Bypass Switch Off
71 BOOL 1 Left HPCOM Mixer DACL1 Switch On
72 BOOL 1 Left HPCOM Mixer PGAR Bypass Switch Off
73 BOOL 1 Left HPCOM Mixer DACR1 Switch Off
74 BOOL 1 Right HPCOM Mixer PGAL Bypass Switch Off
75 BOOL 1 Right HPCOM Mixer DACL1 Switch Off
76 BOOL 1 Right HPCOM Mixer PGAR Bypass Switch Off
77 BOOL 1 Right HPCOM Mixer DACR1 Switch On
evk_8mm:/ #