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