i.MX8QXP提供两个发送/接收串行音频接口(SAI)和另外两个仅接收串行音频接口。

ConnectCore 8X SBC Pro, SAI0接口连接Maxim 98089低功耗立体声编解码器,具有以下特点:

  • 模拟输入:线进A,线进B,麦克风:

    • 两个在线音频输入通过LINE1_IN_LINE2_IN_膨胀连接器的线路。

    • 麦克风通过音频输入MIC_膨胀连接器的线路。

  • 模拟输出:线路输出,耳机,扬声器:

    • 线路输出音频通过LINE_OUT_膨胀连接器的线路。

    • 耳机音频输出通过板载插孔连接器。

    • 扬声器音频输出通过SPKL_SPKR_膨胀连接器的线路。

  • 数字输入/输出多格式音频接口。

  • 数字处理,滤波器,音量控制,放大器。

编解码器是CPU通过ConnectCore 8X片上系统的SAI0端口控制的从芯片。CPU使用ic间声音总线标准(I2S)驱动音频数据。

由于没有自动检测耳机插孔连接,系统总是通过所有输出接口播放音频。

所有的音频输出都通过这个编解码器输出,并且可以使用一对扬声器或耳机进行复制。

内核配置

您可以通过以下内核配置选项来管理音频驱动程序支持:

  • SoC音频NXP i.MX cpu(CONFIG_SND_IMX_SOC)

  • SoC音频支持与max98088/max98089 i.MX板(CONFIG_SND_SOC_IMX_MAX98088)

这些选项在默认情况下是内置的ConnectCore 8X内核配置文件

内核驱动程序

音频接口和MAX98089编解码器的驱动程序位于:

文件 描述

声音/ soc /目前/ fsl_sai.c

赛的司机

声音/ soc /目前/ snd-soc-imx-max98088.c

驱动程序接口与编解码器

声音/ soc /编解码器/ max98088.c

MAX98088/9编解码器驱动程序

设备树绑定和自定义

SAI和编解码器之间的接口记录在文档/ devicetree /绑定/声音/ imx-audio-max98088.txt

MAX98088/9编解码器的文档位于文档/ devicetree /绑定/声音/ max98088.txt

设备树必须包含以下条目:

  • SAI接口

  • SAI和音频编解码器之间的接口

  • 音频编解码器

例如:ConnectCore 8X SBC Pro上的SAI0

SAI的定义

i.MX8QXP设备树
[…]sai0: sai@59040000 { compatible = "fsl,imx8qm-sai"; reg = <0x0 0x59040000 0x0 0x10000>; interrupts = ; clocks = <&clk IMX8QXP_AUD_SAI_0_IPG>, <&clk IMX8QXP_CLK_DUMMY>, <&clk IMX8QXP_AUD_SAI_0_MCLK>, <&clk IMX8QXP_CLK_DUMMY>, <&clk IMX8QXP_CLK_DUMMY>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dma-names = "rx", "tx"; dmas = <&edma0 12 0 1>, <&edma0 13 0 0>; status = "disabled"; power-domains = <&pd_sai0>; }; [...]
ConnectCore 8X SBC Pro设备树
&sai0 {assign -clocks = <&clk IMX8QXP_AUD_PLL0_DIV>, <&clk IMX8QXP_AUD_ACM_AUD_REC_CLK0_DIV>, <&clk imx8qxp_aud_aud_sai_0_mclk >;Assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;Pinctrl-names = "default";pintrl -0 = <& pintrl_sai0 >;状态= "ok ";};[…]/* IOMUX */ &iomuxc { [...] pinctrl_sai0: sai0grp { fsl,pins = < SC_P_SAI0_RXD_ADMA_SAI0_RXD 0x06000040 SC_P_SAI0_TXD_ADMA_SAI0_TXD 0x06000060 SC_P_SAI0_TXFS_ADMA_SAI0_TXFS 0x06000040 SC_P_SAI0_TXC_ADMA_SAI0_TXC 0x06000040 SC_P_SPI3_CS0_ADMA_ACM_MCLK_OUT1 0x06000040 >; }; [...] };

SAI与音频编解码器的接口

ConnectCore 8X SBC Pro设备树
[…]sound_max98089: sound-max98089 { compatible = "fsl,imx-audio-max98088"; model = "imx-max98088"; cpu-dai = <&sai0>; audio-codec = <&max98089>; asrc-controller = <&asrc0>; audio-routing = "Headphone Jack", "HPL", "Headphone Jack", "HPR", "Ext Spk", "SPKL", "Ext Spk", "SPKR", "LineOut", "RECL", "LineOut", "RECR", "Mic1", "MIC1", "Mic2", "MIC2", "LineInA", "INA1", "LineInA", "INA2", "LineInB", "INB1", "LineInB", "INB2"; status = "okay"; }; [...] &asrc0 { fsl,asrc-rate = <48000>; };

音频编解码器(I2C3从机)

ConnectCore 8X SBC Pro设备树
&i2c3{[…] max98089: codec@10 {compatible = "maxim,max98089";Reg = <0x10>;时钟= <&clk IMX8QXP_AUD_MCLKOUT1>;时钟名称= "mclk";Power-domains = <&pd_mclk_out1>;Vcc-supply = <®_3v3_audio>;dvd -supply = <®_1v8_ext>;指定时钟= <&clk IMX8QXP_AUD_PLL0_DIV>, <&clk IMX8QXP_AUD_ACM_AUD_REC_CLK0_DIV>, <&clk IMX8QXP_AUD_MCLKOUT1>;Assigned-clock-rates = <786432000>, <49152000>, <12288000>, <12288000>; status = "okay"; }; [...] };