Hello Baozhu,
I am trying to configure Jetson nano with respeaker 4 mic array V1.0(AC108).
I have connected repeaker board on jetson nano’s 40-pin Expansion Header.
I have created DTS file for 4-mic array V1.0 with reference of 2-mic array which is successfully running on nano[0].
I have attached(later in this post) 2 dts [File_1 and File_2] files for 4mic.
Could not attach dmesg log so 2 log-prints mention below.
Prints from dmesg:
tegra-i2c 7000c400.i2c: no acknowledge from address 0x3b
snd_soc_seeed_voicecard: loading out-of-tree module taints kernel.
jetson@jetson-desktop:~$ lsmod
Module Size Used by
fuse 103841 3
zram 26166 4
overlay 48691 0
spidev 13282 0
snd_soc_wm8960 41957 0
snd_soc_ac108 65570 0
snd_soc_seeed_voicecard 11255 1 snd_soc_ac108
nvgpu 1575721 18
bluedroid_pm 13912 0
ip_tables 19441 0
x_tables 28951 1 ip_tables
jetson@jetson-desktop:~$
jetson@jetson-desktop:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
jetson@jetson-desktop:~$
File_1: jetson-seeed-4mic-ac108.dts
/dts-v1/;
/plugin/;
#include <dt-bindings/pinctrl/tegra210-p3448-0000-p3449-0000-a02.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
/ {
overlay-name = "Seeed Voice Card 4MIC";
compatible = JETSON_COMPATIBLE;
fragment@0 {
target-path = "/";
__overlay__ {
clocks {
ac108_mclk: ac108_mclk {
compatible = "fixed-clock";
#clock-cells = <0x0>;
clock-frequency = <24000000>;
clock-output-names = "ac108-mclk";
status = "okay";
};
};
};
};
fragment@1 {
target = <&hdr40_i2c1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
ac108_a: ac108@3b {
#sound-dai-cells = <0x0>;
data-protocol = <0x0>;
compatible = "x-power,ac108_0";
status = "okay";
reg = <0x3b>;
clocks = <&ac108_mclk>;
clock-names = "mclk";
};
};
};
fragment@2 {
target = <&tegra_sound>;
__overlay__ {
compatible = "seeed-voicecard";
seeed-voice-card,format = "dsp_a";
seeed-voice-card,name = "seeed-4mic-voicecard";
status = "okay";
seeed-voice-card,bitclock-master = <&codec_dai>;
seeed-voice-card,frame-master = <&codec_dai>;
seeed-voice-card,channels-playback-override = <4>;
seeed-voice-card,channels-capture-override = <4>;
cpu_dai: seeed-voice-card,cpu {
sound-dai = <&hdr40_snd_link_i2s>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
dai-tdm-slot-tx-mask = <1 1 0 0>;
dai-tdm-slot-rx-mask = <1 1 0 0>;
};
codec_dai: seeed-voice-card,codec {
sound-dai = <&ac108_a>;
clocks = <&ac108_mclk>;
};
};
};
fragment@3 {
target = <&hdr40_snd_link_i2s>;
__overlay__ {
link-name = "seeed-voicecard-4mic";
#sound-dai-cells = <0x0>;
codec-dai = <&ac108_a>;
codec-dai-name = "ac108_a";
bitclock-master;
frame-master;
};
};
fragment@4 {
target = <&pinmux>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&hdr40_pinmux>;
hdr40_pinmux: header-40pin-pinmux {
pin12 {
nvidia,pins = HDR40_PIN12;
nvidia,function = HDR40_I2S;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin35 {
nvidia,pins = HDR40_PIN35;
nvidia,function = HDR40_I2S;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin38 {
nvidia,pins = HDR40_PIN38;
nvidia,function = HDR40_I2S;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin40 {
nvidia,pins = HDR40_PIN40;
nvidia,function = HDR40_I2S;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
};
};
};
};
File_2: jetson-seeed-4mic-voicecard.dts
#include <jetson-seeed-4mic-ac108.dts>
/ {
fragment@10 {
target = <&pinmux>;
__overlay__ {
header-40pin-pinmux {
pin19 {
nvidia,pins = "spi1_mosi_pc0";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin21 {
nvidia,pins = "spi1_miso_pc1";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin23 {
nvidia,pins = "spi1_sck_pc2";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin24 {
nvidia,pins = "spi1_cs0_pc3";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
pin26 {
nvidia,pins = "spi1_cs1_pc4";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
#if 0
pin27 {
nvidia,pins = "gen1_i2c_sda_pj0";
nvidia,function = "i2c1" /* "rsvd1" */;
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_ENABLE>;
};
pin28 {
nvidia,pins = "gen1_i2c_scl_pj1";
nvidia,function = "i2c1" /* "rsvd1" */;
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_ENABLE>;
};
#endif
};
};
};
};
L4T Version:
R32 (release), REVISION: 3.1
Jetson nano B01
Any help much appreciated.
[0] https://github.com/Seeed-Studio/seeed-linux-dtoverlays