static ssize_t set_fan_speed(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int fan_nr = to_sensor_dev_attr(attr)->index; int rpm = simple_strtol(buf, NULL, 10); struct env *p = dev_get_drvdata(dev); int period; u8 val; if (!rpm) return -EINVAL; period = FAN_RPM_TO_PERIOD(rpm); val = period >> 8; env_write(p, IREG_FAN0 + fan_nr, val); return count; }
static ssize_t set_fan_speed(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int fan_nr = to_sensor_dev_attr(attr)->index; unsigned long rpm; struct env *p = dev_get_drvdata(dev); int period; u8 val; int err; err = kstrtoul(buf, 10, &rpm); if (err) return err; if (!rpm) return -EINVAL; period = FAN_RPM_TO_PERIOD(rpm); val = period >> 8; env_write(p, IREG_FAN0 + fan_nr, val); return count; }