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;
}