#!/bin/sh # acpid script for lid and power events # by Ortwin Glueck source /etc/acpi/power.conf CONN=$(cat /proc/acpi/ac_adapter/ADP1/state | awk '{print $2}') LID=$(cat /proc/acpi/button/lid/LID0/state | awk '{print $2}') if [ "${LID}" = "open" ]; then # lid open if [ "${CONN}" = "on-line" ]; then # on AC LIGHT=${AC_LIGHT} P=${AC_P} T=${AC_T} C=${AC_CPU} GOV=${AC_GOV} GOV_MIN=${AC_GOV_MIN} GOV_MAX=${AC_GOV_MAX} else # on batteries LIGHT=${BAT_LIGHT} P=${BAT_P} T=${BAT_T} C=${BAT_CPU} GOV=${BAT_GOV} GOV_MIN=${BAT_GOV_MIN} GOV_MAX=${BAT_GOV_MAX} fi else if [ "${LID_SUSPEND}" = "1" ]; then /usr/local/bin/mbps2ram & exit fi # lid closed LIGHT=${LID_LIGHT} P=${LID_P} T=${LID_T} C=${LID_CPU} GOV=${LID_GOV} GOV_MIN=${LID_GOV_MIN} GOV_MAX=${LID_GOV_MAX} fi # control backlight /usr/bin/backlight ${LIGHT} # power up/down second CPU STATE=$(cat /sys/devices/system/cpu/cpu1/online) if [ "${STATE}" != "${C}" ]; then echo ${C} > /sys/devices/system/cpu/cpu1/online fi # throttle CPUs and set governors echo -n ${P}:${T} > /proc/acpi/processor/CPU0/limit echo ${GOV} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # must first set max, then min! echo ${GOV_MAX} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo ${GOV_MIN} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq if [ "${C}" = "1" ]; then echo -n ${P}:${T} > /proc/acpi/processor/CPU1/limit echo ${GOV} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor # must first set max, then min! echo ${GOV_MAX} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq echo ${GOV_MIN} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq fi