nau8822 codec driver 录音时mic bias 无法自动打开问题
nau8822 codec driver 录音时mic bias 无法自动打开问题
问题描述:
kernel版本:3.10
在nuc970上测试nau8822驱动时发现,虽然驱动中有如下定义:
SND_SOC_DAPM_MICBIAS("Mic Bias", NAU8822_POWER_MANAGEMENT_1, 4, 0),
但在播放录音时始终调不到该操作。
在route上增加如下路径
{"Left Boost Mixer", NULL, "Mic Bias"},
后依然无法调用到Mic Bias。
分析:
经测试及查资料发现,是因为SND_SOC_DAPM_MICBIAS在3.10内核中不是起点或终点,所以如果定义mic bias为SND_SOC_DAPM_MICBIAS,它不能位于路径的起点或终点。
一条完整的dapm音频路径,必然有起点和终点,我们把位于这些起点和终点的widget称之为端点widget。以下这些类型的widget可以成为端点widget:
codec的输入输出引脚:
snd_soc_dapm_output
snd_soc_dapm_input
外接的音频设备:
snd_soc_dapm_hp
snd_soc_dapm_spk
snd_soc_dapm_line
音频流(stream domain):
snd_soc_dapm_adc
snd_soc_dapm_dac
snd_soc_dapm_aif_out
snd_soc_dapm_aif_in
snd_soc_dapm_dai_out
snd_soc_dapm_dai_in
电源、时钟和其它:
snd_soc_dapm_supply
snd_soc_dapm_regulator_supply
snd_soc_dapm_clock_supply
snd_soc_dapm_kcontrol
解决方法有2:
1.构造新的route使bias位于路径的中间,例如:
{"Left Input Mixer", "Mic Switch", "Mic bias"},
{"Mic bias", NULL, "LMICN"},
{"Mic bias", NULL, "LMICP"},
2.采用新的定义:SND_SOC_DAPM_SUPPLY代替SND_SOC_DAPM_MICBIAS来定义mic bias,具体定义如下:
SND_SOC_DAPM_SUPPLY("Mic Bias",
NAU8822_POWER_MANAGEMENT_1, 4, 0, NULL, 0),
在route定义中增加如下route:
{"Left Boost Mixer", NULL, "Mic Bias"},
测试验证:
只验证了方法2,修改代码后,在nuc970bsp中运行
/usr/arecord -f S16_LE -r 8000 -c 2 -D plughw:0,0 test.wav
成功调出mic bias,log如下:
bash-3.2# /usr/arecord -f S16_LE -r 8000 -c 2 -D plughw:0,0 test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo
pop test : Queue RMICN: reg=0xffffffff, 0x1/0x1
pop test : Queue RMICP: reg=0xffffffff, 0x1/0x1
pop test : Queue LMICN: reg=0xffffffff, 0x1/0x1
pop test : Queue LMICP: reg=0xffffffff, 0x1/0x1
pop test : Queue RAUX: reg=0xffffffff, 0x1/0x1
pop test : Queue R2: reg=0xffffffff, 0x1/0x1
pop test : Queue LAUX: reg=0xffffffff, 0x1/0x1
pop test : Queue L2: reg=0xffffffff, 0x1/0x1
pop test : Queue Mic Bias: reg=0x1, 0x10/0x10
pop test : Queue Capture: reg=0xffffffff, 0x1/0x1
pop test : Queue Right Input Mixer: reg=0x2, 0x8/0x8
pop test : Queue Left Input Mixer: reg=0x2, 0xc/0xc
pop test : Queue Right Boost Mixer: reg=0x2, 0x20/0x20
pop test : Queue Left Boost Mixer: reg=0x2, 0x30/0x30
pop test : Queue Left Capture PGA: reg=0x2d, 0x0/0x40
pop test : Queue Right Capture PGA: reg=0x2e, 0x0/0x40
pop test : Queue Right ADC: reg=0x2, 0x2/0x2
pop test : Queue Left ADC: reg=0x2, 0x3/0x3
nau8822 codec driver 录音时mic bias 无法自动打开问题的更多相关文章
- Unity Microphone 录音时 检测声音大小
刚开始以为只取录音时的最后一个sample来判断音量大小,发现都检测不到. 后来搜索了一下,原来需要取一段sample来判断,有的是这一段取平均值作为音量大小.我这里是取出一段sample中的峰值(p ...
- js关于对象键值为数字型时输出的对象自动排序问题的解决方法
一.对象键值为数字型时输出的对象自动排序问题如: var objs = { "1603":{id:"1603"}, "1702" ...
- inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效
inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效 inno setup 安装卸载时检测程序是佛正在运行卸载完成后自动打开网页-代码无效 --------------------- ...
- Oracle 12c启动时PDBs的自动打开
Pluggable Database(PDB)为Oracle 12c中的一个重要的新特性, 但启动12c实例时并不会自动打开PDB数据库,这样,在启动实例后必须手动打开PDBs. 1. 实例启动后,手 ...
- excel双击文件打开时空白,使用菜单打开正常的解决办法
excel双击文件打开时空白,使用菜单打开正常的解决办法 打开 excel的选项 找到高级->常规 取消“忽略使用动态数据交换...”的勾,确定. 问题解决.
- 有人在用fastReport作报表时处理过字体自动缩小的问题吗,怎么做
有人在用fastReport作报表时处理过字体自动缩小的问题吗,怎么做 我来答 浏览 49 次 1个回答 #吃瓜大会# Angelababy演技被吐槽, 你觉得她的演技怎么样? 最佳答案 热心 ...
- [PyCharm] 设置自动启动时自动打开项目
设置启动PyCharm时自动打开(或不打开)上次进行的项目: 选择 “Settings - General - Reopen last project on startup”,勾选该选项则启动时自动打 ...
- 当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开
当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开. 只有取消代理,本机才能访问其虚拟机linux系统上的网站
- 使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹
使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹,而且div的id命名为id=content,这个和已有id重复 ...
随机推荐
- JavaScript高级程序设计40.pdf
DOM0级事件处理程序 就是将一个函数赋值给一个事件处理程序属性,具有简单.跨浏览器优势,首先必须取得一个操作对象的引用,每个元素(包括window和document)都有自己的事件处理程序属性,这些 ...
- 基于TCP协议的服务器(多线程)
import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; impo ...
- Sublime Text 3 格式代码插件 codeFormatter
一款可以对html.JS.CSS.PHP.python代码格式化的sublime插件 默认快捷键ctrl+alt+F,默认可以对html.js.css格式代码, 如果想对PHP格式化,需要PHP5.6 ...
- mvn创建web项目
1. 新建maven项目,选择maven骨架maven-archetype-webapp来建立web项目 2. 选择next,输入groupid:MavenWebTest, artifactid:cn ...
- [TypeScript] Configuring TypeScript Which Files to Compile with "Files" and "OutDir"
This lesson shows how to configure the .tsconfig so you only compile the .ts files you want. It then ...
- Chapter 4 - How to Fire some Bullets
Now, we want to let the hero fire some bullets to kill the enemies, add the codes below to set the l ...
- 浅谈Android自定义锁屏页的发车姿势
一.为什么需要自定义锁屏页 锁屏作为一种黑白屏时代就存在的手机功能,至今仍发挥着巨大作用,特别是触屏时代的到来,锁屏的功用被发挥到了极致.多少人曾经在无聊的时候每隔几分钟划开锁屏再关上,孜孜不倦,其酸 ...
- build/envsetup.sh中hmm、get_abs_build_var、get_build_var解析
function hmm() { # 打印帮助信息 cat <<EOF Invoke ". build/envsetup.sh" from your shell to ...
- Bootstarp--全局CSS样式之表格
表格在实际开发中可以说是非常常见的,但是有很多人不喜欢使用表格,但个人觉得在简单的界面布局中使用表格还是很简单的.毕竟人家给了表格这元素,而你却不去使用,貌似有点不解风情. 下面简单介绍Bootstr ...
- 使用html5兼容低版本浏览器
因为html5 新出的一些语义化的标签,在低版本浏览器下不能识别,举个例子,比如你写了一个 header 标签中,写了一段文本,在低版本浏览器下,肯定是能看到的,但是,那是他是不认识 header标签 ...