static ssize_t ak09911c_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { u8 enable; int ret; struct ak09911c_p *data = dev_get_drvdata(dev); ret = kstrtou8(buf, 2, &enable); if (ret) { pr_err("%s Invalid Argument\n", __func__); return ret; } pr_info("%s new_value = %u\n", __func__, enable); if ((enable == 0) || (enable == 1)) ak09911c_set_enable(data, (int)enable); return size; }
static int __devexit ak09911c_remove(struct i2c_client *client) { struct ak09911c_p *data = (struct ak09911c_p *)i2c_get_clientdata(client); if (atomic_read(&data->enable) == 1) ak09911c_set_enable(data, 0); gpio_free(data->m_rst_n); mutex_destroy(&data->lock); sensors_unregister(data->factory_device, sensor_attrs); sensors_remove_symlink(&data->input->dev.kobj, data->input->name); sysfs_remove_group(&data->input->dev.kobj, &ak09911c_attribute_group); input_unregister_device(data->input); kfree(data); return 0; }