三星平台声卡移植添加新的声卡驱动程序

核心提示:家提供的wm8976声卡驱动程序,添加到内核硬件环境 j​z2440开发板,搭载 s3c2440处理器 使用的声卡芯片 wm8976软件环境内核版本 linux 3.4.2内核 交叉编译工具 arm-linux-gcc 4.3.2添加新的声卡驱动方法方法一...
目的:在linux 3.4.2内核下移植厂家提供的wm8976声卡驱动程序,添加到内核

硬件环境  j​z2440开发板,搭载 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​
  

 

posted on 2016-08-25 16:19  木花猫  阅读(1512)  评论(0编辑  收藏  举报

导航