static int e0eu_gpio_earsense_work_func(int *value) { int state; int gpio_value; gpio_value = !gpio_get_value(GPIO_EAR_SENSE); printk(KERN_INFO "%s: ear sense detected : %s\n", __func__, gpio_value ? "injected" : "ejected"); if (gpio_value == EAR_EJECT) { state = EAR_STATE_EJECT; *value = 0; gpio_set_value(GPIO_MIC_MODE, 0); snd_fm_vol_mute(); } else { state = EAR_STATE_INJECT; /* LGE_CHANGE_S : E0 [email protected] [2012-01-09] Reson : Improvement of Headset booting noise. */ gpio_set_value(GPIO_MIC_MODE, 1); /* LGE_CHANGE_E : E0 [email protected]@lge.com [2012-01-09] */ //msleep(100); gpio_value = !gpio_get_value(GPIO_BUTTON_DETECT); if (gpio_value) { printk(KERN_INFO "headphone was inserted!\n"); *value = SW_HEADPHONE_INSERT; /* LGE_CHANGE_S : E0 [email protected] [2012-01-09] Reson : Improvement of Headset booting noise. */ //gpio_set_value(GPIO_MIC_MODE, 1); /* LGE_CHANGE_E : E0 [email protected]@lge.com [2012-01-09] */ } else { printk(KERN_INFO "micorphone was inserted!\n"); *value = SW_MICROPHONE_INSERT; /* LGE_CHANGE_S : E0 [email protected] [2012-01-09] Reson : Improvement of Headset booting noise. */ //gpio_set_value(GPIO_MIC_MODE, 1); /* LGE_CHANGE_E : E0 [email protected]@lge.com [2012-01-09] */ } } return state; }
static int m4eu_gpio_earsense_work_func(int *value) { int state; int gpio_value; msleep(100); gpio_value = !gpio_get_value(GPIO_EAR_SENSE); printk(KERN_INFO "%s: ear sense detected : %s\n", __func__, gpio_value ? "injected" : "ejected"); if (gpio_value == EAR_EJECT) { state = EAR_STATE_EJECT; *value = 0; gpio_set_value(GPIO_MIC_MODE, 0); snd_fm_vol_mute(); } else { state = EAR_STATE_INJECT; msleep(50); gpio_value = !gpio_get_value(GPIO_BUTTON_DETECT); if (gpio_value) { printk(KERN_INFO "headphone was inserted!\n"); *value = SW_HEADPHONE_INSERT; gpio_set_value(GPIO_MIC_MODE,1); } else { printk(KERN_INFO "micorphone was inserted!\n"); *value = SW_MICROPHONE_INSERT; gpio_set_value(GPIO_MIC_MODE, 1); } } #if 0 //tamedwolph unnecessary headset_state = *value; #endif return state; }