static ssize_t geomagnetic_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct input_dev *input_data = to_input_dev(dev); struct geomagnetic_data *data = input_get_drvdata(input_data); int value; value = !!simple_strtol(buf, NULL, 10); if (hwdep_driver.set_enable == NULL) { return -ENOTTY; } if (geomagnetic_multi_lock() < 0) { return count; } if (hwdep_driver.set_enable(value) == 0) { if (value) { geomagnetic_enable(data); } else { geomagnetic_disable(data); } } geomagnetic_multi_unlock(); return count; }
static ssize_t geomagnetic_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct input_dev *input_data = to_input_dev(dev); struct geomagnetic_data *data = input_get_drvdata(input_data); int value; dbg_func_in(); value = !!simple_strtol(buf, NULL, 10); dbg("%s : enable(%d)\n", __func__, value); if (hwdep_driver.set_enable == NULL) { return -ENOTTY; } #ifndef PANTECH_AVOID_DEADLOCK //p12911 : ef33s sensor patch if (geomagnetic_multi_lock() < 0) { return count; } #endif if (hwdep_driver.set_enable(value) == 0) { if (value) { geomagnetic_enable(data); } else { geomagnetic_disable(data); } } #ifndef PANTECH_AVOID_DEADLOCK geomagnetic_multi_unlock(); #endif dbg_func_out(); return count; }
static int geomagnetic_remove(struct i2c_client *client) { struct geomagnetic_data *data = i2c_get_clientdata(client); if (data != NULL) { geomagnetic_disable(data); if (hwdep_driver.term != NULL) { hwdep_driver.term(); } input_unregister_device(data->input_raw); sysfs_remove_group(&data->input_data->dev.kobj, &geomagnetic_attribute_group); sysfs_remove_group(&data->input_raw->dev.kobj, &geomagnetic_raw_attribute_group); input_unregister_device(data->input_data); kfree(data); } return 0; }