Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}