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 无法自动打开问题的更多相关文章

  1. Unity Microphone 录音时 检测声音大小

    刚开始以为只取录音时的最后一个sample来判断音量大小,发现都检测不到. 后来搜索了一下,原来需要取一段sample来判断,有的是这一段取平均值作为音量大小.我这里是取出一段sample中的峰值(p ...

  2. js关于对象键值为数字型时输出的对象自动排序问题的解决方法

    一.对象键值为数字型时输出的对象自动排序问题如: var objs = {    "1603":{id:"1603"},    "1702" ...

  3. inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效

    inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效 inno setup 安装卸载时检测程序是佛正在运行卸载完成后自动打开网页-代码无效 --------------------- ...

  4. Oracle 12c启动时PDBs的自动打开

    Pluggable Database(PDB)为Oracle 12c中的一个重要的新特性, 但启动12c实例时并不会自动打开PDB数据库,这样,在启动实例后必须手动打开PDBs. 1. 实例启动后,手 ...

  5. excel双击文件打开时空白,使用菜单打开正常的解决办法

    excel双击文件打开时空白,使用菜单打开正常的解决办法 打开 excel的选项 找到高级->常规 取消“忽略使用动态数据交换...”的勾,确定. 问题解决.

  6. 有人在用fastReport作报表时处理过字体自动缩小的问题吗,怎么做

    有人在用fastReport作报表时处理过字体自动缩小的问题吗,怎么做  我来答   浏览 49 次 1个回答 #吃瓜大会# Angelababy演技被吐槽, 你觉得她的演技怎么样? 最佳答案 热心 ...

  7. [PyCharm] 设置自动启动时自动打开项目

    设置启动PyCharm时自动打开(或不打开)上次进行的项目: 选择 “Settings - General - Reopen last project on startup”,勾选该选项则启动时自动打 ...

  8. 当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开

    当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开. 只有取消代理,本机才能访问其虚拟机linux系统上的网站

  9. 使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹

    使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹,而且div的id命名为id=content,这个和已有id重复 ...

随机推荐

  1. JavaScript高级程序设计40.pdf

    DOM0级事件处理程序 就是将一个函数赋值给一个事件处理程序属性,具有简单.跨浏览器优势,首先必须取得一个操作对象的引用,每个元素(包括window和document)都有自己的事件处理程序属性,这些 ...

  2. 基于TCP协议的服务器(多线程)

    import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; impo ...

  3. Sublime Text 3 格式代码插件 codeFormatter

    一款可以对html.JS.CSS.PHP.python代码格式化的sublime插件 默认快捷键ctrl+alt+F,默认可以对html.js.css格式代码, 如果想对PHP格式化,需要PHP5.6 ...

  4. mvn创建web项目

    1. 新建maven项目,选择maven骨架maven-archetype-webapp来建立web项目 2. 选择next,输入groupid:MavenWebTest, artifactid:cn ...

  5. [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 ...

  6. 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 ...

  7. 浅谈Android自定义锁屏页的发车姿势

    一.为什么需要自定义锁屏页 锁屏作为一种黑白屏时代就存在的手机功能,至今仍发挥着巨大作用,特别是触屏时代的到来,锁屏的功用被发挥到了极致.多少人曾经在无聊的时候每隔几分钟划开锁屏再关上,孜孜不倦,其酸 ...

  8. build/envsetup.sh中hmm、get_abs_build_var、get_build_var解析

    function hmm() { # 打印帮助信息 cat <<EOF Invoke ". build/envsetup.sh" from your shell to ...

  9. Bootstarp--全局CSS样式之表格

    表格在实际开发中可以说是非常常见的,但是有很多人不喜欢使用表格,但个人觉得在简单的界面布局中使用表格还是很简单的.毕竟人家给了表格这元素,而你却不去使用,貌似有点不解风情. 下面简单介绍Bootstr ...

  10. 使用html5兼容低版本浏览器

    因为html5 新出的一些语义化的标签,在低版本浏览器下不能识别,举个例子,比如你写了一个 header 标签中,写了一段文本,在低版本浏览器下,肯定是能看到的,但是,那是他是不认识 header标签 ...