linux系统 wm9713声卡配置 记录

2024-05-13 22:58

本文主要是介绍linux系统 wm9713声卡配置 记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在搞wm9713的外音播放和耳机的检测,搞了几天不负所望,终于搞定了。现记录如下,开发板为real210 v6.2版本:

如果要让外音输出,那么确保wm9713的0x1c寄存器的值为0x1200,耳机输出为0x00a0,当然两者也可同时输出,值为0x12a0。

另外还要设置AC97_EXTENDED_MSTATUS寄存器(即0x3e寄存器),设置的值为0xb900(打开喇叭输出使能,第7、8位控制喇叭  9、10位控制耳机,设置为0为开启)。

当然音量的设置也是必须的AC97_MASTER(0x02)设置外音音量,AC97_HEADPHONE(0x04)设置耳机音量,我这里的值设置的为0x0000和0x0606,其中0x0000是为最大声音。

要有耳机检测,那么还要设置两个寄存器(其他开发板可能是由CPU来检测是否有耳机插入,这里是由wm9713自己检测,CPU不干预)AC97_INT_PAGING和AC97_ADDITIONAL_FUNC1(即0x24和0x5a),值分别是0x10和0x40。

下面贴出这些设置的整个函数,需要的话直接使用即可(codecs目录下的wm9713.c文件):

#define AC97_ADDITIONAL_FUNC1	0x5a
static int wm9713_hifi_hw_params(struct snd_pcm_substream *substream,struct snd_pcm_hw_params *params,struct snd_soc_dai *dai)
{struct snd_soc_codec *codec = dai->codec;ac97_write(codec, AC97_POWERDOWN, 0x0000);ac97_write(codec, AC97_PHONE, 0x0808);ac97_write(codec, AC97_EXTENDED_MID, 0xf803);ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xb900);//这里要打开喇叭输出使能,第7、8位控制喇叭  9、10位控制耳机,设置为0为开启ac97_write(codec, AC97_MASTER, 0x0000);ac97_write(codec, AC97_HEADPHONE, 0x0606);ac97_write(codec, AC97_REC_GAIN, 0x12a0);//0x00a0 耳机输出   0x1200 喇叭输出ac97_write(codec, AC97_INT_PAGING, 0x10);//使能耳机插入检测ac97_write(codec, AC97_ADDITIONAL_FUNC1, 0x40);//设置检测耳机插入的IO端口
#ifdef CONFIG_SOUND_WM9713_INPUT_STREAM_MICac97_write(codec, 0x5c, 0x0002);ac97_write(codec, AC97_LINE, 0x0068);ac97_write(codec, AC97_VIDEO, 0xfe00);
#elseac97_write(codec, AC97_VIDEO, 0xd612);
#endifreturn 0;
}
static struct snd_soc_dai_ops wm9713_dai_ops_hifi = {.hw_params	= wm9713_hifi_hw_params,.prepare	= ac97_hifi_prepare,.set_clkdiv	= wm9713_set_dai_clkdiv,.set_pll	= wm9713_set_dai_pll,
};



这篇关于linux系统 wm9713声卡配置 记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987052

相关文章

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H