Re: [PATCH] hwmon: (w83795) Unconditionally support manual fan speed control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jean,

On Sun, Jan 22, 2012 at 12:36:13PM -0500, Jean Delvare wrote:
> Manual fan speed control uses a standard interface and has received
> sufficient testing and review by now, it can be enabled
> unconditionally. This includes attributes pwm[1-8], pwm[1-8]_enable,
> pwm[1-8]_mode and pwm[1-8]_freq.
> 
> We only let the user switch from automatic mode to manual mode, but
> not the other way around, as automatic control settings may not have
> been set properly by the BIOS.
> 
> Signed-off-by: Jean Delvare <khali@xxxxxxxxxxxx>
> ---
>  drivers/hwmon/Kconfig  |    9 +++++----
>  drivers/hwmon/w83795.c |   26 ++++++++++++++++++--------
>  2 files changed, 23 insertions(+), 12 deletions(-)
> 
> --- linux-3.2.orig/drivers/hwmon/w83795.c	2011-07-22 04:17:23.000000000 +0200
> +++ linux-3.2/drivers/hwmon/w83795.c	2012-01-22 14:50:25.309726525 +0100
> @@ -929,6 +929,14 @@ store_pwm_enable(struct device *dev, str
>  	if (val < 1 || val > 2)
>  		return -EINVAL;
>  
> +#ifndef CONFIG_SENSORS_W83795_FANCTRL
> +	if (val > 1) {
> +		dev_warn(dev, "Automatic fan speed control support disabled\n");
> +		dev_warn(dev, "Build with CONFIG_SENSORS_W83795_FANCTRL=y if you want it\n");
> +		return -EOPNOTSUPP;
> +	}
> +#endif
> +
>  	mutex_lock(&data->update_lock);
>  	switch (val) {
>  	case 1:
> @@ -1625,18 +1633,18 @@ store_sf_setup(struct device *dev, struc
>  #define SENSOR_ATTR_PWM(index) {					\
>  	SENSOR_ATTR_2(pwm##index, S_IWUSR | S_IRUGO, show_pwm,		\
>  		store_pwm, PWM_OUTPUT, index - 1),			\
> +	SENSOR_ATTR_2(pwm##index##_enable, S_IWUSR | S_IRUGO,		\
> +		show_pwm_enable, store_pwm_enable, NOT_USED, index - 1), \
> +	SENSOR_ATTR_2(pwm##index##_mode, S_IRUGO,			\
> +		show_pwm_mode, NULL, NOT_USED, index - 1),		\
> +	SENSOR_ATTR_2(pwm##index##_freq, S_IWUSR | S_IRUGO,		\
> +		show_pwm, store_pwm, PWM_FREQ, index - 1),		\
>  	SENSOR_ATTR_2(pwm##index##_nonstop, S_IWUSR | S_IRUGO,		\
>  		show_pwm, store_pwm, PWM_NONSTOP, index - 1),		\
>  	SENSOR_ATTR_2(pwm##index##_start, S_IWUSR | S_IRUGO,		\
>  		show_pwm, store_pwm, PWM_START, index - 1),		\
>  	SENSOR_ATTR_2(pwm##index##_stop_time, S_IWUSR | S_IRUGO,	\
>  		show_pwm, store_pwm, PWM_STOP_TIME, index - 1),	 \
> -	SENSOR_ATTR_2(pwm##index##_freq, S_IWUSR | S_IRUGO,	\
> -		show_pwm, store_pwm, PWM_FREQ, index - 1),	 \
> -	SENSOR_ATTR_2(pwm##index##_enable, S_IWUSR | S_IRUGO,		\
> -		show_pwm_enable, store_pwm_enable, NOT_USED, index - 1), \
> -	SENSOR_ATTR_2(pwm##index##_mode, S_IRUGO,			\
> -		show_pwm_mode, NULL, NOT_USED, index - 1),		\
>  	SENSOR_ATTR_2(fan##index##_target, S_IWUSR | S_IRUGO, \
>  		show_fanin, store_fanin, FANIN_TARGET, index - 1) }
>  
> @@ -2006,15 +2014,17 @@ static int w83795_handle_files(struct de
>  		}
>  	}
>  
> -#ifdef CONFIG_SENSORS_W83795_FANCTRL
>  	for (i = 0; i < data->has_pwm; i++) {
> +#ifdef CONFIG_SENSORS_W83795_FANCTRL
>  		for (j = 0; j < ARRAY_SIZE(w83795_pwm[0]); j++) {
> +#else
> +		for (j = 0; j < 4; j++) {
> +#endif

In situations like this I came to prefer something like

#ifdef CONFIG_SENSORS_W83795_FANCTRL
#define NUM_PWM_ATTRIBUTES	ARRAY_SIZE(w83795_pwm[0])
#else
#define NUM_PWM_ATTRIBUTES	4
#endif
...
		for (j = 0; j < NUM_PWM_ATTRIBUTES; j++)

to avoid the ifdef in the code, especially in situations like this where opening
and closing brackets no longer match due to the ifdef.

Other than that,

Acked-by: Guenter Roeck <guenter.roeck@xxxxxxxxxxxx>

I guess this should be independent of the multiline comment patch I sent out earlier.
Would be good, though, if both are in the same tree. Do you want me to take both patches,
or do you want to take them ? Let me know.

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux