1、使能micbias的时候会编程阈值寄存器。
vendor/qcom/opensource/audio-kernel/asoc/codecs/wcd-mbhc-v2.c
enum wcd_mbhc_cs_mb_en_flag {
WCD_MBHC_EN_CS = 0,
WCD_MBHC_EN_MB,
WCD_MBHC_EN_PULLUP,
WCD_MBHC_EN_NONE,
};
2、调用函数指针去设置按键阈值
vendor/qcom/opensource/audio-kernel/asoc/codecs/wcd-mbhc-v2.c
mbhc->mbhc_cb->set_btn_thr(component, btn_low, btn_high,
btn_det->num_btn, micbias);
3、对应的函数
vendor/qcom/opensource/audio-kernel/asoc/codecs/wcd937x/wcd937x-mbhc.c
static const struct wcd_mbhc_cb mbhc_cb = {
.set_btn_thr = wcd937x_mbhc_program_btn_thr,
4、
vendor/qcom/opensource/audio-kernel/asoc/codecs/wcd937x/wcd937x-mbhc.c
wcd937x_mbhc_program_btn_thr()
可以看出btn_hight最高不能超过787,超过后&0x3F会变成一个很小的值。
5、上报键值
snd_jack_report()