移植内核的声卡驱动。原因没有声卡驱动,WM9713声卡驱动移植(原来的内核有UDA1341声卡驱动,我们再次基础上直接修改)

1、直接复制内核得到三个文件:s3c2416_wm9713.c , wm9713.c , s3c2416_ac97.c.

linux-3.1\sound\soc\codecs\Wm9713.c---->wm9713.c;

linux-3.1\sound\soc\samsung\Smdk_wm9713.c---->s3c2416_wm9713.c;

linux-3.1\sound\soc\samsung\Ac97.c------------>s3c2416_ac97.c.

2、使得内核支持那三个文件:

在linux-3.1\sound\soc\samsung\Makefile添加:

snd-soc-s3c2416-wm9713-objs := s3c2416_wm9713.o

obj-$(CONFIG_SND_SOC_SAMSUNG_SMDK_WM9713) += snd-soc-s3c2416-wm9713.o

snd-soc-s3c2416-ac97-objs := s3c2416_ac97.o

obj-$(CONFIG_SND_SAMSUNG_AC97) += snd-soc-s3c2416-ac97.o

在linux-3.1\sound\soc\codec\Makefile添加:

snd-soc-wm9713-objs := wm9713.o

obj-$(CONFIG_SND_SOC_WM9713)+= snd-soc-wm9713.o

在linux-3.1/sound/soc/samsung/kconfig 配上WM9713configSND_SOC_SAMSUNG_SMDK_WM9713tristate "SoC AC97 Audio support for s3c2416 with WM9713"## depends on SND_SOC_SAMSUNG && (MACH_SMDK6410 || MACH_SMDKC100 || MACH_SMDKV210 || ##MACH_SMDKC110 || MACH_SMDKV310 || MACH_SMDKC210) #屏蔽掉depends on SND_SOC_SAMSUNG && ARCH_S3C24XX ##add by ljfselectSND_SOC_WM9713selectSND_SAMSUNG_AC97helpSat Y if you want to add support for SoC audio on the SMDK.这样在内核中“make menuconfig”里面就可以看到"SoC AC97 Audio support for s3c2416 with WM9713",并选中他。接下来我们要在内核中加入这个平台驱动设备:

在“arch/arm/mach-s3c2416/”的mach-tq2416.c中添加:

添加头文件

#include //add by ljf

#include //add by ljf

#include //add by ljf

//add by ljf/** AC97*///at plat-s3c24xx/devs.cstatic int s3c2416_ac97_cfg_gpio(struct platform_device *pdev){return s3c_gpio_cfgpin_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(3));//硬件是使用GPE0~4,S3C_GPIO_SFN(3)表示使用第三功能为AC接口static struct resource s3c_ac97_resource[] = {[0] = {.start = S3C2440_PA_AC97,.end = S3C2440_PA_AC97 + S3C2440_SZ_AC97 -1,.flags = IORESOURCE_MEM,},[1] = {.start = IRQ_S3C244x_AC97,.end = IRQ_S3C244x_AC97,.flags = IORESOURCE_IRQ,},[2] = {.name = "PCM out",.start = DMACH_PCM_OUT,.end = DMACH_PCM_OUT,.flags = IORESOURCE_DMA,},[3] = {.name = "PCM in",.start = DMACH_PCM_IN,.end = DMACH_PCM_IN,.flags = IORESOURCE_DMA,},[4] = {.name = "Mic in",.start = DMACH_MIC_IN,.end = DMACH_MIC_IN,.flags = IORESOURCE_DMA,},};static struct s3c_audio_pdata s3c_ac97_pdata = {.cfg_gpio = s3c2416_ac97_cfg_gpio,};static u64 s3c_device_audio_dmamask = DMA_BIT_MASK(32);//0xffffffffUL;//will changestruct platform_device s3c_device_ac97 = {.name = "samsung-ac97",//.id = -1,.num_resources = ARRAY_SIZE(s3c_ac97_resource),.resource = s3c_ac97_resource,.dev = {.platform_data = &s3c_ac97_pdata,.dma_mask = &s3c_device_audio_dmamask,.coherent_dma_mask = DMA_BIT_MASK(32)//;0xffffffffUL//will change}};//add by ljf然后在“struct platform_device *tq2416_devices[] __initdata”中加入//add by ljf#ifdef CONFIG_SND_SOC_SAMSUNG_SMDK_WM9713&s3c_device_ac97,&samsung_asoc_dma,#endif//add by ljf然后编译、烧写。内核打印信息有asoc: wm9713-hifi samsung-ac97 mapping okALSA device list:

#0: SMDK WM9713

其实到这边,你去播放音乐时还是没声音。

原因:由于在ac97初始化的时候,没有设置wm9713相关为喇叭输出功能。解决:在\sound\soc\samsung\s3c2416_ac97.cstatic struct snd_soc_dai_ops s3c_ac97_dai_ops结构体添加:.prepare = earphone_out,(初始化函数)实现该函数(写在s3c_ac97_dai_ops结构体上面就行了):int earphone_out(struct snd_pcm_substream *substream,struct snd_soc_dai *dai){struct snd_ac97 *ac97;ac97 = 0;s3c_ac97_write(ac97,0x26,0x0);s3c_ac97_write(ac97, 0x0c, 0x0808);s3c_ac97_write(ac97,0x3c, 0xf803);s3c_ac97_write(ac97,0x3e,0xb990);if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {//s3c6400_ac97_write(0,0x02, 0x8080);s3c_ac97_write(ac97,0x02, 0x0404);s3c_ac97_write(ac97, 0x04, 0x0606);//s3c6400_ac97_write(0,0x1c, 0x00aa);s3c_ac97_write(ac97,0x1c, 0x12aa);}else{s3c_ac97_write(ac97, 0x12, 0x0f0f);#ifdef CONFIG_SOUND_WM9713_INPUT_STREAM_MICs3c_ac97_write(ac97,0x5c,0x2);s3c_ac97_write(ac97,0x10,0x68);s3c_ac97_write(ac97,0x14,0xfe00);#else /* Input Stream is LINE-IN */s3c_ac97_write(ac97, 0x14, 0xd612);#endif}return 0;}

到这边声卡就移植结束了。

再次编译,烧写。

再次测试一下:

cat /dev/urandom > /dev/dsp

可以听到“莎莎”的声音,说明移植成功。

s3c2416开发板 linux,S3C2416移植内核Linux3.1的wm9713声卡过程相关推荐

  1. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  2. 玩转开发板--Linux系统移植至开发板fl2440实践过程

    一.开发板介绍     CPU:S3C2440(SAMSUNG).ARM920T.400MHz     Pone/mic:耳机和话筒 JTAG:可以通过外部插入直接控制CPU,因此在初始化内存时,起到 ...

  3. iTOP-4418开发板Linux系统移植modbus

    首先确保开发板和虚拟机 Ubuntu 可以 ping 通,如下图所示,作者虚拟机的 IP 为"192.168.2.200" 通过开发板可以 ping 通 Ubuntu. 其次,注意 ...

  4. iTOP-4418开发板Linux系统移植modbus-arm的测试程序

    进入目录/home/minilinux/libmodbus-3.1.4/tests/,查看测试程序 random-testserver.c,如下图所示 已经编译出来了,但是还是需要修改一下源码中的几个 ...

  5. Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)

    Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...

  6. NUC980开发板Linux系统EC20模块 移植 串口 PPP拨号

    NUC980开发板Linux系统EC20模块 移植 串口 PPP拨号 1. EC20模块连接 2. Linux内核配置 3. 交叉编译PPP 4. 拨号脚本 5. 进行拨号 1. EC20模块连接 在 ...

  7. at91sam9260ek开发板linux移植文档,AT91SAM9260EK开发板 Linux 移植 移植 文档

    AT91SAM9260EK开发板 Linux 移植 移植 文档 AT91SAM9260EKAT91SAM9260EKAT91SAM9260EKAT91SAM9260EK 开发板开发板开发板开发板 Li ...

  8. 迅为IMX6ULL开发板Linux学习教程

    1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 ,  回复 :终结者,免费获取产品资料  让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...

  9. android移植 开发板,Android在TQ2440开发板上的移植

    原标题:Android在TQ2440开发板上的移植 一.目前进展 1.已经可以通过NFS在开发板上运行 最近自己编译了android的文件系统,并在TQ上运行了,比熊猫版的bin程序多些,基本功能已经 ...

最新文章

  1. SAP UI5应用点了search按钮后的实现调试
  2. 修改图片src_【学习园地】企业SRC搭建
  3. 2020年上半年短视频内容发展盘点报告
  4. Ubuntu16.04安装后开发环境配置和常用软件安装
  5. 服务器运维文章大合集
  6. SQL常用语句(大全)
  7. 计算机所建造全过程,Midas 桥梁设计建模计算,全过程图文解析!
  8. C语言【库函数与自定义函数】详解
  9. 量子计算机基本信息单位,量子计算机.ppt
  10. JS中利用AJAX调用淘宝API获取网络时间的方法
  11. 计算机多媒体技术主要有什么特征,多媒体技术特征有哪些_多媒体技术的关键特性介绍...
  12. Java实现生成并下载Excel文件
  13. Java获取不到tfp目录内容_AndroidRuntime引起:java.lang.unsatisfiedLinkError:无法加载tfp_jni:findLibrary返回null...
  14. 输出1~999999的水仙花数
  15. java中protected权限与默认权限的区别
  16. java.lang.UnsatisfiedLinkError: dll: Can't find dependent libraries
  17. java ssh乱码_SSH框架下中文字符乱码问题的研究
  18. 算法实验之线性规划解决配料问题
  19. MongoDB删除记录
  20. 微博客传播特性及盈利模式分析

热门文章

  1. 使用IDEA 1分钟搭建运行SpringMVC项目
  2. com.taobao.config.client.exception.ConfigClientException: cannot get serverlist, so exit jvm env=DEF
  3. JavaScript 常用代码整理
  4. 重学 VBA - 基础与实战篇(含正则表达式)
  5. redux中间件原理-讲义
  6. Ubuntu的配置(以ubuntu 20.04桌面版为例)
  7. 怎么添加一个程序集_门店小程序,微信小程序怎么添加店铺
  8. pypi.python.org_在Pypi上发布自己的Python包
  9. java创建读取文件_Java实现文件的创建、读取、写入操作-Fun言
  10. MATLAB求图片两圆圆心,求助:如何求此图中两圆的圆心距?