#!/bin/sh
########################################################################
# Begin $rc_base/init.d/cpufreq
#
# Description : Initalisize and startup cpufreq and set a governor
#
# Authors     : Arne Fitzenreiter - arne_f@ipfire.org
#
# Version     : 01.00
#
# Notes       :
#
########################################################################

. /etc/sysconfig/rc
. ${rc_functions}

case "${1}" in
	start)
		boot_mesg -n "Starting cpufreq... "

		# try cpufreq hardware depend modules
		for i in $(find /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq \
		           ! -name speedstep-lib.ko | sort -d -r); do
			module=$(basename $i | cut -d. -f1);
			modprobe $module > /dev/null 2>&1;
			if [ ${?} = 0 ]; then
			    boot_mesg -n "$SUCCESS$module$NORMAL "
			fi
		done
		boot_mesg ""

		# load cqufreq governors
		modprobe cpufreq_conservative
		modprobe cpufreq_ondemand
		modprobe cpufreq_powersave
		modprobe cpufreq_userspace

		CPUCOUNT=`ls /sys/devices/system/cpu/cpu*/cpufreq/affected_cpus 2> /dev/null | wc -l `;
		let CPUCOUNT-=1
		# Set the governor to ondemand to test if it works 
		cpufreq-set -g ondemand
		if [ ${?} = 0 ]; then
		    # activate cpufreq collectd module
		    sed -i -e "s|^#LoadPlugin cpufreq|LoadPlugin cpufreq|g" /etc/collectd.conf

		    # Set the governor to ondemand for all cpus 
		    for i in `seq 0 $CPUCOUNT`;
		    do
			cpufreq-set -c $i -g ondemand
		    done
		    echo_ok;
		else
		    echo_failure;
		fi
		exit 0;
		;;
	*)
		echo "Usage: ${0} {start}"
		exit 1
		;;
esac

# End $rc_base/init.d/cpufreq


