static ssize_t ms5607_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct i2c_client *client = to_i2c_client(dev); struct ms5607_data *ms5607 = i2c_get_clientdata(client); unsigned long val; if (strict_strtoul(buf, 10, &val)) return -EINVAL; if (val != MS5607_SYSFS_POWERON && val != MS5607_SYSFS_POWERDOWN) return -EINVAL; mutex_lock(&ms5607->lock); if (val) ms5607_enable(ms5607); else ms5607_disable(ms5607); ms5607->enabled = val; /* * We don't know if user space application has e.g. restarted. So * better to report coeff data again. */ ms5607->report_coeff = val; mutex_unlock(&ms5607->lock); return count; }
static ssize_t ms5607_enable_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct i2c_client *client = to_i2c_client(dev); struct ms5607_data *ms5607 = i2c_get_clientdata(client); unsigned long val; if (strict_strtoul(buf, 10, &val)) return -EINVAL; if (val != MS5607_SYSFS_POWERON && val != MS5607_SYSFS_POWERDOWN) return -EINVAL; mutex_lock(&ms5607->lock); if (val) ms5607_enable(ms5607); else ms5607_disable(ms5607); ms5607->enabled = val; mutex_unlock(&ms5607->lock); return count; }
static void ms5607_late_resume(struct early_suspend *h) { struct ms5607_data *ms5607 = container_of(h, struct ms5607_data, es); mutex_lock(&ms5607->lock); if (ms5607->enabled) ms5607_enable(ms5607); mutex_unlock(&ms5607->lock); }
static int ms5607_resume(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct ms5607_data *ms5607 = i2c_get_clientdata(client); mutex_lock(&ms5607->lock); if (ms5607->enabled) ms5607_enable(ms5607); mutex_unlock(&ms5607->lock); return 0; }