static void bq27541_battery_work(struct work_struct *work) { unsigned int value; struct bq27541_dev_info *di = container_of(work, struct bq27541_dev_info, monitor_work.work); const int interval = HZ * 10; pr_info("at %s\n",__func__); //bq27541_battery_update_status(di); if(!bBq27541Supend) { /*if ((di->battery_status == POWER_SUPPLY_STATUS_CHARGING) && (bq27x00_battery_ai(di)<0)) //something wrong with mc23892 { pmic_read_reg(REG_CHARGE, &value, 0xffffff); value |= 0x100000; pmic_write_reg(REG_CHARGE, value, 0xffffff); }*/ if(plat_data->ch_status()){ set_charge_current(); } bq27541_battery_update_status(di); } queue_delayed_work(di->monitor_wqueue, &di->monitor_work, interval); }
static int usbdc_thread(void *unused) { while(1) { set_current_state(TASK_INTERRUPTIBLE); schedule(); msleep(200); bFastCharge = 0; if (plat_data != NULL) { if (bq27x00_battery_ai(di) > 0) { di->battery_status = POWER_SUPPLY_STATUS_DISCHARGING; } else { di->battery_status = POWER_SUPPLY_STATUS_CHARGING; set_charge_current(); } } if ( di != NULL) { power_supply_changed(&di->bat); } } return 0; }
bool CapacitiveSensor::connect(ConnectionPtr the_device) { m_impl->m_sensor_device = the_device; m_impl->m_sensor_accumulator.clear(); if(the_device /*&& the_uart_device->is_open()*/) { the_device->drain(); set_thresholds(m_impl->m_thresh_touch, m_impl->m_thresh_release); set_charge_current(m_impl->m_charge_current); m_impl->m_sensor_device->set_receive_cb(std::bind(&CapacitiveSensor::receive_data, this, std::placeholders::_1, std::placeholders::_2)); return true; } return false; }