Rockchip RK3399 - HDMI音频

----------------------------------------------------------------------------------------------------------------------------

开发板 :NanoPC-T4开发板eMMC :16GBLPDDR3 :4GB显示屏 :15.6英寸HDMI接口显示屏u-boot :2023.04linux   :6.3----------------------------------------------------------------------------------------------------------------------------

在前面的章节我们已经介绍了machine驱动(simple-audio-card)、platform驱动(i2s)、以及codec驱动(Realtek ALC5651),并测试了通过耳机进行音频的输出。

如果我们想通过HDMI接口进行音频输出的话,我们应该怎么做呢?

我们知道音频驱动主要由三部分组成、machine、platform、codec,这里我们仅仅是更换了codec,将ALC5651更换为了HDMI,其他的并没有什么变化,因此我们只需要进行少量的调整就可以实现通过HDMI进行音频的输出。

一、I2S2接口

我们在Rockchip RK3399 - ALC5651 & I2S基础说过RK3399的I2S2模块,其连接到HDMI和DP的音频接口,支持8通道音频数据传输。

I2S2与HDMI连接(这些引脚没有对外暴露,所以是看不到的):

引脚引脚(I2S2) 方向 功能引脚(HDMI) 方向
I2S2_SCLK_OUT O ii2sclk I
I2S2_TX_LRCK_OUT O ii2slrclk I
I2S2_8CH_SDO[3:0] O ii2sdata[3:0] I

I2S2与DP连接(这些引脚没有对外暴露,所以是看不到的):

引脚引脚(I2S2) 方向 功能引脚(DP) 方向
I2S2_SCLK_OUT O source_i2s_clk I
I2S2_TX_LRCK_OUT O source_i2s_ws I
I2S2_8CH_SDO[3:0] O source_i2s_data[3:0] I

二、设备树配置

2.1 hdmi_sound设备节点

在arch/arm64/boot/dts/rockchip/rk3399.dtsi文件根节点下已经定义了hdmi_sound设备节点:

hdmi_sound: hdmi-sound {
        compatible = "simple-audio-card";
        simple-audio-card,format = "i2s";
        simple-audio-card,mclk-fs = <256>;
        simple-audio-card,name = "hdmi-sound";
        status = "disabled";

        simple-audio-card,cpu {
                sound-dai = <&i2s2>;
        };
        simple-audio-card,codec {
                sound-dai = <&hdmi>;
        };
};

(1) compatible:指定设备驱动程序的兼容性,即告诉内核该设备可以被哪些驱动程序所使用;

(2) simple-audio-card,format:指定数字音频接口格式为“I2S”,即使用I2S接口传输音频数据;

此外还支持的数字音频接口格式有:right_j、left_j、dsp_a、dsp_b、ac97、pdm、msb、lsb。

(3) simple-audio-card,mclk-fs:指定主时钟频率MCLK与采样频率之前的比值,例如256表示主时钟频率为系统频率的256倍;

(4) simple-audio-card,name:指定声卡的名称为“hdmi-sound”;

(5) status:指定设备状态为“禁止”,表示该设备状态为禁止运行;

(6) simple-audio-card,cpu:指定cpu接入音频编解码的dai;这里配置为&i2s2,即i2s2设备节点的句柄;

(7) simple-audio-card,codec:指定编解码音频接入cpu的dai;这里配置为&hdmi,即hdmi设备节点的句柄;

我们需要在arch/arm64/boot/dts/rockchip/rk3399-evb.dts文件添加如下属性,启用machine驱动:

&hdmi_sound{
        status = "okay";

};
2.2 hdmi设备节点

在arch/arm64/boot/dts/rockchip/rk3399.dtsi文件根节点下已经定义了hdmi设备节点:

hdmi: hdmi@ff940000 {
        compatible = "rockchip,rk3399-dw-hdmi";
        reg = <0x0 0xff940000 0x0 0x20000>;
   

你可能感兴趣的:(RockChip,RK3399,音视频)