void kc_hs_jack_change_state(bool jack_state) { int result = 0; uint mic_flag = 0; HS_DBG_PRINT("%s: g_jack_state:%d, jack_state:%d\n", __func__, g_jack_state, jack_state); if (g_init_flag) { if (g_jack_state != jack_state) { hs->mic_on = hs->hs_on = (jack_state ? 1 : 0); if (jack_state) { msleep(HEADSET_GET_WAIT); result = pmic_kc_mic_is_en(&mic_flag); HS_DBG_PRINT("%s: result:%d, mic_flag:%d\n", __func__, result, mic_flag); if (0 == result) { hs->mic_on = (mic_flag ? 1 : 0); } } else { if (g_switch_state) { kc_hs_switch_change_state(false); } } HS_DBG_PRINT("### %s: hs->mic_on:%d, hs->hs_on:%d\n", __func__, hs->mic_on, hs->hs_on); update_state(); g_jack_state = jack_state; } } else { HS_DBG_PRINT("%s: no init\n", __func__); } }
static void chgic_interrupt_mic_sw(u8 interrupt_case) { if (earphone_flg) { if ((interrupt_case & CHGIC_DATA_04H_SW) != CHGIC_DATA_04H_SW) { if ((interrupt_case & CHGIC_DATA_04H_SW_ON) != 0) { key_dm_driver_set_port(0x11); kc_hs_switch_change_state(true); } else if ((interrupt_case & CHGIC_DATA_04H_SW_OFF) != 0) { key_dm_driver_set_port(0x10); kc_hs_switch_change_state(false); } } } else { bk_interrupt_mask = CHGIC_DATA_06H_STANDBY; } }