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. 每隔一段时间执行一次函数。window.setTimeout

    timer2 = window.setTimeout("showTaxi()", 30000);//30秒从后台获取一次数据,显示在地图上. 原来试过  setInterval . ...

  2. GCC内联汇编入门

    原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误. 中文版说明 由于译者水平有限,故译文出错之处,还请见谅.C语言的关键字不译,一些单词或词组( ...

  3. weekend110(Hadoop)的 第三天笔记

    (2015年1月17日) 课程目录 01-hdfs源码跟踪之打开输入流 02-hdfs源码跟踪之打开输入流总结 03-mapreduce介绍及wordcount 04-wordcount的编写和提交集 ...

  4. 1 weekend110的复习 + hadoop中的序列化机制 + 流量求和mr程序开发

    以上是,weekend110的yarn的job提交流程源码分析的复习总结 下面呢,来讲weekend110的hadoop中的序列化机制 1363157985066      13726230503  ...

  5. Uniform resource name

        A uniform resource identifier (URI) is a uniform resource locator(定位器,探测器) (URL), uniform resour ...

  6. 关于升级linux下apache

    1:Check whether Apache is already installed. # rpm -qa | grep -i http httpd-tools-2.2.8-3.i386 httpd ...

  7. myeclipse输入“.”后没有自动提示功能

    今天和室友安装了一样的myeclipse版本,结果室友的自动提示功能有,我的输入"."后却不能提示,这对我们敲代码简直来说是一个折磨,不能自动提示,本来还以为是系统问题,一个是wi ...

  8. MVC URL处理

     需要web.config在system.webServer节点添加  <modules runAllManagedModulesForAllRequests="true"/ ...

  9. sed和awk最佳入门教程

    文档<sed和awk最佳入门教程>——摘自<实战linux shell编程与服务器管理>,简单易懂,适合初学者. 下载地址:http://download.csdn.net/d ...

  10. hdu4488 Faulhaber’s Triangle(模拟题)

    Faulhaber’s Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...