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编解码器的驱动程序位于:
文件 | 描述 |
---|---|
赛的司机 |
|
驱动程序接口与编解码器 |
|
MAX98088/9编解码器驱动程序 |
设备树绑定和自定义
SAI接口的文档位于文档/ devicetree /绑定/声音/ fsl-sai.txt.
SAI和编解码器之间的接口记录在文档/ devicetree /绑定/声音/ imx-audio-max98088.txt.
MAX98088/9编解码器的文档位于文档/ devicetree /绑定/声音/ max98088.txt.
设备树必须包含以下条目:
SAI接口
SAI和音频编解码器之间的接口
音频编解码器
例如:ConnectCore 8X SBC Pro上的SAI0
SAI的定义
[…]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>; }; [...]
&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与音频编解码器的接口
[…]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从机)
&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"; }; [...] };