#!/bin/sh
#
# Simple script to alter kernel parameters for CPUMODE.d
# Andrew Wyatt
#
# Sysctl script for altering parameters when shifting to battery mode.
#
# Add any custom kernel parameters here.
#

cpupower frequency-set -g ondemand

echo 5 > /proc/sys/vm/laptop_mode
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
echo 1 > /sys/module/snd_hda_intel/parameters/power_save

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
echo 0 > /proc/sys/kernel/nmi_watchdog
echo 1 > /sys/devices/system/cpu/sched_smt_power_savings

### OSS Radeon Driver power management
echo low > /sys/class/drm/card0/device/power_profile

### Automatic device power management management
for fdevice in /sys/bus/{pci,spi,i2c}/devices/*/power/control; do
  echo auto > $fdevice
done

for sdevice in /sys/class/scsi_host/host*/link_power_management_policy; do
  echo min_power > $sdevice
done

for usb in /sys/bus/usb/devices/*/power/autosuspend; do
  echo 1 > $usb;
done

### WIFI power management
WIFI_ADAPTER=$(find /sys/class/net/*/ | grep wireless | head -n 1 | sed -s -e "s#^/sys.*net/##" -e "s#/wireless.*\$##")
iw dev $WIFI_ADAPTER set power_save on

### SHE and GMA overclock support
if [[ $(dmidecode -s processor-version) =~ "Atom" ]]; then
  if [[ $(lspci -s 00:02.0) =~ "945GME" ]]; then
      setpci -s 00:02.0 f0.b=00,60
      setpci -s 00:02.0 f0.b=34,05
  fi
fi

if [ -e "/sys/devices/platform/eeepc/she" ]; then
  SHE_DEVICE="/sys/devices/platform/eeepc/she"
elif [ -e "/sys/devices/platform/eeepc/cpufv" ]; then
  SHE_DEVICE="/sys/devices/platform/eeepc/cpufv"
else
  exit 0
fi

if [ "$SHE_DEVICE" ]; then
  echo "2" > $SHE_DEVICE
  if [ ! "$?" = "0" ]; then
    echo "1" > $SHE_DEVICE
  fi
fi

