今天说下 mic bias的电压和外部内部偏置的问题。
内部和外部偏置 我个人理解是启用哪个上拉电阻,内部or 外部 。
关于mic bias 高通codec内部有好多开关,兼容支持硅mic 和 ECM 。
dts :配置
"MIC BIAS External", "Handset Mic",
"MIC BIAS External2", "Headset Mic",
"MIC BIAS External", "Secondary Mic",
codec driver :
SND_SOC_DAPM_MICBIAS("MIC BIASExternal", MSM8X16_WCD_A_ANALOG_MICB_1_EN, 7,0),
//控制mic bias 电源的开关 如果是外部的,高通只提供mic bias的电压,剩下的用户去设计 。
对于内部的,
SND_SOC_DAPM_MICBIAS_E("MIC BIASInternal1", MSM8X16_WCD_A_ANALOG_MICB_1_EN,7, 0,
msm8x16_wcd_codec_enable_micbias,SND_SOC_DAPM_PRE_PMU |
SND_SOC_DAPM_POST_PMU |SND_SOC_DAPM_POST_PMD),
这个回调函数 msm8x16_wcd_codec_enable_micbias,
控制了上拉电阻的打开,主要的寄存器就是 CDC_A_MICB_1_INT_RBIAS内部的电阻的偏置设置, 通过snd_soc_dapm_route 结构体添加widget 链路中,这里面有个ADC的参考电压。
micbias 电压的配置 :
micbias的硬件电路是 一个 LDO 输出连接到一个可控的稳压器,从寄存器不难看出CDC_A_MICB_1_VAL,默认值是0x02,1.8V
从dts来看是 LDO13 , 电压是3.075V ,msm-pm8916.dtsi
cdc-vdd-mic-bias-supply = <&pm8916_l13>;
qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
qcom,cdc-vdd-mic-bias-current = <25000>;
默认代码没有对该寄存器操作,只有在MBHC的时候有设置,普通录音使用的就是默认值。
外部bypass 电容开关 , 兼容硅mic 和ECM,
SOC_SINGLE("MICBIAS CAPLESSSwitch", MSM8X16_WCD_A_ANALOG_MICB_1_EN, 6, 1,0),