static void *def_tabla_mbhc_cal(void) { void *tabla_cal; struct tabla_mbhc_btn_detect_cfg *btn_cfg; u16 *btn_low, *btn_high; u8 *n_ready, *n_cic, *gain; tabla_cal = kzalloc(TABLA_MBHC_CAL_SIZE(TABLA_MBHC_DEF_BUTTONS, TABLA_MBHC_DEF_RLOADS), GFP_KERNEL); if (!tabla_cal) { pr_err("%s: out of memory\n", __func__); return NULL; } #define S(X, Y) ((TABLA_MBHC_CAL_GENERAL_PTR(tabla_cal)->X) = (Y)) S(t_ldoh, 100); S(t_bg_fast_settle, 100); S(t_shutdown_plug_rem, 255); S(mbhc_nsa, 4); S(mbhc_navg, 4); #undef S #define S(X, Y) ((TABLA_MBHC_CAL_PLUG_DET_PTR(tabla_cal)->X) = (Y)) S(mic_current, TABLA_PID_MIC_5_UA); S(hph_current, TABLA_PID_MIC_5_UA); S(t_mic_pid, 100); S(t_ins_complete, 250); S(t_ins_retry, 200); #undef S #define S(X, Y) ((TABLA_MBHC_CAL_PLUG_TYPE_PTR(tabla_cal)->X) = (Y)) S(v_no_mic, 400); //Qualcomm Latest Patch 30 -> 400 S(v_hs_max, 2550); //H/W Tuning Value for 2.7V Mic bias #undef S #define S(X, Y) ((TABLA_MBHC_CAL_BTN_DET_PTR(tabla_cal)->X) = (Y)) S(c[0], 62); S(c[1], 124); S(nc, 1); S(n_meas, 3); S(mbhc_nsc, 11); S(n_btn_meas, 1); S(n_btn_con, 2); S(num_btn, TABLA_MBHC_DEF_BUTTONS); S(v_btn_press_delta_sta, 100); S(v_btn_press_delta_cic, 50); #undef S btn_cfg = TABLA_MBHC_CAL_BTN_DET_PTR(tabla_cal); btn_low = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_V_BTN_LOW); btn_high = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_V_BTN_HIGH); #ifdef CONFIG_PANTECH_SND btn_low[0] = -50; btn_high[0] = 140; //Q.C requirement btn_low[1] = 160; btn_high[1] = 250; btn_low[2] = 160; btn_high[2] = 250; btn_low[3] = 160; btn_high[3] = 250; btn_low[4] = 160; btn_high[4] = 250; btn_low[5] = 160; btn_high[5] = 250; btn_low[6] = 160; btn_high[6] = 250; btn_low[7] = 160; btn_high[7] = 250; #else btn_low[0] = -50; btn_high[0] = 10; btn_low[1] = 11; btn_high[1] = 38; btn_low[2] = 39; btn_high[2] = 64; btn_low[3] = 65; btn_high[3] = 91; btn_low[4] = 92; btn_high[4] = 115; btn_low[5] = 116; btn_high[5] = 141; btn_low[6] = 142; btn_high[6] = 163; btn_low[7] = 164; btn_high[7] = 250; #endif n_ready = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_N_READY); n_ready[0] = 48; n_ready[1] = 38; n_cic = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_N_CIC); n_cic[0] = 60; n_cic[1] = 47; gain = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_GAIN); gain[0] = 11; gain[1] = 9; return tabla_cal; }
static void *def_tabla_mbhc_cal(void) { void *tabla_cal; struct tabla_mbhc_btn_detect_cfg *btn_cfg; u16 *btn_low, *btn_high; u8 *n_ready, *n_cic, *gain; tabla_cal = kzalloc(TABLA_MBHC_CAL_SIZE(TABLA_MBHC_DEF_BUTTONS, TABLA_MBHC_DEF_RLOADS), GFP_KERNEL); if (!tabla_cal) { pr_err("%s: out of memory\n", __func__); return NULL; } #define S(X, Y) ((TABLA_MBHC_CAL_GENERAL_PTR(tabla_cal)->X) = (Y)) S(t_ldoh, 100); S(t_bg_fast_settle, 100); S(t_shutdown_plug_rem, 255); S(mbhc_nsa, 4); S(mbhc_navg, 4); #undef S #define S(X, Y) ((TABLA_MBHC_CAL_PLUG_DET_PTR(tabla_cal)->X) = (Y)) S(mic_current, TABLA_PID_MIC_5_UA); S(hph_current, TABLA_PID_MIC_5_UA); S(t_mic_pid, 100); S(t_ins_complete, 250); S(t_ins_retry, 200); #undef S #define S(X, Y) ((TABLA_MBHC_CAL_PLUG_TYPE_PTR(tabla_cal)->X) = (Y)) S(v_no_mic, 30); S(v_hs_max, 2400); #undef S #define S(X, Y) ((TABLA_MBHC_CAL_BTN_DET_PTR(tabla_cal)->X) = (Y)) S(c[0], 62); S(c[1], 124); S(nc, 1); S(n_meas, 3); S(mbhc_nsc, 11); S(n_btn_meas, 0); S(n_btn_con, 1); S(num_btn, TABLA_MBHC_DEF_BUTTONS); S(v_btn_press_delta_sta, 100); S(v_btn_press_delta_cic, 50); #undef S btn_cfg = TABLA_MBHC_CAL_BTN_DET_PTR(tabla_cal); btn_low = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_V_BTN_LOW); btn_high = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_V_BTN_HIGH); btn_low[0] = -30; btn_high[0] = 149; btn_low[1] = 150; btn_high[1] = 299; btn_low[2] = 420; btn_high[2] = 599; btn_low[3] = 600; btn_high[3] = 1049; n_ready = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_N_READY); n_ready[0] = 80; n_ready[1] = 68; n_cic = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_N_CIC); n_cic[0] = 60; n_cic[1] = 47; gain = tabla_mbhc_cal_btn_det_mp(btn_cfg, TABLA_BTN_DET_GAIN); gain[0] = 11; gain[1] = 9; return tabla_cal; }