static int yas_acc_set_enable(struct yas_acc_driver *driver, int enable) { struct yas_acc_private_data *data = yas_acc_get_data(); int delay = driver->get_delay(); dbg_func_in(); dbg("%s : enable=%d, delay=%d\n", __func__, enable, delay); #ifndef PANTECH_AVOID_DEADLOCK if (yas_acc_ischg_enable(driver, enable)) { #endif if (enable) { driver->set_enable(enable); schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1); dbg("%s : schedule_delayed_work(&data->work, %d)\n", __func__, delay); } else { cancel_delayed_work_sync(&data->work); dbg("%s : cancel_delayed_work_sync\n", __func__); driver->set_enable(enable); } #ifndef PANTECH_AVOID_DEADLOCK } #endif dbg_func_out(); return 0; }
static int yas_acc_set_enable(struct yas_acc_driver *driver, int enable) { struct yas_acc_private_data *data = yas_acc_get_data(); int delay = driver->get_delay(); if (yas_acc_ischg_enable(driver, enable)) { if (enable) { driver->set_enable(enable); schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1); } else { cancel_delayed_work_sync(&data->work); driver->set_enable(enable); } } return 0; }