高通平台耳机结构及内部原理分析
首先我们确定下美国和国标的含义,如下图,
国标耳机即是借口定义标准符合国家标准(OMTP)的耳机线,线材插头触点的接线定义从尖端到接线端的顺序依次是:左声道—右声道—麦克风—地线。国标标准被众多国产品牌手机及部分国外品牌应用,并且兼容苹果系列的手机IOS7以上系统。常用的耳机的美标标准即是指OMTP版本。
美标耳机即是接口定义标准符合国际标准(CTIA)的3.5mm接口,该插头的触点接线定义,从尖端到接线处的顺序分别是:左声道—右声道—地线—麦克风,美标标准被大多数国际品牌手机使用,并且能够兼容苹果系列和非苹果系列的手机。常用的耳机的美标标准即是指CTIA版本,应用美标耳机标准的品牌包括苹果,三星,小米,HTC,索尼,华为(部分)等。
目前我们耳机使用比较多的基本是美标,耳机座也是分NC(常闭)和NO(常开)两种,如下图,HS-DET左图是和左声道脚连接(常闭),右图是和左声道脚断开(常开)。
在常闭型(NC)中,不接耳机时,耳机座左声道和检测端HS-DET接触,插入耳机时,HS-DET与HPH-L不导通。HS-DET为高电平;高电平为1.8V;
在常开型(NO)中,不接耳机时,耳机座左声道和检测端HS-DET不接触,插入耳机时,HS-DET与HPH-L导通。HS-DET为低电平;
在高通软件代码中,首先要确认硬件上耳机是常闭型还是常开型,然后需要在代码中修改相应位置。
在设备树中确定耳机是常闭型或者常开型。
qcom,msm-mbhc-hphl-swh = <1>;“0 for NC,1 for NO”
而在kernel中就是对耳机MHBC的检测和初始化,
mbhc_sw_intr = MSM8X16_WCD_IRQ_MBHC_HS_DET,
mbhc_btn_press_intr = MSM8X16_WCD_IRQ_MBHC_PRESS,
headset
mbhc_btn_release_intr = MSM8X16_WCD_IRQ_MBHC_RELEASE,
mbhc_hs_ins_intr = MSM8X16_WCD_IRQ_MBHC_INSREM_DET1,
mbhc_hs_rem_intr = MSM8X16_WCD_IRQ_MBHC_INSREM_DET,
hph_left_ocp = MSM8X16_WCD_IRQ_HPHL_OCP,
hph_right_ocp = MSM8X16_WCD_IRQ_HPHR_OCP,
耳机分三段耳机和四段耳机,而四段耳机又分为欧标和美标两种。通常,四段耳机被写作headset,而三段耳机写作headphones。
三段耳机:线序分别为,L、R、G,没有MIC端,所以三段耳机无法使用mic,只能接受声音,另外,三段耳机L,R线序长度正常,G端比较长。
四段-美标(CTIA)耳机:线序分别为L,R,G,M,第三阶为GND。
四段-欧标(OMTP)耳机:线序分别为L,R,M,G,第四段为GND。
那在MBHC中会枚举耳机的类型
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, //——欧美标标志位
而高通平台对耳机的检测是在wcd_mbhc_v2.c中进行,在耳机接孔中存在一个detced引脚,用于检测是否有设备接入,具体接入的设备,会根据对micbias的电压等参数来做判断,还有判断是headset,headphones等,如果是headphones,最终通过wcd_mbhc_jack_report 将数据汇报上去。
下面是高通平台耳机插入检测的流程图
从图中软件需要确认的事是:
1、插入检测,qcom,msm-mbhc-hphl-swh =<1>;//0是NC,1是NO
2、确认耳机mic的micbias电压是使用内部还是外部。
qcom,msm-hs-micbias-type = "internal"; //内部
qcom,msm-hs-micbias-type = "external"; //外部
3、耳机所使用的micbias输出上是否接有外部电容,如果接有外部电容,需要添加:
qcom,msm-micbias2-ext-cap
4、micbias电压更改,适应不同阻抗耳机。
5、lineout设备处理,可以修改linein_th的阀值来增加识别范围。
6、调节耳机按键电压阈值。
下面是高通的codec硬件结构图
从高通平台内部codec结构图我们可以清晰了解高通的配置电路。