static void wc_work(struct work_struct *dat)
{
	if(1 == gpio_get_value(GPIO_WC_POK))
		asus_chg_set_chg_mode(ASUS_CHG_SRC_WC);
	else
		asus_chg_set_chg_mode(ASUS_CHG_SRC_NONE);
}
static void AXC_PM8921_Charger_SetCharger(AXI_Charger *apCharger , AXE_Charger_Type aeChargerType)
{
	static bool first_call = true;

	AXC_PM8921Charger *this = container_of(apCharger,
		AXC_PM8921Charger,
		msParentCharger);

	if(false == this->mbInited)
		return;

	if (!first_call && !this->m_is_bat_valid) {
		printk(DBGMSK_BAT_INFO "[BAT][PM8921] %s(), battery is invalid and cannot charging\n", __func__);
		aeChargerType = NO_CHARGER_TYPE;
	}

	printk(DBGMSK_BAT_DEBUG "[BAT][PM8921]CharegeModeSet:%d\n",aeChargerType);

	switch(aeChargerType) {
	case NO_CHARGER_TYPE:
		asus_chg_set_chg_mode(ASUS_CHG_SRC_NONE);
		this->type = aeChargerType;
		//cancel_delayed_work(&this->msNotifierWorker);
		if(NULL != this->mpNotifier)
			this->mpNotifier->Notify(&this->msParentCharger,this->type);
		break;
	case LOW_CURRENT_CHARGER_TYPE:
		asus_chg_set_chg_mode(ASUS_CHG_SRC_USB);
		this->type = aeChargerType;
		if(NULL != this->mpNotifier)
			this->mpNotifier->Notify(&this->msParentCharger,this->type);
		//cancel_delayed_work(&this->msNotifierWorker);
		//schedule_delayed_work(&this->msNotifierWorker , round_jiffies_relative(TIME_FOR_NOTIFY_AFTER_PLUGIN_CABLE));
		break;
	case HIGH_CURRENT_CHARGER_TYPE:
		asus_chg_set_chg_mode(ASUS_CHG_SRC_DC);
		this->type = aeChargerType;
		if(NULL != this->mpNotifier)
			this->mpNotifier->Notify(&this->msParentCharger,this->type);
		//cancel_delayed_work(&this->msNotifierWorker);
		//schedule_delayed_work(&this->msNotifierWorker , round_jiffies_relative(TIME_FOR_NOTIFY_AFTER_PLUGIN_CABLE));
		break;
/*
	case TEMP_NO_CHARGER_TYPE:
		asus_chg_set_chg_mode(ASUS_CHG_SRC_NONE);
		break;
*/
	default:
		printk(DBGMSK_BAT_ERR "[BAT][PM8921]Wrong ChargerMode:%d\n",aeChargerType);
		break;
	}

	if (first_call) {
		first_call = false;
	}
}