Custom carrier board tas5805m I2S codec not work

Hi nvidia,

I am working for tas5805m I2S codec driver on our custom carrier board.

I am using Jetson Orin Nano Jetpack 7.2

The driver source code is from: GitHub - jpvc36/TAS5805m · GitHub

tegra234-p3768-0000.dtsi:

/ {
bus@0 {

//		aconnect@2900000 {
//			ahub@2900800 {
//				i2s@2901100 {
//                    status = "okay";
//					ports {
//						port@1 {
//							endpoint {
//                                dai-format = "i2s";
//								remote-endpoint = <&tas5805m_ep>;
//							};
//						};
//					};
//				};
//			};
//		};

    hdr40_i2c1: i2c@c250000 {
        status = "okay";
        tas5805m: audio-codec@2c {
            compatible = "ti,tas5805m";
            reg = <0x2c>;
            #sound-dai-cells = <0>;
            ti,dsp-config-name = "default";
            sound-name-prefix = "TAS";
            status = "okay";
            port {
                tas5805m_ep: endpoint {
                    remote-endpoint = <&i2s2_dap>;
                    mclk-fs = <256>;
                };
            };
        };
    };
};

tegra_sound: sound {
	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_AUD_MCLK>;
	assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;

    mclk-fs = <256>;

    widgets = "Speaker", "TAS SPK";

    routing =
        "TAS DAC IN",        "I2S2 DAP-Playback",
        "TAS SPK",           "TAS OUT";
};

};

&tegra_i2s2 {
status = "okay";
};

&i2s2_dap {
remote-endpoint = <&tas5805m_ep>;
};

when I execute below commands, there is no any sound.

amixer -c APE sset 'TAS Master' 80%
amixer -c APE cset name='I2S2 Sample Rate' 48000
amixer -c APE cset name='I2S2 Sample Bits' 32
amixer -c APE cset name='I2S2 Mux' 'ADMAIF1'

speaker-test -D hw:1,0 -c 2 -r 48000 -F S32_LE -t sine

And I found only set_fmt callback in snd_soc_dai_ops will be called, trigger and hw_params will never be called.

Attached zip include sch, pinmux, driver source code and dmesg log.

Could you give me some advice?

Thanks.

debug_tas5805m.zip (624.8 KB)

Due to tas5805m_hw_params will never be called, I also tried to hard code the rate to 48k, and schedule work when received SND_SOC_DAPM_POST_PMU event. But still no sound. :(

Hi,

The issue seems to be with incorrect routing / widget properties and missing TAS codec mixer control settings.

You can refer to these similar issues:

Additionally, please make sure you add the I2S2 DAP entries in routing like below:

routing =
" Playback", “I2S2 DAP-Playback”,
“I2S2 DAP-Capture”, " Capture",

Please note that these queries are using OOT Tegra drivers. Hence, for DT properties, please refer to our Rel-39 BSP documentation as it differs: