经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动。
DTS编写
由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容:
/ {
...
regulators {
...
reg_3p3v: 3p3v {
compatible = "regulator-fixed";
regulator-name = "3P3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
...
sound {
compatible = "fsl,imx-audio-sgtl5000";
model = "imx6q-sgtl5000";
ssi-controller = <&ssi1>;
audio-codec = <&codec>;
audio-routing =
"MIC_IN", "Mic Jack",
"Mic Jack", "Mic Bias",
"Headphone Jack", "HP_OUT";
mux-int-port = <1>;
mux-ext-port = <3>;
};
};
...
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_2>;
status = "okay";
codec: sgtl5000@0a {
compatible = "fsl,sgtl5000";
reg = <0x0a>;
clocks = <&clks 201>;
VDDA-supply = <®_3p3v>;
VDDIO-supply = <®_3p3v>;
VDDD-supply = <®_1p2v>;
};
};
&ssi1 {
fsl,mode = "i2s-slave";
status = "okay";
};
&audmux {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_audmux_2>;
status = "okay";
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
...
hog {
pinctrl_hog: hoggrp-1 {
fsl,pins = <
MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x80000000
>;
};
};
};
添加以上内容后重新编译并烧写DTB即可。
测试方法
测试方法当然还是使用alsa-lib和alsa-utils。相关工具的移植方法如下:
Step1. 获取并交叉编译alsa-lib:
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.29.tar.bz2
tar jxf alsa-lib-1.0.29.tar.bz2
cd alsa-lib-1.0.29
/configure --host=arm-linux-gnueabi --prefix=/mnt/usr/lib/alsa-lib
make
sudo make install
Step2. 获取并交叉编译alsa-utils:
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.29.tar.bz2
tar jxf alsa-utils-1.0.29.tar.bz2
cd alsa-utils-1.0.29
./configure --host=arm-linux-gnueabi --prefix=/usr/share/arm-alsa --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer --disable-xmlto
make
sudo make install
Step3. 检测交叉编译是否成功:
file aplay
如果显示内容大致如下:
aplay: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=280644397dc85eaf1f1dc26b03be754ac4777cff, not stripped
则表示交叉编译成功,关键词是ARM。
Step4. 将交叉编译好的alsa拷贝到根文件系统:
sudo cp /usr/share/arm-alsa/ /mnt/usr/share/ -rfa
sudo cp /usr/share/arm-alsa/* /mnt/ -rfa
sync
接下来就可以用新的跟文件系统启动开发板了。
Step5. 测试录音:
arecord -f dat test.wav
执行以上指令后对着开发板说话,说完之后通过ctrl+C键中断录音。
Step5. 播放录音:<