首先配置声卡UDA1341驱动,看原理图
我们只需要将相应的IIS管脚设置为我们开发板的原理图设计的管脚就可以了。我们只要在/arch/arm/mach-s3c2440/mach-smdk2440.c文件中注册UDA1341 平台设备的控制端口就可以了,端口如上图所示,打开mach-smdk2440.c,添加如下内容:
[fanmaolin@Centeros linux-3.0]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c
--- mach-smdk2440.c 2017-04-17 11:49:34.775247810 +0800
+++ mach-smdk2440s.c 2017-04-21 20:14:43.312859618 +0800
@@ -59,9 +59,32 @@
#include <linux/i2c/at24.h>
#include <linux/delay.h>
+#include <sound/s3c24xx_uda134x.h>
+#include <mach/gpio-nrs.h>
+
#include <plat/common-smdk.h>
/* add DM9000 ethernet drivers ,whitch is bodify by liuchengdeng */
+
+static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = {
+ .l3_clk = S3C2410_GPB(4),
+ .l3_data = S3C2410_GPB(3),
+ .l3_mode = S3C2410_GPB(2),
+ .model = UDA134X_UDA1341,
+};
+
+static struct platform_device s3c24xx_uda134x = {
+ .name = "s3c24xx_uda134x",
+ .dev = {
+ .platform_data = &s3c24xx_uda134x_data,
+ }
+};
+
+static struct platform_device uda1340_codec = {
+ .name = "uda134x-codec",
+ .id = -1,
+};
+
#define DM9000_BASE (S3C2410_CS4 + 0x300)
static struct resource s3c_dm9000_resource[] = {
[0] = {
@@ -222,6 +245,10 @@
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9000,
+ &uda1340_codec,
+ &s3c24xx_uda134x,
+ &samsung_asoc_dma,
+
};
static void __init smdk2440_map_io(void)
上述添加的各类结构体均要放在添加设备的devices[ ]结构体数组之前,否则会出现未定义,以及定义了没使用等错误。因为编译器是按顺序编译,所以声明必须放在结构体或者函数之前。
其次在内核中配置UDA1341驱动
make menuconfig
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
< > Sequencer support
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
[ ] Support old ALSA API
<*> ALSA for SoC audio support --->
<*> ASoC support for Samsung
<*> SoC I2S Audio support UDA134X wired to a S3C24XX
make编译一下,把生成的linuxrom-s3c2440.bin文件下载到开发板,重启
出现这些信息表明声卡驱动成功移植,可以在开发板上查看:
移植madplay
移植第三方程序的主要步骤分别为:解压缩、配置(./configure)、编译(make)、安装(make install)
一般源码包解压缩之后,若已经存在Makefile则可以直接make编译;但大多数情况下需要使用源码包目录下的./configure脚本来配置源码包生成Makefile文件;
理解下面的配置参数的意义:
--host: 用于指定平台;如: --host==arm-linux
--prefix: 用于指定文件的安装路径; 如:--prefix=/home/fanmaolin/fl2440/3rdparty/uda1341/mad