高通耳机hal及识别有关记录

1. Audio hal层文件所在目录如下蓝色部分,audio使用的配置文件是sdm450auto.conf,怎么知道是这个文件呢?看了编译规则相当复杂,最简单直接的办法是看提交记录,如果不幸是第一个到这里的人,那就只能打印log追踪编译规则了,这里提供一个在make文件中打印log的方法:

输出变量MTK_HALL_SUPPORT的值并停止在该行(echologlog)

$(error errorlogxxxxlog:$(strip $(MTK_HALL_SUPPORT)))

输出变量MTK_HALL_SUPPORT的值继续编译

$(warning xxxxlog:$(strip $(MTK_HALL_SUPPORT)))

LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/audio-kernel/config/sdm450auto.conf

知道这个配置文件的目的是了解正在调试的项目都开启和配置了那些相关宏,方便从整体上了解audio hal 层的配置情况。

2. 当然对我们耳机检查来说不是主要的,耳机检查主要是以下状态的检测。

enum wcd_mbhc_plug_type {

MBHC_PLUG_TYPE_INVALID = -1, // 无效状态

MBHC_PLUG_TYPE_NONE, // 未插入设备

MBHC_PLUG_TYPE_HEADSET, // 四段耳机

MBHC_PLUG_TYPE_HEADPHONE, // 三段耳机

MBHC_PLUG_TYPE_HIGH_HPH, // 高阻抗设备

MBHC_PLUG_TYPE_GND_MIC_SWAP, // 欧美标标志位

MBHC_PLUG_TYPE_ANC_HEADPHONE, // 主动降噪耳机

};

耳机插入打印出的kernel log中搜索如下显示

wcd_mbhc_find_plug_and_report: enter current_plug(0) new_plug(1) // 1代表了四段耳机插入

下面截图是源代码部分(wcd-hbhc-v2.c中的函数wcd_mbhc_find_plug_and_report)。

 

wcd_mbhc_find_plug_and_report()完成以下功能

  1. 发现什么设备插入;
  2. 向上层汇报input event事件,比如四段耳机插入了。

 

在耳机识别过程中,有以下参数可以微微调试,可以把检测时间调整的短一点,这样会测量快,但误差概率会上升,比如四段耳机识别为三段耳机,所以是一个权衡值。以下两处可以只修改一处,也可以两处都修改。

Wcd-mbhc-v2.h (la.um.7.6.2\linux\android\vendor\qcom\opensource\audio-kernel\asoc\codecs)

修改一处的办法,把循环次数降低一半,这样检查到的耳机速度比原来快一倍。

#define SPECIAL_HS_DETECT_TIME_MS (2 * 1000)

#define MBHC_BUTTON_PRESS_THRESHOLD_MIN 250

-#define GND_MIC_SWAP_THRESHOLD 4

+#define GND_MIC_SWAP_THRESHOLD 2  // 由4变为2

修改两处的办法,循环次数减半,检测时间减去三分之一。

--#define GND_MIC_SWAP_THRESHOLD 4

++#define GND_MIC_SWAP_THRESHOLD 2 //判断欧美标用

--#define HS_DETECT_PLUG_TIME_MS (3 * 1000)

++#define HS_DETECT_PLUG_TIME_MS (2* 1000) //识别时间用

 

static void wcd_correct_swch_plug(struct work_struct *work)

{

...

 

...

pr_debug("%s: US_EU gpio present,flip switch\n" , __func__);

...

}

可以看到应用HS_DETECT_PLUG_TIME_MS的地方起了一个定时器jiffes,先以当前jiffes为基础,再增加一个HS_DETECT_PLUG_TIME_MS的延时,当延时到了后跳出while循环。

此函数wcd_correct_swch_plug里面决定是否开启美标耳机和欧标耳机,如log

pr_debug("%s: US_EU gpio present,flip switch\n" , __func__);

如果打印出此log,说明要进行欧美标切换。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值