在imx6ul核心板上使用自带的mqs
音频
sound-mqs {
compatible = "fsl,imx6ul-ddr3-arm2-mqs",
"fsl,imx-audio-mqs";
model = "mqs-audio";
cpu-dai = <&sai1>;
asrc-controller = <&asrc>;
audio-codec = <&mqs>;
};
&sai1 {
assigned-clocks = <&clks IMX6UL_CLK_SAI1_SEL>,
<&clks IMX6UL_CLK_SAI1>;
assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <0>, <24576000>;
status = "okay";
};
&mqs {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mqs>;
clocks = <&clks IMX6UL_CLK_SAI1>;
clock-names = "mclk";
status = "okay";
};
config里添加mqs的驱动
目前音量无法调节 调整的驱动在 sound/soc/codec/fsl-mqs.c 文件
由于驱动没有使用trigger函数 这边自己实现了这个函数
static int fsl_mqs_trigger(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{
printk("\n trigger %s\n");
gpio_set_value(18,0);
mdelay(100);
gpio_set_value(18,1);
}
然后分别在startup 和 stopup函数里拉高和拉低了使能引脚 避免了爆破音。。。
还有这样可能导致声音的开始部分减少,最好在trigger里判断是开始还是结尾,再进行延时