Audio codec RT5659 on Jetson Nano eMMC with custom carrier board

Hi all,

We are developing AI box using Jetson nano eMMC card and customize carrier board but the audio is not working. Our design and configuration is described below:

We have modified some dts files. However there are some problems with I2C and I2S configuration.

tegra210-porg-super-module-e2614.dtsi

		e2614_rt5658_a00: rt5659.1-001a@1a {
			compatible = "realtek,rt5658";
			reg = <0x1a>;
			status = "okay";

			/ gpio for jack detection /
			gpios = <&gpio TEGRA_GPIO(B, 6) 0>;

			/ refer include/sound/rt5659.h for the values to be used /
			realtek,jd-src = <1>; / RT5659_JD3 /
			realtek,dmic1-data-pin = <2>; / RT5659_DMIC1_DATA_GPIO5 /
		};

tegra210-porg-p3448-common.dtsi

	tegra_sound: sound {
		status = "okay";
		compatible = "nvidia,tegra-audio-t210ref-mobile-rt565x";
		nvidia,model = "tegra-snd-t210ref-mobile-rt565x";

		clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
			 <&tegra_car TEGRA210_CLK_PLL_A_OUT0>,
			 <&tegra_car TEGRA210_CLK_EXTERN1>;
		clock-names = "pll_a", "pll_a_out0", "extern1";
		assigned-clocks = <&tegra_car TEGRA210_CLK_EXTERN1>;
		assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;

		nvidia,num-codec-link = <4>;

		nvidia,audio-routing =
			"x Headphone",	"x OUT",
			"x IN",		"x Mic",
			"y Headphone",	"y OUT",
			"y IN",		"y Mic",
			"a IN",		"a Mic",
			"b IN",		"b Mic";

		nvidia,xbar = <&tegra_axbar>;
		mclk-fs = <256>;

		hdr40_snd_link_i2s: i2s_dai_link1: nvidia,dai-link-1 {
			link-name = "spdif-dit-0";
			cpu-dai = <&tegra_i2s4>;
			codec-dai = <&spdif_dit0>;
			cpu-dai-name = "I2S4";
			codec-dai-name = "rt5659-aif1";
			format = "i2s";
			bitclock-slave;
			frame-slave;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			srate = <48000>;
			num-channel = <2>;
			ignore_suspend;
			name-prefix = "x";
			status = "okay";
		};

tegra-platforms-audio-dai-links.dtsi

	tegra_sound: sound {
		status = "okay";
		nvidia,num-codec-link = <12>;
		nvidia,num-clk = <8>;
		nvidia,clk-rates = < 270950400	/ PLLA_x11025_RATE /
				     11289600	/ AUD_MCLK_x11025_RATE /
				     45158400	/ PLLA_OUT0_x11025_RATE /
				     45158400	/ AHUB_x11025_RATE /
				     245760000  / PLLA_x8000_RATE /
				     12288000	/ AUD_MCLK_x8000_RATE /
				     49152000	/ PLLA_OUT0_x8000_RATE /
				     49152000 >;/ AHUB_x8000_RATE /

		nvidia,xbar = <&tegra_axbar>;

		nvidia,dai-link-1 {
			link-name = "spdif-dit-0";
			cpu-dai = <&tegra_i2s1>;
			codec-dai = <&spdif_dit0>;
			cpu-dai-name = "I2S4";
			codec-dai-name = "rt5659-aif1";
			format = "i2s";
			bit-format = "s16_le";
			srate = <48000>;
			num-channel = <2>;
			ignore_suspend;
			name-prefix = "x";
			status = "okay";
		};

tegra210-porg-pinmux-p3448-0002-b00.dtsi

		gen3_i2c_scl_pf0 {
			nvidia,pins = "gen3_i2c_scl_pf0";
			nvidia,function = "i2c3";
			nvidia,pull = <TEGRA_PIN_PULL_NONE>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
		};

		gen3_i2c_sda_pf1 {
			nvidia,pins = "gen3_i2c_sda_pf1";
			nvidia,function = "i2c3";
			nvidia,pull = <TEGRA_PIN_PULL_NONE>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
		};

		dap4_din_pj5 {
			nvidia,pins = "dap4_din_pj5";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

		dap4_dout_pj6 {
			nvidia,pins = "dap4_dout_pj6";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

		dap4_fs_pj4 {
			nvidia,pins = "dap4_fs_pj4";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

		dap4_sclk_pj7 {
			nvidia,pins = "dap4_sclk_pj7";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

Boot up log:

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.9.140-tegra (buildbrain@mobile-u64-4263) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05) ) #1 SM0
[    0.000000] Boot CPU: AArch64 Processor [411fd071]
[    0.000000] OF: fdt:memory scan node memory@80000000, reg size 48,
[    0.000000] OF: fdt: - 80000000 ,  7ee00000
[    0.000000] OF: fdt: - 100000000 ,  7f200000
[    0.000000] Found tegra_fbmem: 00800000@92cb4000
[    0.000000] earlycon: uart8250 at MMIO32 0x0000000070006000 (options '')
[    0.000000] bootconsole [uart8250] enabled
[    1.099380] tegradc tegradc.1: dpd enable lookup fail:-19
[    1.119968] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.126443] tegradc tegradc.1: dp: Failed for I2C write addr:80, size:1, stat:0x10000100
[    1.147514] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.153824] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.167158] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.173446] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.186777] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.193067] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.206416] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.212705] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.221003] tegradc tegradc.1: dp: failed to exit panel power save mode (0xfffffff2)
[    1.262583] imx219 7-0010: imx219_board_setup: error during i2c read probe (-121)
[    1.262611] imx219 7-0010: board setup failed
[    1.286405] imx219 8-0010: imx219_board_setup: error during i2c read probe (-121)
[    1.286435] imx219 8-0010: board setup failed
[    1.342820] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.342823] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.347841] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.347844] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.357674] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.357677] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.362703] tegradc tegradc.1: dp: aux write got error (0x10000100)
[    1.362706] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[    1.362709] tegradc tegradc.1: dp: failed to exit panel power save mode (0xfffffff2)
[    1.362713] hpd: edid read prepare failed
[    1.672460] rt5659 1-001a: Device with ID register ffffff80 is not rt5659
[    1.699746] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    1.706633] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.741467] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    1.748478] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.756870] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    1.763752] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.794773] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    1.801658] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    2.275373] cgroup: cgroup2: unknown option "nsdelegate"
[    2.445031] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    2.451945] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    2.487899] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    2.494781] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    2.655152] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    2.662505] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    2.672876] tegra-asoc: sound: ASoC: CODEC DAI rt5659-aif1 not registered
[    2.679795] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    3.520456] using random self ethernet address
[    3.550005] using random host ethernet address
[    4.024798] random: crng init done
[    4.028230] random: 7 urandom warning(s) missed due to ratelimiting
[    4.341936] using random self ethernet address
[    4.349612] using random host ethernet address

Do people have any suggestion for us ??

You should rather ask this in the Jetson forum
https://forums.developer.nvidia.com/c/agx-autonomous-machines/jetson-embedded-systems/jetson-nano/76
This one is mostly about the x86 graphics driver.

1 Like

thanks. I have moved the topic!