MBHC 介绍
Multibutton Headset Control多按键耳机控制:
常见的电子设备包括手机、平板电脑、笔记本都会提供标准的3.5毫米耳机插孔,可与任何3段式或4段式耳机插头配件(如耳机、耳机、车载或立体声放大器)连接,用于不同的音频应用,以增强用户的收听体验。
这些设备可以检测设备的插拔,设备的种类,以便音频设备可以设置为适当的配置。
此外,一些耳机包括多个按钮,以支持不同的多媒体功能,系统能够识别和响应正在按下的按钮,高通平台上在这种场景先 采用MBHC (Multibutton Headset Control)来管理这部分内容‘;
软件代码
wcd-mbhc实现相关
vendor/qcom/opensource/audio-kernel/asoc/codecs$ ls wcd-mbhc*
wcd-mbhc-adc.c
wcd-mbhc-adc.h
wcd-mbhc-legacy.c
wcd-mbhc-legacy.h
wcd-mbhc-v2-api.h
wcd-mbhc-v2.c
wcd-mbhc-v2.h
提供给各个Codec调用的核心接口:wcd_mbhc_init
codec具体实现相关
vendor/qcom/opensource/audio-kernel/asoc/codecs/wcd937x$
wcd937x-mbhc.c wcd937x-mbhc.h
vendor/qcom/opensource/audio-kernel/asoc/codecs/wcd934x$
wcd934x-mbhc.c wcd934x-mbhc.h
vendor/qcom/opensource/audio-kernel/asoc/codecs/sdm660_cdc$ //pmic codec
msm-analog-cdc.c msm-analog-cdc.h
详细分析见后续代码逻辑分析
MBHC连接示意
使用常开(NO)类型插孔(JACK)时;需要133k的外部上拉电阻和100 k的串联电阻;
使用常闭(NC)型插孔时不需要上拉电阻串联电阻。
如果使用MBHC,必须将MIC2_INP和MIC_BIAS2引脚与耳机电路的专用MICB_CFILT2引脚一起使用,以便所有设置与QTI提供的软件兼容。
引脚说明:
-
HPH :headphone 的简写
-
MIC_BIAS :耳机麦克风偏置电压:
-
MIC:耳机的mic输入口
-
HPH_L:耳机左声道
-
HPH_R:耳机右声道
-
HS_DET:耳机检测脚headset_detect
-
HPH_REF:耳机参考地, 一些接耳机通道的外置PA,如果耳机地不接这里,接主板的地,可能通话过中会电流声
-
NC :常关耳机插座(hp_det和hph_l短路,插入耳机,hp_det和hph_l断路)
-
NO :常开耳机插座(hp_det和hph_l断路,插入耳机,hph_l接了一个喇叭(小电阻)到地,相当有hp_det和hph_l短路)
Codec 中 MBHC
Codec音频编解码器包括
1)一个机械开关检测块,用于更可靠的耳机检测;
2)耳机左声道输出上集成的10 kΩ下拉电阻;
3)MIC3_INP与MBHC输入MUX的内部连接,用于检测QTI ANC耳机。
下图是Codec中MBHC硬件的简化框图
XXX
中断检测设:
使用MBHC时不需要额外的GPIO引脚,因为CODEC包括一个中断引脚INTR1,该引脚也用于其他功能。中断信号用于在CPU和编解码器之间传输控制。CodecMBHC硬件在某个事件发生后向中断控制器生成中断信号,CPU可以通过读取编解码器中的中断状态寄存器来确定发生了什么事件;
MBHC事件支持的中断事件及其在中断控制器寄存器中的映射。详细内容需要查阅codec 寄存器手册;