核心提示:家提供的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