Show
Ignore:
Timestamp:
12/04/11 17:53:10 (6 months ago)
Author:
khali
Message:

fancontrol: Support setup where one PWM output controls several fans

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/prog/pwm/fancontrol

    r5770 r6000  
    237237        while (( $fcvcount < ${#AFCFAN[@]} )) # go through all fan inputs 
    238238        do 
    239                 fan=${AFCFAN[$fcvcount]} 
    240                 if [ ! -r $fan ] 
    241                 then 
    242                         echo "Error: file $fan doesn't exist" 
    243                         outdated=1 
    244                 fi 
     239                # A given PWM output can control several fans 
     240                for fan in $(echo ${AFCFAN[$fcvcount]} | sed -e 's/+/ /') 
     241                do 
     242                        if [ ! -r $fan ] 
     243                        then 
     244                                echo "Error: file $fan doesn't exist" 
     245                                outdated=1 
     246                        fi 
     247                done 
    245248                let fcvcount=$fcvcount+1 
    246249        done 
     
    406409                if [[ -n ${fan} ]] 
    407410                then 
    408                         read fanval < ${fan} 
    409                         if [ $? -ne 0 ] 
    410                         then 
    411                                 echo "Error reading Fan value from $DIR/$fan" 
    412                                 restorefans 1 
    413                         fi 
     411                        min_fanval=100000 
     412                        fanval= 
     413                        # A given PWM output can control several fans 
     414                        for one_fan in $(echo $fan | sed -e 's/+/ /') 
     415                        do 
     416                                read one_fanval < ${one_fan} 
     417                                if [ $? -ne 0 ] 
     418                                then 
     419                                        echo "Error reading Fan value from $DIR/$one_fan" 
     420                                        restorefans 1 
     421                                fi 
     422 
     423                                # Remember the minimum, it only matters if it is 0 
     424                                if [ $one_fanval -lt $min_fanval ] 
     425                                then 
     426                                        min_fanval=$one_fanval 
     427                                fi 
     428 
     429                                if [ -z "$fanval" ] 
     430                                then 
     431                                        fanval=$one_fanval 
     432                                else 
     433                                        fanval="$fanval/$one_fanval" 
     434                                fi 
     435                        done 
    414436                else 
    415437                        fanval=1  # set it to a non zero value, so the rest of the script still works 
     
    431453                        echo "pwmpval=$pwmpval" 
    432454                        echo "fanval=$fanval" 
     455                        echo "min_fanval=$min_fanval" 
    433456                fi 
    434457 
     
    440463                  # calculate the new value from temperature and settings 
    441464                  pwmval="(${tval}-${mint})*(${maxpwm}-${minso})/(${maxt}-${mint})+${minso}" 
    442                   if [ $pwmpval -eq 0 -o $fanval -eq 0 ] 
     465                  if [ $pwmpval -eq 0 -o $min_fanval -eq 0 ] 
    443466                  then # if fan was stopped start it using a safe value 
    444467                        echo $minsa > $pwmo