Orin nx, sdk:7.2.1, ubuntu24.04, es8389配置:
dts为:
&pinmux {
status = “okay”;
i2s2_default: i2s2_default {
sclk_pin {
nvidia,pins = "soc_gpio41_ph7";
nvidia,function = "i2s2";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
dout_pin {
nvidia,pins = "soc_gpio42_pi0";
nvidia,function = "i2s2";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
fs_pin {
nvidia,pins = "soc_gpio44_pi2";
nvidia,function = "i2s2";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
din_pin {
nvidia,pins = "soc_gpio43_pi1";
nvidia,function = "i2s2";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
mclk_pin {
nvidia,pins = "soc_gpio59_pac6";
nvidia,function = "aud";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,gpio-mode = <TEGRA_PIN_DISABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,schmitt = <TEGRA_PIN_ENABLE>;
nvidia,drive-type = <0>;
};
};
};
&gen1_i2c {
status = “okay”;
clock-frequency = <100000>;
es8389: es8389@10 {
compatible = "everest,es8389";
reg = <0x10>;
#sound-dai-cells = <0>;
status = "okay";
sound-name-prefix = "ES8389";
clocks = <&bpmp TEGRA234_CLK_AUD_MCLK>;
clock-names = "mclk";
AVDD-supply = <&vdd_3v3_audio>;
DVDD-supply = <&vdd_1v8_audio>;
PVDD-supply = <&vdd_1v8_audio>;
es8389_port: port@0 {
reg = <0>;
es8389_ep: endpoint {
reg = <0>;
remote-endpoint = <&i2s2_dap>;
link-name = "es8389-playback";
};
};
};
};
&tegra_i2s2 {
status = “okay”;
#sound-dai-cells = <1>;
pinctrl-names = “default”;
pinctrl-0 = <&i2s2_default>;
assigned-clocks = <&bpmp TEGRA234_CLK_I2S2>;
assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
sound-name-prefix = “I2S2”;
};
&i2s2_dap {
remote-endpoint = <&es8389_ep>;
dai-format = “i2s”;
bitclock-master;
frame-master;
};
&tegra_sound {
compatible = “nvidia,tegra186-audio-graph-card”;
status = “okay”;
label = “NVIDIA Jetson Orin ES8389”;
clocks = <&bpmp TEGRA234_CLK_PLLA>,
<&bpmp TEGRA234_CLK_PLLA_OUT0>,
<&bpmp TEGRA234_CLK_AUD_MCLK>;
clock-names = "pll_a", "plla_out0", "extern1";
assigned-clocks = <&bpmp TEGRA234_CLK_PLLA>,
<&bpmp TEGRA234_CLK_PLLA_OUT0>,
<&bpmp TEGRA234_CLK_AUD_MCLK>;
assigned-clock-parents = <0>,
<&bpmp TEGRA234_CLK_PLLA>,
<&bpmp TEGRA234_CLK_PLLA_OUT0>;
assigned-clock-rates = <983040000>,
<49152000>,
<12288000>;
nvidia-audio-card,name = "NVIDIA Jetson AGX Orin APE";
dais = /* ADMAIF (FE) Ports */
<&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
<&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>,
<&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>,
<&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>,
<&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>,
/* XBAR Ports */
<&xbar_i2s2_port>, <&xbar_i2s4_port>,
<&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
<&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
<&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
<&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
<&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
<&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
<&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
<&xbar_amx3_in1_port>, <&xbar_amx3_in2_port>,
<&xbar_amx3_in3_port>, <&xbar_amx3_in4_port>,
<&xbar_amx4_in1_port>, <&xbar_amx4_in2_port>,
<&xbar_amx4_in3_port>, <&xbar_amx4_in4_port>,
<&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
<&xbar_adx3_in_port>, <&xbar_adx4_in_port>,
<&xbar_mix_in1_port>, <&xbar_mix_in2_port>,
<&xbar_mix_in3_port>, <&xbar_mix_in4_port>,
<&xbar_mix_in5_port>, <&xbar_mix_in6_port>,
<&xbar_mix_in7_port>, <&xbar_mix_in8_port>,
<&xbar_mix_in9_port>, <&xbar_mix_in10_port>,
<&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>,
<&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>,
<&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>,
<&xbar_asrc_in7_port>,
<&xbar_ope1_in_port>,
/* HW accelerators */
<&sfc1_out_port>, <&sfc2_out_port>,
<&sfc3_out_port>, <&sfc4_out_port>,
<&mvc1_out_port>, <&mvc2_out_port>,
<&amx1_out_port>, <&amx2_out_port>,
<&amx3_out_port>, <&amx4_out_port>,
<&adx1_out1_port>, <&adx1_out2_port>,
<&adx1_out3_port>, <&adx1_out4_port>,
<&adx2_out1_port>, <&adx2_out2_port>,
<&adx2_out3_port>, <&adx2_out4_port>,
<&adx3_out1_port>, <&adx3_out2_port>,
<&adx3_out3_port>, <&adx3_out4_port>,
<&adx4_out1_port>, <&adx4_out2_port>,
<&adx4_out3_port>, <&adx4_out4_port>,
<&mix_out1_port>, <&mix_out2_port>, <&mix_out3_port>,
<&mix_out4_port>, <&mix_out5_port>,
<&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>,
<&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>,
<&ope1_out_port>,
/* BE I/O Ports */
<&i2s2_port>;
widgets =
"Headphone", "ES8389 Headphone Jack",
"Speaker", "ES8389 Speaker Jack",
"Microphone", "ES8389 Mic Jack";
routing =
"ES8389 Playback", "I2S2 DAP-Playback",
"I2S2 DAP-Capture", "ES8389 Capture",
"ES8389 Headphone Jack", "ES8389 HPOL",
"ES8389 Headphone Jack", "ES8389 HPOR",
"ES8389 Speaker Jack", "ES8389 HPOL",
"ES8389 Speaker Jack", "ES8389 HPOR",
"ES8389 INPUT1", "ES8389 Mic Jack",
"ES8389 INPUT2", "ES8389 Mic Jack";
};
&tegra_ahub {
status = “okay”;
};
&admaif2_port {
status = “okay”;
};
&i2s2_port {
status = “okay”;
};
&agic {
status = “okay”;
power-domains = <&bpmp TEGRA234_POWER_DOMAIN_AUD>;
};
&adma {
status = “okay”;
};
&tegra_admaif {
status = “okay”;
};
声卡能创建成功:
root@wel-tegra:/home/wel# cat /proc/asound/cards
0 [HDA ]: tegra-hda - NVIDIA Jetson Orin NX HDA
NVIDIA Jetson Orin NX HDA at 0x3518000 irq 207
1 [ES8389 ]: tegra-ape - NVIDIA Jetson Orin ES8389
NVIDIA-NVIDIAJetsonOrinNXEngineeringReferenceDeveloperKit-NotSpecified-Jetson
root@wel-tegra:/home/wel# dmesg | grep -i “ASoC|es8389|i2s2|audio-graph|2901100”
[ 10.106260] Enter into es8389_i2c_probe
[ 10.107735] es8389 0-0010: es8389_i2c_probe() chip id 0x83 89
[ 10.107783] Enter into es8389_i2c_probe-----4
[ 10.107791] Exit es8389_i2c_probe
[ 10.971880] wel-dbg: snd_soc_find_dai: comp=es8389.0-0010 dai=ES8389 HiFi
[ 10.971892] wel-dbg: snd_soc_find_dai: comp=es8389.0-0010 dai=ES8389 HiFi
[ 10.973623] wel-dbg: snd_soc_find_dai: comp=es8389.0-0010 dai=ES8389 HiFi
[ 11.001809] Enter into es8389_probe()
[ 11.025610] es8389 0-0010: es8389_set_dai_sysclk: clk_id=0, freq=12287988, dir=0, old=0
[ 11.025624] Enter into es8389_set_dai_fmt(), fmt=0x4001
[ 11.026093] es8389_set_dai_fmt() REG01 before = 0xe0, fmt=0x4001
[ 11.026999] es8389_set_dai_fmt() REG01 after = 0xe0, fmt=0x4001
[ 11.030776] tegra-audio-graph-card sound: ASoC: sink widget ES8389 Playback overwritten
[ 11.034033] tegra-audio-graph-card sound: ASoC: source widget ES8389 Capture overwritten
[ 11.043098] debugfs: File ‘ES8389 Playback’ in directory ‘dapm’ already present!
[ 11.044096] debugfs: File ‘ES8389 Capture’ in directory ‘dapm’ already present!
[ 11.071014] tegra-audio-graph-card sound: Registered APE graph sound card with DPCM links for AHUB
[ 20.974467] Enter into es8389_pcm_hw_params(), rate=48000, sysclk=12287988
[ 20.976085] es8389: hw_params coeff=50
[ 20.998101] Enter into es8389_set_bias_level(), level = 1
[ 20.998109] es8389_set_bias_level standby
[ 21.071802] Enter into es8389_set_bias_level(), level = 2
[ 21.071813] es8389_set_bias_level prepare
[ 21.071856] Enter into es8389_set_bias_level(), level = 3
[ 21.071861] es8389_set_bias_level on
[ 21.139796] es8389 0-0010: es8389: CSM started successfully (retry 0)
[ 21.140171] Enter into es8389_mute(), mute = 0
[ 21.142026] Enter into es8389_mute(), mute = 1
[ 21.143715] Enter into es8389_set_bias_level(), level = 2
[ 21.143728] es8389_set_bias_level prepare
[ 21.143761] Enter into es8389_set_bias_level(), level = 1
[ 21.143772] es8389_set_bias_level standby
[ 21.217510] Enter into es8389_set_bias_level(), level = 0
[ 21.217528] es8389_set_bias_level off
[ 21.221378] Enter into es8389_pcm_hw_params(), rate=48000, sysclk=12287988
[ 21.222350] es8389: hw_params coeff=50
[ 21.229376] Enter into es8389_set_bias_level(), level = 1
[ 21.229389] es8389_set_bias_level standby
[ 21.303108] Enter into es8389_set_bias_level(), level = 2
[ 21.303127] es8389_set_bias_level prepare
[ 21.303176] Enter into es8389_set_bias_level(), level = 3
[ 21.303183] es8389_set_bias_level on
[ 21.375823] es8389 0-0010: es8389: CSM started successfully (retry 0)
[ 21.376221] Enter into es8389_mute(), mute = 0
[ 21.378582] Enter into es8389_mute(), mute = 1
[ 21.379740] Enter into es8389_set_bias_level(), level = 2
[ 21.379751] es8389_set_bias_level prepare
[ 21.379783] Enter into es8389_set_bias_level(), level = 1
[ 21.379788] es8389_set_bias_level standby
[ 21.453492] Enter into es8389_set_bias_level(), level = 0
[ 21.453505] es8389_set_bias_level off
…
但无声音出来,测量信号
r360电阻为0,电压为0
在1与3测量波形,没I2S0_MCLK有波形输出
执行speaker-test -D hw:ES8389,1 -c 2 -r 48000 -t sine时:
root@wel-tegra:/home/wel# cat /sys/kernel/debug/clk/clk_summary | grep -E “i2s2|aud_mclk|plla_out0|ahub”
i2s2_sync_input 0 0 0 1536000 0 0 50000 Y 2901100.i2s sync_input
i2s2_sync_clk 0 0 0 0 0 0 50000 Y deviceless no_connection_id
plla_out0 2 2 0 49152000 0 0 50000 Y sound plla_out0
i2s2 1 1 0 1536000 0 0 50000 Y i2s@2901100 no_connection_id
aud_mclk 2 2 0 12288000 0 0 50000 Y 0-0010 mclk
ahub 2 2 0 81600000 0 0 50000 Y ahub@2900800 no_connection_id
是哪里配置有问题?


