点击打开链接

dts文件修改:

qcom,audio-routing =
   "RX_BIAS", "MCLK",
   "LDO_H", "MCLK",
   "SPK_OUT", "MCLK",
   "SPK_OUT", "EXT_VDD_SPKR",
   "Lineout_1 amp", "LINEOUT1",
   "Lineout_2 amp", "LINEOUT2",
   "AMIC1", "MIC BIAS1 External",
   "MIC BIAS1 External", "Handset Mic",
   "AMIC2", "MIC BIAS2 External",
   "MIC BIAS2 External", "Headset Mic",
   "AMIC3", "MIC BIAS1 External",
   "MIC BIAS1 External", "ANCRight Headset Mic",
修改对应的Mic名称,如second mic,再在msm8226.c里面修改对应名称的widget。

在build.prop里面设置 ro.qc.sdk.audio.fluencetype=fluence(none,fluence,fluencepro),然后adb push ./build.prop /system/ ; adb shell ; chmod 0644 /system/build.prop ;

跟下代码:

(platform.c)

platform_init()  ->property_get("ro.qc.sdk.audio.fluencetype", value, ""); -> else if (!strncmp("fluence", value, sizeof("fluence"))) {my_data->fluence_type = FLUENCE_DUAL_MIC;} ->

platform_get_input_snd_device(); ->

if (out_device & AUDIO_DEVICE_OUT_EARPIECE ||
            out_device & AUDIO_DEVICE_OUT_WIRED_HEADPHONE) {
            if (my_data->fluence_type == FLUENCE_NONE ||
                my_data->fluence_in_voice_call == false) {
                snd_device = SND_DEVICE_IN_HANDSET_MIC;
            } else {
                snd_device = SND_DEVICE_IN_VOICE_DMIC;
                adev->acdb_settings |= DMIC_FLAG;
            }
        }

return snd_device ;

->

(audio_hw.c)

select_devices(); ->

in_snd_device = platform_get_input_snd_device(adev->platform, usecase->stream.out->devices);

所以最后会把SND_DEVICE_IN_VOICE_DMIC 传给in_snd_device .可在以下log看到;

ALOGD("%s: out_snd_device(%d: %s) in_snd_device(%d: %s)", __func__,
          out_snd_device, platform_get_snd_device_name(out_snd_device),
          in_snd_device,  platform_get_snd_device_name(in_snd_device));  ->const char *platform_get_snd_device_name(snd_device_t snd_device)
{
    if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX)
        return device_table[snd_device];
    else
        return "";
} ->

device_table[snd_device]就是在platform.h中定义的名称[SND_DEVICE_IN_VOICE_DMIC] = "voice-dmic-ef",

再追下acdb的代码:

enable_snd_device() ->   (audio_hw.c)

platform_send_audio_calibration() ->(plaform.c)

acdb_dev_id = acdb_device_table[snd_device];

my_data->acdb_send_audio_cal(acdb_dev_id, acdb_dev_type);  ->(acdb-loader.c)

acdb_loader_send_audio_cal();

双mic的验证:

1, mm-audio-ftm 做工厂测试

2,使用tinymix命令

3,使用QACT工具

4,使用QXDM log, 如果是双mic 会抓到如下节点

11-12.15-23.isf.0x158A.pcm.0x140.VPTX_ECNEAR_IN.0x1.tx.wav

11-12.15-23.isf.0x158A.pcm.0x140.VPTX_ECNEAR_IN.0x2.tx.wav

直观听声音就行!

分析:需要打开log文件:

1, echo -n "file wcd9306.c +p" > /sys/kernel/debug/dynamic_debug/control
      echo -n "file msm8226.c +p" > /sys/kernel/debug/dynamic_debug/control
      echo -n "file soc-dapm.c +p" > /sys/kernel/debug/dynamic_debug/control

2,#define LOG_NDEBUG 0 分别在platform.c和audio_hw.c

高通8xxx平台双MIC设置相关推荐

  1. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  2. 【转载】高通msm8996平台的ASOC音频路径分析(基于androidN及linux3.1x)

    高通msm8996平台的ASOC音频路径分析(基于androidN及linux3.1x) tags : msm8996 sound linux android 原文:高通msm8996平台的ASOC音 ...

  3. 高通Android平台下关于display部分的几个关键问题

    高通Android平台下关于display部分的几个关键问题 2011-04-07 18:59 From: http://hi.baidu.com/leowenj/blog/item/3fe59f74 ...

  4. 【高通SDM660平台 Android 10.0】(13) --- Camera ISP 之 数字成像系统介绍

    [高通SDM660平台 Android 10.0] --- Camera ISP 之 数字成像系统介绍 一.成像系统的组成 1.1 视角 1.2 曝光 1.3 感光度 ISO 1.4 光源 1.5 光 ...

  5. 高通7x27a平台UART配置

    高通7x27a平台使用uart1作为debug的配置 高通7x27a平台一共有5个UART PORT: Port 对应的GPIO 描述 UART1 122+123 Can used for debug ...

  6. 高通SDX62平台 MBIM搜网、查询信号等功能异常

    高通SDX62平台 MBIM搜网.查询信号等功能异常 1. 问题描述 按照高通SDX62平台产品规格,其支持RMNET.ECM.RNDIS.PPP.MBIM等拨号:但经测试,发现MBIM拨号功能正常, ...

  7. 高通5G平台(SDX55\SDX62\SDX65):ping包异常问题排查指南

    高通5G平台:ping包异常问题排查指南 1. 背景 2. Ping包数据流走向及网络架构 2.1 终端与网络架构图 2.2 终端与基站之间协议栈数据流走向图 3. Ping包问题常见分析思路 3.1 ...

  8. 高通SDX12平台:启动流程梳理

    高通SDX12平台 启动流程梳理 1. 高通平台CPU类型介绍 通常我们所说的CPU如高通平台MSM8998.苹果A12, 华为海思平台(麒麟980.990)等,这些我们虽然叫CPU,但并不是只有一个 ...

  9. 高通SDX12平台:LINUX上MBIM功能异常

    高通SDX12平台 LINUX上MBIM功能异常 1. 问题描述 按照高通SDX12平台产品规格,其支持RMNET.ECM.RNDIS.PPP.MBIM等拨号:但经测试,发现Windos下MBIM功能 ...

最新文章

  1. 华为三层交换机(5328)DHCP中继应用配置实例
  2. 一个高效、快速、稳定的PHP日志扩展。
  3. pymysql.err.InternalError: (1130, Host '127.0.0.1' is not allowed to connect to this MySQL server)
  4. 虚拟内存越大越好吗_二次构造柱泵的功率越大越好吗—自然不是
  5. SAP Spartacus List Component 里定义的待显示 Popover 内容,如何传递到 Popover Component 里的?
  6. Java基础 —— 异常
  7. 476. 数字的补数
  8. ip地址互转十进制数字(函数)
  9. Web前端和后端开发的区别和要求
  10. lambda qt 参数 槽函数_C++中的lambda表达式用法
  11. Nginx 配置文件详细说明
  12. 28. 正确理解由reverse_iterator的base()成员函数所产生的iterator的用法
  13. python划分有限元网格_有限元分析网格划分的步骤和类型
  14. 基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶
  15. fw300r虚拟服务器设置,迅捷(fast)fw300r路由器用手机怎么设置? | 192路由网
  16. 请完成汇率和金额排序程序。(100分)题目内容: 在国际机场,我们会发现有多个货币兑换的窗口,这是由于各国货币的单位价值是不一样的。下面列出了某日国际货币的汇率表(相对于100人民币的各国货币值)。
  17. 【EntityFramework CodeFirst 】错误解析:LINQ to Entities does not recognize the method ToString
  18. Java课程设计报告——学生成绩管理系统
  19. 如何使用微PE工具箱制作U盘PE
  20. linux上无法发送163邮件,如何在linux中发送邮件,使用163邮箱发信。

热门文章

  1. java 更新jlabel_java – 如何动态更改JLabel
  2. 导致的死信的几种原因?
  3. application context not configured for this file?
  4. 005_Redis的Hash数据类型
  5. webapi添加html页面,如何从WebApi动作返回html页面?
  6. python box2d_win10+Anaconda3成功使用pip安装Box2d
  7. unity两个项目合并 同名_从实际项目升级中关于 Unity SRP 的一些评测
  8. java找出两个字符串中所有共同的子串_【Java笔记】
  9. 性能分析工具 Android TraceView
  10. Mysql基础运维及复制架构——实验文档