Use WM8960 on Vim2

Hello.

Again I try to connect WM8960 to Khadas (now, to Vim2).

My system:

uname -a
Linux Khadas 4.9.190 #84 SMP PREEMPT Wed Aug 5 14:07:19 CEST 2020 aarch64 aarch64 aarch64 GNU/Linux

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

My connection:

VIM2 <> WM8960
I2C0_SCL (pin 22) - SCLK (pin 17)
I2C0_SDA (pin 23) - SDIN (pin 18)

I2S-MCLK (pin 30) - MCLK (pin 11)
I2S-SCLK (pin 29) - BCLK (pin 12)
I2S-LRCLK (pin 32) - DACLRC (pin 13) + ADCLRC/GPIO1 (pin 15)
I2S-SDO (pin 31) - DACDAT (pin 14)
I2S_SDI (pin 33) - ADCDAT (pin 16)

I changed routing and codec on aml_sound_meson in device tree:

		aml_sound_meson {
				compatible = "aml, meson-snd-card";
				status = "okay";
				aml-sound-card,format = "i2s";
				aml_sound_card,name = "AML-MESONAUDIO";

				aml,audio-routing =
					"Ext Spk","SPK_LP",
					"Ext Spk","SPK_LN",
					"Ext Spk","SPK_RP",
					"Ext Spk","SPK_RN",
					"LINPUT1", "MAIN MIC",
					"LINPUT2", "MAIN MIC",
					"LINPUT3", "MAIN MIC",
					"RINPUT1", "MAIN MIC",
					"RINPUT2", "MAIN MIC",
					"RINPUT3", "MAIN MIC";

				hp_disable;
				hp_paraments = <800 300 0 5 1>;
				pinctrl-names = "audio_i2s";
				pinctrl-0 = <&audio_i2s_pins>;
				cpu_list = <&cpudai0 &cpudai1 &cpudai2>;
				codec_list = <&codec0 &codec1 &codec2>;
				plat_list = <&i2s_plat &i2s_plat &pcm_plat>;
				cpudai0: cpudai0 {
						sound-dai = <&i2s_dai>;
				};
				cpudai1: cpudai1 {
						sound-dai = <&spdif_dai>;
				};
				cpudai2: cpudai2 {
						sound-dai = <&pcm_dai>;
				};
				codec0: codec0 {
						sound-dai = <&wm8960_codec>;
						//sound-dai = <&amlogic_codec>;
				};
				codec1: codec1 {
						sound-dai = <&spdif_codec>;
				};
				codec2: codec2 {
						sound-dai = <&pcm_codec>;
				};
		};

&i2c0 {
		status = "okay";
		/*#address-cells = <1>;
		#size-cells = <0>;
		*/

		clock-frequency = <400000>;
		pinctrl-names="default";
	pinctrl-0=<&a_i2c_master>;


		wm8960_codec:wm8960_codec@1a {
				compatible = "wlf,wm8960";
				reg = <0x1a>;
				#sound-dai-cells = <0>;

				clock-frequency =  <12288000>;
				clocks = <&clkc CLKID_AMCLK_COMP>;
				clock-names = "mclk";

				pinctrl-names = "audio_i2s";
				pinctrl-0 = <&audio_i2s_pins>;
	 
				status = "okay";
				wlf,shared-lrclk;
		};
};

There are no errors in the logs.

khadas@Khadas:~$ sudo dmesg | grep snd
[    5.251295] usbcore: registered new interface driver snd-usb-audio
[    5.316470] snd_i2s_dai: clock source gate top_glue : ffffffc05fff5f80
[    5.316505] snd_i2s_dai: clock source gate aud_buf : ffffffc05fff5700
[    5.316590] snd_i2s_dai: clock source gate i2s_out : ffffffc05fff5400
[    5.316629] snd_i2s_dai: clock source gate amclk_measure : ffffffc05fff5300
[    5.316671] snd_i2s_dai: clock source gate aififo2 : ffffffc05fff5280
[    5.316718] snd_i2s_dai: clock source gate aud_mixer : ffffffc05fff56c0
[    5.316768] snd_i2s_dai: clock source gate mixer_reg : ffffffc05fff5000
[    5.316824] snd_i2s_dai: clock source gate adc : ffffffc05fff51c0
[    5.316896] snd_i2s_dai: clock source gate top_level : ffffffc05e3e7000
[    5.316963] snd_i2s_dai: clock source gate aoclk : ffffffc05e3e7080
[    5.317034] snd_i2s_dai: clock source gate aud_in : ffffffc05e3e7100
[    5.317043] snd_i2s_dai: ignore aud_buf/vdac_clk gate
[    5.318281] snd_pcm_dai: pcm mode detection =1
[    5.318536] snd_pcm_dai: tdm config: 0x0, 0x0, 0, 0
[    5.319158] snd_spdif_dai: enterd aml_spdif_play,set_clock:-1,sample_rate=4
[    5.319327] snd_spdif_dai: set normal 512 fs /4 fs
[    5.319329] snd_spdif_dai: set 958 audio clk div 4
[    5.321058] snd_card_meson: aml_card_dai_parse_of codec_node count:1
[    5.321171] snd_card_meson: aml_card_dai_parse_of codec_node count:1
[    5.321313] snd_card_meson: aml_card_dai_parse_of codec_node count:1
[    5.321949] snd_card_meson: headphone detection disable=1
[    5.321953] snd_card_meson: no spk event delay time set
[    5.323504] aml_meson_snd_card aml_sound_meson: wm8960-hifi <-> I2S mapping ok
[    5.324353] aml_meson_snd_card aml_sound_meson: dit-hifi <-> SPDIF mapping ok
[    5.324486] snd_pcm: enter aml_pcm_new dai->name: PCM dai->id: 0
[    5.325045] aml_meson_snd_card aml_sound_meson: pcm2bt-pcm <-> PCM mapping ok
[    5.468395] snd_card_meson: enable i2sclk in startup
[   18.963026] snd_i2s: aml_audio_i2s_mute_flag: flag=1
[   18.963094] snd_spdif_codec: aml_audio_set_spdif_mute: flag=1
[   18.963220] snd_i2s_dai: Fine tdm clk setting range (0~2000000), 12287985
[   18.963254] snd_spdif_dai: Fine spdif sysclk setting range(0~2000000), 24575970
[   18.963280] snd_card_meson: aml_set_spk: aml_spk_enabled=1
[   20.817711] snd_i2s: aml_audio_i2s_mute_flag: flag=1
[   20.817762] snd_spdif_codec: aml_audio_set_spdif_mute: flag=1
[   20.817845] snd_i2s_dai: Fine tdm clk setting range (0~2000000), 12287985
[   20.824494] snd_spdif_dai: Fine spdif sysclk setting range(0~2000000), 24575970
[   20.831870] snd_card_meson: aml_set_spk: aml_spk_enabled=1
[   77.906109] aml_meson_snd_card aml_sound_meson: I2S capture prepare!
[   77.907055] aml_meson_snd_card aml_sound_meson: I2S capture enable!
[   78.849589] aml_meson_snd_card aml_sound_meson: I2S capture disable!
[   82.317339] aml_meson_snd_card aml_sound_meson: I2S capture prepare!
[   82.319548] aml_meson_snd_card aml_sound_meson: I2S capture enable!
[   82.917632] aml_meson_snd_card aml_sound_meson: I2S capture disable!
[   88.633931] aml_meson_snd_card aml_sound_meson: I2S capture prepare!
[   88.634273] aml_meson_snd_card aml_sound_meson: I2S capture enable!
[   89.233677] aml_meson_snd_card aml_sound_meson: I2S capture disable!
[   89.505298] snd_spdif_dai: enterd aml_spdif_play,set_clock:4,sample_rate=4
[   89.505350] snd_spdif_dai: set 958 audio clk div 2
[ 1191.739603] aml_meson_snd_card aml_sound_meson: I2S capture prepare!
[ 1191.742508] aml_meson_snd_card aml_sound_meson: I2S capture enable!
[ 1192.684126] aml_meson_snd_card aml_sound_meson: I2S capture disable!
[ 1362.093682] aml_meson_snd_card aml_sound_meson: I2S capture prepare!
[ 1362.096690] aml_meson_snd_card aml_sound_meson: I2S capture enable!
[ 1363.037803] aml_meson_snd_card aml_sound_meson: I2S capture disable!
[ 1770.933085] aml_meson_snd_card aml_sound_meson: I2S capture prepare!
[ 1770.934476] aml_meson_snd_card aml_sound_meson: I2S capture enable!
[ 1771.877169] aml_meson_snd_card aml_sound_meson: I2S capture disable!

More logs:

root@Khadas:/home/khadas# arecord -f dat --device="hw:0,0" test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
root@Khadas:/home/khadas# cat /debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 114/114   #P:8
#
#                              _-----=> irqs-off
#                             / _----=> need-resched
#                            | / _---=> hardirq/softirq
#                            || / _--=> preempt-depth
#                            ||| /     delay
#           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
#              | |       |   ||||       |         |
		 arecord-3574  [007] ....   120.721220: snd_soc_dapm_start: card=AML-MESONAUDIO
		 arecord-3574  [007] ....   120.721247: snd_soc_dapm_path: *Capture <- (direct) <- Right ADC
		 arecord-3574  [007] ....   120.721249: snd_soc_dapm_path: *Right ADC <- (direct) <- Right Input Mixer
		 arecord-3574  [007] ....   120.721251: snd_soc_dapm_path: *Right Input Mixer <- (direct) <- RINPUT3
		 arecord-3574  [007] ....   120.721253: snd_soc_dapm_path: *RINPUT3 <- (direct) <- MAIN MIC
		 arecord-3574  [007] ....   120.721255: snd_soc_dapm_path: *Right Input Mixer <- (direct) <- RINPUT2
		 arecord-3574  [007] ....   120.721256: snd_soc_dapm_path: *RINPUT2 <- (direct) <- MAIN MIC
		 arecord-3574  [007] ....   120.721258: snd_soc_dapm_path:  Right Input Mixer <- Boost Switch <- RINPUT1
		 arecord-3574  [007] ....   120.721259: snd_soc_dapm_path:  Right Input Mixer <- Boost Switch <- Right Boost Mixer
		 arecord-3574  [007] ....   120.721260: snd_soc_dapm_path: *Capture <- (direct) <- Left ADC
		 arecord-3574  [007] ....   120.721262: snd_soc_dapm_path: *Left ADC <- (direct) <- Left Input Mixer
		 arecord-3574  [007] ....   120.721263: snd_soc_dapm_path: *Left Input Mixer <- (direct) <- LINPUT3
		 arecord-3574  [007] ....   120.721265: snd_soc_dapm_path: *LINPUT3 <- (direct) <- MAIN MIC
		 arecord-3574  [007] ....   120.721266: snd_soc_dapm_path: *Left Input Mixer <- (direct) <- LINPUT2
		 arecord-3574  [007] ....   120.721268: snd_soc_dapm_path: *LINPUT2 <- (direct) <- MAIN MIC
		 arecord-3574  [007] ....   120.721269: snd_soc_dapm_path:  Left Input Mixer <- Boost Switch <- LINPUT1
		 arecord-3574  [007] ....   120.721271: snd_soc_dapm_path:  Left Input Mixer <- Boost Switch <- Left Boost Mixer
		 arecord-3574  [007] ....   120.721274: snd_soc_dapm_widget_power: widget=Capture val=1
		 arecord-3574  [007] ....   120.721277: snd_soc_dapm_path: *Right ADC -> (direct) -> Capture
		 arecord-3574  [007] ....   120.721279: snd_soc_dapm_widget_power: widget=Right ADC val=1
		 arecord-3574  [007] ....   120.721280: snd_soc_dapm_path: *Left ADC -> (direct) -> Capture
		 arecord-3574  [007] ....   120.721282: snd_soc_dapm_widget_power: widget=Left ADC val=1
		 arecord-3574  [007] ....   120.721283: snd_soc_dapm_path: *Right Input Mixer -> (direct) -> Right ADC
		 arecord-3574  [007] ....   120.721284: snd_soc_dapm_widget_power: widget=Right Input Mixer val=1
		 arecord-3574  [007] ....   120.721286: snd_soc_dapm_path: *Left Input Mixer -> (direct) -> Left ADC
		 arecord-3574  [007] ....   120.721287: snd_soc_dapm_widget_power: widget=Left Input Mixer val=1
		 arecord-3574  [007] ....   120.721289: snd_soc_dapm_path:  RINPUT3 -> RINPUT3 Switch -> Right Output Mixer
		 arecord-3574  [007] ....   120.721291: snd_soc_dapm_path: *RINPUT3 -> (direct) -> Right Input Mixer
		 arecord-3574  [007] ....   120.721293: snd_soc_dapm_path:  RINPUT3 -> RINPUT3 Switch -> Right Boost Mixer
		 arecord-3574  [007] ....   120.721294: snd_soc_dapm_widget_power: widget=RINPUT3 val=1
		 arecord-3574  [007] ....   120.721295: snd_soc_dapm_path: *RINPUT2 -> (direct) -> Right Input Mixer
		 arecord-3574  [007] ....   120.721297: snd_soc_dapm_path:  RINPUT2 -> RINPUT2 Switch -> Right Boost Mixer
		 arecord-3574  [007] ....   120.721298: snd_soc_dapm_widget_power: widget=RINPUT2 val=1
		 arecord-3574  [007] ....   120.721299: snd_soc_dapm_path:  LINPUT3 -> LINPUT3 Switch -> Left Output Mixer
		 arecord-3574  [007] ....   120.721301: snd_soc_dapm_path: *LINPUT3 -> (direct) -> Left Input Mixer
		 arecord-3574  [007] ....   120.721302: snd_soc_dapm_path:  LINPUT3 -> LINPUT3 Switch -> Left Boost Mixer
		 arecord-3574  [007] ....   120.721304: snd_soc_dapm_widget_power: widget=LINPUT3 val=1
		 arecord-3574  [007] ....   120.721305: snd_soc_dapm_path: *LINPUT2 -> (direct) -> Left Input Mixer
		 arecord-3574  [007] ....   120.721307: snd_soc_dapm_path:  LINPUT2 -> LINPUT2 Switch -> Left Boost Mixer
		 arecord-3574  [007] ....   120.721308: snd_soc_dapm_widget_power: widget=LINPUT2 val=1
		 arecord-3574  [007] ....   120.721309: snd_soc_dapm_path: *MAIN MIC -> (direct) -> RINPUT3
		 arecord-3574  [007] ....   120.721311: snd_soc_dapm_path: *MAIN MIC -> (direct) -> RINPUT2
		 arecord-3574  [007] ....   120.721312: snd_soc_dapm_path: *MAIN MIC -> (direct) -> RINPUT1
		 arecord-3574  [007] ....   120.721313: snd_soc_dapm_path: *MAIN MIC -> (direct) -> LINPUT3
		 arecord-3574  [007] ....   120.721315: snd_soc_dapm_path: *MAIN MIC -> (direct) -> LINPUT2
		 arecord-3574  [007] ....   120.721316: snd_soc_dapm_path: *MAIN MIC -> (direct) -> LINPUT1
		 arecord-3574  [007] ....   120.721317: snd_soc_dapm_widget_power: widget=MAIN MIC val=1
		 arecord-3574  [007] ....   120.721319: snd_soc_dapm_path: *RINPUT1 <- (direct) <- MAIN MIC
		 arecord-3574  [007] ....   120.721321: snd_soc_dapm_path: *LINPUT1 <- (direct) <- MAIN MIC
		 arecord-3574  [007] ....   120.721328: snd_soc_dapm_walk_done: AML-MESONAUDIO: checks 12 power, 21 path, 38 neighbour
		 arecord-3574  [007] ....   120.721334: snd_soc_bias_level_start: card=AML-MESONAUDIO val=1
		 arecord-3574  [007] ....   120.721337: snd_soc_bias_level_done: card=AML-MESONAUDIO val=1
		 arecord-3574  [007] ....   120.721338: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
		 arecord-3574  [007] ....   120.721339: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721416: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721420: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721473: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721474: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721485: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721637: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   120.721939: snd_soc_bias_level_start: card=AML-MESONAUDIO val=3
   kworker/u16:1-58    [005] ....   120.721941: snd_soc_bias_level_done: card=AML-MESONAUDIO val=3
   kworker/u16:1-58    [005] ....   120.721987: snd_soc_bias_level_start: card=AML-MESONAUDIO val=3
   kworker/u16:1-58    [005] ....   120.721988: snd_soc_bias_level_done: card=AML-MESONAUDIO val=3
   kworker/u16:1-58    [005] ....   120.722056: snd_soc_bias_level_start: card=AML-MESONAUDIO val=3
   kworker/u16:1-58    [005] ....   120.722059: snd_soc_bias_level_done: card=AML-MESONAUDIO val=3
		 arecord-3574  [005] ....   120.722095: snd_soc_dapm_done: card=AML-MESONAUDIO
		 arecord-3574  [005] ....   122.222521: snd_soc_dapm_start: card=AML-MESONAUDIO
		 arecord-3574  [005] ....   122.222546: snd_soc_dapm_widget_power: widget=Capture val=0
		 arecord-3574  [005] ....   122.222551: snd_soc_dapm_path: *Right ADC -> (direct) -> Capture
		 arecord-3574  [005] ....   122.222553: snd_soc_dapm_widget_power: widget=Right ADC val=0
		 arecord-3574  [005] ....   122.222554: snd_soc_dapm_path: *Left ADC -> (direct) -> Capture
		 arecord-3574  [005] ....   122.222556: snd_soc_dapm_widget_power: widget=Left ADC val=0
		 arecord-3574  [005] ....   122.222557: snd_soc_dapm_path: *Right Input Mixer -> (direct) -> Right ADC
		 arecord-3574  [005] ....   122.222559: snd_soc_dapm_widget_power: widget=Right Input Mixer val=0
		 arecord-3574  [005] ....   122.222560: snd_soc_dapm_path: *Left Input Mixer -> (direct) -> Left ADC
		 arecord-3574  [005] ....   122.222562: snd_soc_dapm_widget_power: widget=Left Input Mixer val=0
		 arecord-3574  [005] ....   122.222564: snd_soc_dapm_path:  RINPUT3 -> RINPUT3 Switch -> Right Output Mixer
		 arecord-3574  [005] ....   122.222565: snd_soc_dapm_path: *RINPUT3 -> (direct) -> Right Input Mixer
		 arecord-3574  [005] ....   122.222567: snd_soc_dapm_path:  RINPUT3 -> RINPUT3 Switch -> Right Boost Mixer
		 arecord-3574  [005] ....   122.222568: snd_soc_dapm_widget_power: widget=RINPUT3 val=0
		 arecord-3574  [005] ....   122.222570: snd_soc_dapm_path: *RINPUT2 -> (direct) -> Right Input Mixer
		 arecord-3574  [005] ....   122.222571: snd_soc_dapm_path:  RINPUT2 -> RINPUT2 Switch -> Right Boost Mixer
		 arecord-3574  [005] ....   122.222573: snd_soc_dapm_widget_power: widget=RINPUT2 val=0
		 arecord-3574  [005] ....   122.222574: snd_soc_dapm_path:  LINPUT3 -> LINPUT3 Switch -> Left Output Mixer
		 arecord-3574  [005] ....   122.222575: snd_soc_dapm_path: *LINPUT3 -> (direct) -> Left Input Mixer
		 arecord-3574  [005] ....   122.222577: snd_soc_dapm_path:  LINPUT3 -> LINPUT3 Switch -> Left Boost Mixer
		 arecord-3574  [005] ....   122.222579: snd_soc_dapm_widget_power: widget=LINPUT3 val=0
		 arecord-3574  [005] ....   122.222580: snd_soc_dapm_path: *LINPUT2 -> (direct) -> Left Input Mixer
		 arecord-3574  [005] ....   122.222582: snd_soc_dapm_path:  LINPUT2 -> LINPUT2 Switch -> Left Boost Mixer
		 arecord-3574  [005] ....   122.222583: snd_soc_dapm_widget_power: widget=LINPUT2 val=0
		 arecord-3574  [005] ....   122.222585: snd_soc_dapm_path: *MAIN MIC -> (direct) -> RINPUT3
		 arecord-3574  [005] ....   122.222586: snd_soc_dapm_path: *MAIN MIC -> (direct) -> RINPUT2
		 arecord-3574  [005] ....   122.222587: snd_soc_dapm_path: *MAIN MIC -> (direct) -> RINPUT1
		 arecord-3574  [005] ....   122.222589: snd_soc_dapm_path: *MAIN MIC -> (direct) -> LINPUT3
		 arecord-3574  [005] ....   122.222590: snd_soc_dapm_path: *MAIN MIC -> (direct) -> LINPUT2
		 arecord-3574  [005] ....   122.222591: snd_soc_dapm_path: *MAIN MIC -> (direct) -> LINPUT1
		 arecord-3574  [005] ....   122.222593: snd_soc_dapm_widget_power: widget=MAIN MIC val=0
		 arecord-3574  [005] ....   122.222600: snd_soc_dapm_walk_done: AML-MESONAUDIO: checks 10 power, 10 path, 20 neighbour
		 arecord-3574  [005] ....   122.222607: snd_soc_bias_level_start: card=AML-MESONAUDIO val=1
		 arecord-3574  [005] ....   122.222609: snd_soc_bias_level_done: card=AML-MESONAUDIO val=1
   kworker/u16:1-58    [005] ....   122.222683: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   122.222686: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   122.222733: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   122.222734: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   122.222802: snd_soc_bias_level_start: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   122.222813: snd_soc_bias_level_done: card=AML-MESONAUDIO val=2
   kworker/u16:1-58    [005] ....   122.223155: snd_soc_bias_level_start: card=AML-MESONAUDIO val=1
   kworker/u16:1-58    [005] ....   122.223157: snd_soc_bias_level_done: card=AML-MESONAUDIO val=1
   kworker/u16:1-58    [005] ....   122.223203: snd_soc_bias_level_start: card=AML-MESONAUDIO val=1
   kworker/u16:1-58    [005] ....   122.223205: snd_soc_bias_level_done: card=AML-MESONAUDIO val=1
   kworker/u16:1-58    [005] ....   122.223271: snd_soc_bias_level_start: card=AML-MESONAUDIO val=1
   kworker/u16:1-58    [005] ....   122.223387: snd_soc_bias_level_done: card=AML-MESONAUDIO val=1
		 arecord-3574  [005] ....   122.223411: snd_soc_dapm_done: card=AML-MESONAUDIO


khadas@Khadas:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: AMLMESONAUDIO [AML-MESONAUDIO], device 0: I2S wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: AMLMESONAUDIO [AML-MESONAUDIO], device 1: SPDIF dit-hifi-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: AMLMESONAUDIO [AML-MESONAUDIO], device 2: PCM pcm2bt-pcm-2 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
khadas@Khadas:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: AMLMESONAUDIO [AML-MESONAUDIO], device 0: I2S wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: AMLMESONAUDIO [AML-MESONAUDIO], device 1: SPDIF dit-hifi-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: AMLMESONAUDIO [AML-MESONAUDIO], device 2: PCM pcm2bt-pcm-2 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Also I created new sound card (after delete aml_sound_meson) using simple-audio-card:

  wm8960_card {
			compatible = "simple-audio-card";
			simple-audio-card,format = "i2s";
			simple-audio-card,name = "wm8960";
			status = "okay";
						simple-audio-card,mclk-fs = <256>;
			simple-audio-card,widgets =
				"Microphone", "MAIN MIC",
				"Speaker", "Ext Spk";
			simple-audio-card,routing =
				"LINPUT1", "MAIN MIC",
				"LINPUT2", "MAIN MIC",
				"LINPUT3", "MAIN MIC",
				"RINPUT1", "MAIN MIC",
				"RINPUT2", "MAIN MIC",
				"RINPUT3", "MAIN MIC",
								"Ext Spk","SPK_LP",
								"Ext Spk","SPK_LN",
								"Ext Spk","SPK_RP",
								"Ext Spk","SPK_RN";
			simple-audio-card,cpu {
				sound-dai = <&i2s_dai>;
			};
						simple-audio-card,plat {
				sound-dai = <&i2s_plat>;
			};
			dailink0_slave: simple-audio-card,codec {
				sound-dai = <&wm8960_codec>;
				clocks = <&wm8960_mclk>;
				clock-names = "mclk";
			};
		};

wm8960_mclk: wm8960_mclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <12000000>;
		};

i2s_plat: i2s_platform {
				#sound-dai-cells = <0>;
				compatible = "amlogic, aml-i2s";
				interrupts = <0 29 1>;
		};

But again: new sound card is appear, but capture and playback is not working.