ALSA On Rockchip Linux Platform

一个声卡包含 cpu_dai, codec_dai, 以及 dai_link 组成,分别对应 cpu dai 的 dirver,比如I²S driver, spdif driver, codec driver, 比如 rt5640 codec driver, dai_link driver,也就是 machine driver, 比如 sound/soc/rockchip/rockchip_rt5640.c。

sound-card

有两种方式创建声卡,一种是通用的 simple-card framework,一种是传统的编写自定义的 machine driver 来创建。

直接看upstream文档比较好,
http://elixir.free-electrons.com/linux/latest/source/Documentation/devicetree/bindings/sound/simple-card.txt

样例:

sound {
	compatible = "simple-audio-card";
	simple-audio-card,format = "i2s";
	simple-audio-card,name = "rockchip,fennec-codec";
	simple-audio-card,mclk-fs = <512>;

	simple-audio-card,dai-link@0 {
		format = "i2s";
		cpu {
			sound-dai = <&i2s>;
		};
		codec {
			sound-dai = <&hdmi>;
		};

	};

	simple-audio-card,dai-link@1 {
		format = "i2s";
		cpu {
			sound-dai = <&i2s>;
		};

		codec {
			sound-dai = <&es8323>;
		};
	};
};

DEBUG

输入 aplay -l 可以看设备是不是有注册上

root@MiWiFi-R1CL-srv:~# aplay -l                                                                
aplay: device_list:268: no soundcards found..

测试的话可以用下面这个命令,其中hw:0,0代表声卡0,通道0,以上面的dts为例,就是fennec-codec sound card 的 hdmi codec

aplay -D hw:0,0 -d 1 -f cd /dev/zero    设置control也可以使用aplay命令,具体可以help一下

Function

Written on May 4, 2017