高通Android平台 耳机按键配置方法
在srclinuxandroidkernelsoundsocMsmMsm8x16.c中
static void *def_msm8x16_wcd_mbhc_cal(void)
{
void *msm8x16_wcd_cal;
struct wcd_mbhc_btn_detect_cfg *btn_cfg;
u16 *btn_low, *btn_high;
msm8x16_wcd_cal = kzalloc(sizeof(struct wcd_mbhc_btn_detect_cfg),
GFP_KERNEL);
if (!msm8x16_wcd_cal) {
pr_err("%s: out of memoryn", __func__);
return NULL;
}
btn_cfg = WCD_MBHC_CAL_BTN_DET_PTR(msm8x16_wcd_cal);
btn_cfg->num_btn = WCD_MBHC_DEF_BUTTONS;
btn_low = btn_cfg->_v_btn_low;
btn_high = btn_cfg->_v_btn_high;
//button 定义,后面是按键偏置电压
btn_low[0] = 0;
btn_high[0] = 25;
btn_low[1] = 25;
btn_high[1] = 50;
btn_low[2] = 50;
btn_high[2] = 75;
btn_low[3] = 75;
btn_high[3] = 112;
btn_low[4] = 112;
btn_high[4] = 137;
return msm8x16_wcd_cal;
}
srclinuxandroidkernelsoundsocCodecsWcd-mbhc-v2.c
int wcd_mbhc_init()
{
//对应前面的btn_low[0]--btn_high[0],
KEY_MEDIA就是对应耳机挂机按键值ret = snd_jack_set_key(mbhc->button_jack.jack,
SND_JACK_BTN_0,
KEY_MEDIA);
}
srclinuxandroidkernelincludeuapiLinuxInput.h中定义各种键值
#define KEY_MEDIA 226
button jack 00e2 就是 226