核心提示:家提供的wm8976声卡驱动程序,添加到内核硬件环境 jz2440开发板,搭载 s3c2440处理器 使用的声卡芯片 wm8976软件环境内核版本 linux 3.4.2内核 交叉编译工具 arm-linux-gcc 4.3.2添加新的声卡驱动方法方法一...
目的:在linux 3.4.2内核下移植厂家提供的wm8976声卡驱动程序,添加到内核
硬件环境 jz2440开发板,搭载 s3c2440处理器 使用的声卡芯片 wm8976
软件环境内核版本 linux 3.4.2内核 交叉编译工具 arm-linux-gcc 4.3.2
添加新的声卡驱动方法
方法一
①将移植好的声卡驱动wm8976.c和wm8976.h放入内核 sound/soc/codecs目录下,并修改对应目录下的Makefile文件,注销掉内核自带的声卡驱动文件uda134x.o,改名为新的文件名wm8976.o
②修改内核文件 s3c24xx_uda134x.c 将其文件中的 snd_soc_dai_link结构体中的codec_name 改为和 wm8976-codec codec_dai_name 改为 wm8976-iis
方法二 仿照内核添加一个配置项即可
① 将移植好的声卡驱动wm8976.c和wm8976.h放入内核 sound/soc/codecs目录下
② 修改 sound/soc/codecs/Makefile
1)搜索 snd-soc-uda134x-objs :=uda134x.o
在其下方添加一行 snd-soc-wm8976-objs :=wm8976.o
2)同样搜索 obj-$(CONFIG_SND_SOC_UDA134X)+=snd-soc-uda134x.o
在其下方添加新的一行 obj-$(CONFIG_SND_SOC_WM8976)+=snd-soc-wm8976.o
③修改同目录(sound/soc/codecs)下的Kconfig文件(主要是在makemenuconfig时添加一项)
1)打开后 搜索 configSND_SOC_UDA134X
在其下方添加新的两行
configSND_SOC_WM8976
tristate
2)搜索 selectSND_SOC_UDA134X
在其下方添加新的一行 selectSND_SOC_WM8976
③修改sound/soc/samsung目录下的文件
1)复制s3c24xx_uda134x.c,命名为s3c2440_wm8976.c
修改s3c24xx_uda134x_hw_params 函数
#if 0
ret = snd_soc_dai_set_sysclk(codec_dai, 0, clk,
SND_SOC_CLOCK_OUT);
if (ret < 0)
return ret;
#endif
修改 snd_soc_s3c24xx_uda134x
.name = S3C2440_WM8976 ,
替换S3C24XX_UDA134X 为S3C2440_WM8976
2)修改对应目录下的Makefile
搜索snd-soc-s3c24xx-uda134x-objs := s3c24xx_uda134x.o
在其下方添加一行 snd-soc-s3c24xx-wm8976-objs :=s3c2440_wm8976.o
搜索 obj-$(CONFIG_SND_SOC_SAMSUNG_S3C24XX_UDA134X)+= snd-soc-s3c24xx-uda134x.o
在其下方添加一行
obj-$(CONFIG_SND_SOC_SAMSUNG_S3C24XX_WM8976) +=snd-soc-s3c24xx-wm8976.o
3)修改Kconfig文件
搜索configSND_SOC_SAMSUNG_S3C24XX_UDA134X
tristate SoC I2S Audio support UDA134X wired to aS3C24XX
depends on SND_SOC_SAMSUNG &&ARCH_S3C24XX
select SND_S3C24XX_I2S
select SND_SOC_L3
select SND_SOC_UDA134X
添加wm8976相关的
configSND_SOC_SAMSUNG_S3C24XX_WM8976
tristate SoC I2S Audio support WM8976 wired to aS3C24XX
depends on SND_SOC_SAMSUNG && ARCH_S3C24XX
select SND_S3C24XX_I2S
select SND_SOC_L3
select SND_SOC_WM8976
④ 重新配置内核 make menuconfig
Device Drivers --->
<*>Sound card support --->
<*> Advanced LinuxSound Architecture --->
<*> ALSA for SoC audiosupport --->
<*> ASoC support for Samsung
<*> SoC I2S Audiosupport WM8976 wired to a S3C24XX
编译内核 makeuImage