Hello, I'm currently doing audio things at my IMX8MM board. The followings are my HW connections.
i.MX8MM <----> adau7002(PDM to I2S) <----> ICS-41351(PDM MIC)
I refered almost everthing with the post 'https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-configuring-adau7002-device-doesn-t-work/m-p/12... but I think there's some difference at pinctrl group.
In HW Connection between i.MX8MM and adau7002, there's just a 3 pin which is Data, Frame Sync, Bit Clock. Even though there is no MCLK, I set MCLK at pinctrl group.
The followings are what I did in my dts.
sound_adau7002: sound-adau7002 {
  compatible = "simple-audio-card";
  simple-audio-card,name = "adau7002";
  simple-audio-card,format = "i2s";
  simple-audio-card,widgets = "Microphone", "Microphone Jack";
simple-audio-card,routing =
  "Capture", "PDM_DAT" ,
  "Capture", "IOVDD" ;
// The SSI2 is the I2S master.
  simple-audio-card,bitclock-master = <&dailink_master>;
  simple-audio-card,frame-master = <&dailink_master>;
status = "okay";
dailink_master: simple-audio-card,cpu {
  sound-dai = <&sai3>;
};
dailink_slave: simple-audio-card,codec {
  sound-dai = <&adau7002>;
  clocks = <&clk IMX8MM_CLK_SAI3_ROOT>;
};
};
adau7002: pdm-to-i2s {
  #sound-dai-cells = <0>;
  #address-cells = <0>;
  #size-cells = <0>;
  compatible = "adi,adau7002";
  status = "okay";
};
&sai3 {
  pinctrl-names = "default";
  pinctrl-0 = <&pinctrl_sai3>;
  assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
  assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
  assigned-clock-rates = <4800000>;
  status = "okay";
};
pinctrl_sai3: sai3grp {
  fsl,pins = <
    /*MX8MM_IOMUXC_SAI3_RXFS_SAI3_RX_SYNC 0xd6
    MX8MM_IOMUXC_SAI3_RXC_SAI3_RX_BCLK 0xd6
    MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6*/
    MX8MM_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6
    MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6
    MX8MM_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0xd6
    MX8MM_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6
    >;
};
I failed to initialize adau7002 device driver with this message "/sound-adau7002/simple-audio-card,cpu: could not get $sound-dai-cells for /sai@30030000".
From the viewpoint of I.MX8MM, I.MX8MM provides Frame Sync, Bit Clock and receive Data from adau7002, so I used MX8MM_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC, MX8MM_IOMUXC_SAI3_TXC_SAI3_TX_BCLK for Frame Sync and Bit Clock + MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 for received data.
Please tell me which point should I correct.
Thanks.
Solved! Go to Solution.
Hi
for simple-audio-card example one can look on
Also may be useful Chapter 16 Porting Audio Codecs i.MX Porting Guide
Best regards
igor
Hi
for simple-audio-card example one can look on
Also may be useful Chapter 16 Porting Audio Codecs i.MX Porting Guide
Best regards
igor