static int yas_acc_resume(struct i2c_client *client) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; int delay; mutex_lock(&data->data_mutex); #ifdef WILLOW_SENSOR_REGULATOR_CONTROL regulator_enable(data->regulator); #endif if (data->suspend == 1) { if (data->suspend_enable) { delay = yas_acc_get_delay(driver); schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1); yas_acc_set_enable(driver, 1); } } data->suspend = 0; mutex_unlock(&data->data_mutex); return 0; }
void yas_acc_shutdown(struct i2c_client *client) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; yas_acc_set_enable(driver, 0); }
static int yas_acc_resume(struct i2c_client *client) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; int delay; dbg_func_in(); #ifdef POWER_ON_OFF geomagnetic_set_power(1); #endif #ifndef PANTECH_AVOID_DEADLOCK mutex_lock(&data->data_mutex); #endif dbg("%s : data->suspend = %d / data->suspend_enable = %d / delay = %d\n", __func__, data->suspend, yas_acc_get_enable(driver), yas_acc_get_delay(driver)); if (data->suspend == 1) { if (data->suspend_enable) { delay = yas_acc_get_delay(driver); #ifndef PANTECH_AVOID_DEADLOCK schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1); #endif yas_acc_set_enable(driver, 1); } } data->suspend = 0; #ifndef PANTECH_AVOID_DEADLOCK mutex_unlock(&data->data_mutex); #endif dbg_func_out(); return 0; }
static int yas_acc_suspend(struct i2c_client *client, pm_message_t mesg) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; dbg_func_in(); dbg("%s : data->suspend = %d / data->suspend_enable = %d\n", __func__, data->suspend, yas_acc_get_enable(driver)); #ifndef PANTECH_AVOID_DEADLOCK mutex_lock(&data->data_mutex); #endif if (data->suspend == 0) { data->suspend_enable = yas_acc_get_enable(driver); if (data->suspend_enable) { #ifndef PANTECH_AVOID_DEADLOCK cancel_delayed_work_sync(&data->work); #endif yas_acc_set_enable(driver, 0); } } data->suspend = 1; #ifndef PANTECH_AVOID_DEADLOCK mutex_unlock(&data->data_mutex); #endif #ifdef POWER_ON_OFF geomagnetic_set_power(0); #endif dbg_func_out(); return 0; }
static int yas_acc_close(struct inode *inode, struct file *file) { int err= 0 ; printk("yac_acc_close\n"); struct yas_acc_private_data* data = gyas_acc; err = yas_acc_set_enable(data->driver, 0); return err; }
static ssize_t yas_acc_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct input_dev *input = to_input_dev(dev); struct yas_acc_private_data *data = input_get_drvdata(input); unsigned long enable = simple_strtoul(buf, NULL, 10); yas_acc_set_enable(data->driver, enable); return count; }
static int yas_acc_open(struct inode *inode, struct file *file) { int err= 0 ; //struct yas_acc_private_data* data = container_of(file -> private_data, // struct yas_acc_private_data, // yas_acc_device); printk("yac_acc_open\n"); struct yas_acc_private_data* data = gyas_acc; err = yas_acc_set_enable(data->driver, 1); file -> private_data = data; return err; }
static int yas_acc_remove(struct i2c_client *client) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; yas_acc_set_enable(driver, 0); sysfs_remove_group(&data->input->dev.kobj, &yas_acc_attribute_group); yas_acc_input_fini(data); yas_acc_core_driver_fini(data); kfree(data); return 0; }
static int bma222_exit_proc() { struct yas_acc_private_data *data = yas_acc_get_data(); struct yas_acc_driver *driver = data->driver; #if defined(CONFIG_HAS_EARLYSUSPEND) unregister_early_suspend(&data->early_suspend); #endif yas_acc_set_enable(driver, 0); sysfs_remove_group(&data->input->dev.kobj, &yas_acc_attribute_group); yas_acc_input_fini(data); yas_acc_core_driver_fini(data); kfree(data); return 0; }
static int yas_acc_remove(struct i2c_client *client) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; #ifdef CONIFG_HAS_EARLYSUSPEND unregister_early_suspend(&data->early_suspend); #endif yas_acc_set_enable(driver, 0); sysfs_remove_group(&data->input->dev.kobj, &yas_acc_attribute_group); yas_acc_input_fini(data); yas_acc_core_driver_fini(data); #ifdef WILLOW_SENSOR_REGULATOR_CONTROL regulator_disable(data->regulator); #endif kfree(data); return 0; }
static int yas_acc_suspend(struct i2c_client *client, pm_message_t mesg) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; mutex_lock(&data->data_mutex); if (data->suspend == 0) { data->suspend_enable = yas_acc_get_enable(driver); if (data->suspend_enable) { cancel_delayed_work_sync(&data->work); yas_acc_set_enable(driver, 0); } } data->suspend = 1; mutex_unlock(&data->data_mutex); return 0; }
static int yas_acc_resume(struct i2c_client *client) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; int delay; mutex_lock(&data->data_mutex); if (data->suspend == 1) { if (data->suspend_enable) { delay = yas_acc_get_delay(driver); schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1); yas_acc_set_enable(driver, 1); } } data->suspend = 0; mutex_unlock(&data->data_mutex); return 0; }
void yas_acc_late_resume(struct early_suspend *h) { struct yas_acc_private_data *data = container_of(h, struct yas_acc_private_data, early_suspend); struct yas_acc_driver *driver = data->driver; int delay; #ifdef WILLOW_SENSOR_REGULATOR_CONTROL regulator_enable(data->regulator); #endif mutex_lock(&data->data_mutex); if (data->suspend == 1) { if (data->suspend_enable) { delay = yas_acc_get_delay(driver); schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1); yas_acc_set_enable(driver,1); } } data->suspend = 0; mutex_unlock(&data->data_mutex); }
void yas_acc_early_suspend(struct early_suspend *h) { struct yas_acc_private_data *data = container_of(h, struct yas_acc_private_data, early_suspend); struct yas_acc_driver *driver = data->driver; mutex_lock(&data->data_mutex); if (data->suspend == 0) { data->suspend_enable = yas_acc_get_enable(driver); if (data->suspend_enable) { cancel_delayed_work_sync(&data->work); yas_acc_set_enable(driver, 0); } } data->suspend = 1; mutex_unlock(&data->data_mutex); #ifdef WILLOW_SENSOR_REGULATOR_CONTROL regulator_disable(data->regulator); #endif }
static int yas_acc_suspend(struct i2c_client *client, pm_message_t mesg) { struct yas_acc_private_data *data = i2c_get_clientdata(client); struct yas_acc_driver *driver = data->driver; mutex_lock(&data->data_mutex); #ifdef WILLOW_SENSOR_REGULATOR_CONTROL regulator_disable(data->regulator); #endif if (data->suspend == 0) { data->suspend_enable = yas_acc_get_enable(driver); if (data->suspend_enable) { cancel_delayed_work_sync(&data->work); yas_acc_set_enable(driver, 0); } } data->suspend = 1; mutex_unlock(&data->data_mutex); return 0; }