Aparentemente o único kernel que permite de fato o gerenciamento de energia é o linux-omap-pm. Este kernel no entanto é muito instável, falhando muito frequentemente, tanto logo após iniciar, ou durante o uso. Portanto deve-se utilizá-lo com cuidado. Talvez versões posteriores sejam mais estáveis ou esses recursos sejam adicionados no kernel padrão. Abra o diretório $OVEROTOP/user.collection/recipes/linux/linux-omap-pm-2.6.29/overo/ ou outra versão que estaja sendo usada, caso seja o caso. Abra o defconfig com o nano ou outro editor. O que eu fiz foi habilitar tudo na seção CPU Power Management, e também Power Management Options. Caso você esteja bootando do MMC será necessário habilitar CONFIG_MMC_UNSAFE_RESUME, para que o modo de suspensão não corrompa o cartão. Aparentemente para que alguns serviços possam ser desligados durante a suspensão é preciso habilitar também CONFIG_OMAP_RESET_CLOCKS.
Se tudo tiver dado certo será possível colocar em modo de suspensão:
echo mem > /sys/power/state
Para que ele entre em suspensão automaticamente:
echo 1 > /sys/power/sleep_while_idle
Para que ele volte automaticamente após X segundos:
echo X > /sys/power/wakeup_timer_seconds
Há também configurações de um certo modo desligado, mas aparentemente não funciona, pelo menos não quando usando o MMC.
Para reduzir mais o consumo devem ser desligados os recursos que não estão sendo utilizados:
# wifi echo 0 > /sys/class/gpio/gpio16/value # bluetooth echo 0 > /sys/class/gpio/gpio164/value # usb echo 183 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio183/direction echo 0 > /sys/class/gpio/gpio183/value echo 0 > /sys/class/gpio/gpio168/value
Pode-se ainda reduzir a frequência do processador, para reduzir mais um pouco o consumo:
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo 125000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
Podem ser usadas as frequências de 600MHz, 500MHz, 250MHz e 125MHz.