Power

D0, Device power state, equivalent to “fully on”. D1 and D2 are intermediate states; D3 is “Off”

S0ix, An “active idle” sleep state, which delivers the same power consumption as S3 sleep, yet provides a quick activate time into full S0 state

Links

Kernel Integration

    root@edison:~# rfkill block Bluetooth # BlueTooth

    root@edison:~# modprobe -r bcm4334x # WiFi
    root@edison:~# modprobe bcm4334x # WiFi

    root@edison:~# /sbin/iwconfig wlan0 power off
    root@edison:~# /sbin/iwconfig wlan0 power on 

    root@edison:~# cat /sys/power/state 
    freeze mem
    root@edison:~# cat /sys/power/pm_test
    [none] core processors platform devices freezer

    root@edison:~# echo 1 > /sys/devices/system/cpu/offline 

    root@edison:~# ls /sys/power/
    pm_async           pm_print_times     state              wake_unlock
    pm_freeze_timeout  pm_test            wake_lock          wakeup_count
    root@edison:~# cat /sys/devices/system/cpu/     
    cpu0/       cpuidle/    offline     power/      release     
    cpu1/       kernel_max  online      present     uevent      
    cpufreq/    modalias    possible    probe
    root@edison:~# ls /sys/devices/system/cpu/cpu0/cpufreq/                         
    affected_cpus                  scaling_cur_freq
    cpuinfo_cur_freq               scaling_driver
    cpuinfo_max_freq               scaling_governor
    cpuinfo_min_freq               scaling_max_freq
    cpuinfo_transition_latency     scaling_min_freq
    related_cpus                   scaling_setspeed
    scaling_available_frequencies  stats
    scaling_available_governors
    root@edison:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
    ondemand userspace performance
    root@edison:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    500000
```sh

### Suspend to Ram, Yocto BSP Edison 3.0

```sh
root@edison:~# echo mem > /sys/power/state 
[   64.899755] intel_scu_watchdog_evo: watchdog_stop
root@edison:~# echo mem > /sys/power/state 
[   72.953877] intel_scu_watchdog_evo: watchdog_stop

Failure under some specific condition

root@edison:~# echo mem > /sys/power/state 
[ 2644.850650] intel_scu_watchdog_evo: watchdog_stop
[ 2644.904499] pci_pm_suspend(): sdhci_pci_suspend+0x0/0xd0 returns -16
[ 2644.904516] dpm_run_callback(): pci_pm_suspend+0x0/0x1d0 returns -16
[ 2644.904532] PM: Device 0000:00:01.3 failed to suspend async: error -16
[ 2644.925786] PM: Some devices failed to suspend
-sh: echo: write error: Device or resource busy

Suspend to Ram, Yocto BSP Edison 2.1

    root@edison:~# echo "mem" > /sys/power/state
    [23496.070128] pci_pm_suspend(): sdhci_pci_suspend+0x0/0xd0 returns -16
    [23496.070144] dpm_run_callback(): pci_pm_suspend+0x0/0x1d0 returns -16
    [23496.070158] PM: Device 0000:00:01.3 failed to suspend async: error -16
    [23496.091362] PM: Some devices failed to suspend
    -sh: echo: write error: Device or resource busy

    [23495.740274] PM: Syncing filesystems ... done.
    [23495.743025] PM: Preparing system for mem sleep
    [23495.752571] Freezing user space processes ... (elapsed 0.06 seconds) done.
    [23495.820232] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
    [23495.840185] PM: Entering mem sleep
    [23495.840463] Suspending console(s) (use no_console_suspend to debug)
    [23495.980087] snd_intel_sst: runtime_resume called
    [23496.001158] CFG80211-ERROR) wl_cfg80211_disconnect : Reason 3
    [23496.005525] CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_LINK
    [23496.005543] link down if wlan0 may call cfg80211_disconnected. event : 16, reason=2 from     f8:01:13:a8:2b:40
    [23496.007379] CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_DEAUTH
    [23496.007392] CFG80211-ERROR) wl_is_linkdown : Link down Reason : WLC_E_DEAUTH
    [23496.011506] snd_intel_sst: runtime_suspend called
    [23496.011626] bcove_thrm bcove_thrm: suspend called.
    [23496.011798] cfg80211: Calling CRDA for country: MX
    [23496.020168] bcmsdh_sdmmc_suspend Enter
    [23496.020174] bcmsdh_sdmmc_suspend Enter
    [23496.070092] bcmsdh_sdmmc_resume Enter
    [23496.070128] pci_pm_suspend(): sdhci_pci_suspend+0x0/0xd0 returns -16
    [23496.070144] dpm_run_callback(): pci_pm_suspend+0x0/0x1d0 returns -16
    [23496.070158] PM: Device 0000:00:01.3 failed to suspend async: error -16
    [23496.091362] PM: Some devices failed to suspend
    [23496.091661] bcove_thrm bcove_thrm: resume called.
    [23496.092335] snd_intel_sst: runtime_resume called
    [23496.200343] PM: resume of devices complete after 108.965 msecs
    [23496.202457] PM: Finishing wakeup.
    [23496.202472] Restarting tasks ... done.
    [23496.239956] snd_intel_sst: runtime_idle called
    [23496.239982] snd_intel_sst: runtime_suspend called
    [23496.249816] ------------[ cut here ]------------
    [23496.249861] WARNING: at /data/jenkins_worker/workspace/edison-weekly/linux-kernel/drivers/usb/dwc3/gadget.c:1248 __dwc)
    [23496.249875] Modules linked in: bcm4334x(O) usb_f_acm u_serial g_multilibcomposite bcm_bt_lpm [last unloaded: bcm4334x]
    [23496.249941] CPU: 0 PID: 142 Comm: systemd-udevd Tainted: GO3.10.17-poky-edison+ #1
    [23496.249956] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 5422015.01.21:18.19.48
    [23496.249969]  c1b4326c 00000000 f6c0bd00 c18d9eea f6c0bd28 c12408be c1ae1657c1b4326c
    [23496.250020]  000004e0 c15fa14e c15fa14e f6c49020 f675f180 f6c0bd88 f6c0bd38c1240982
    [23496.250068]  00000009 00000000 f6c0bd94 c15fa14e f6c0bd7c 00000000 0000003635dac802
    [23496.250116] Call Trace:
    [23496.250150]  [<c18d9eea>] dump_stack+0x16/0x18
    [23496.250179]  [<c12408be>] warn_slowpath_common+0x5e/0x80
    [23496.250204]  [<c15fa14e>] ? __dwc3_gadget_kick_transfer+0x3de/0x430
    [23496.250227]  [<c15fa14e>] ? __dwc3_gadget_kick_transfer+0x3de/0x430
    [23496.250253]  [<c1240982>] warn_slowpath_null+0x22/0x30
    [23496.250277]  [<c15fa14e>] __dwc3_gadget_kick_transfer+0x3de/0x430
    [23496.250305]  [<c15fa47e>] dwc3_gadget_ep_queue+0x2de/0x3a0
    [23496.250353]  [<f8906824>] eth_start_xmit+0x1a4/0x330 [g_multi]
    [23496.250382]  [<c17411e3>] dev_hard_start_xmit+0x343/0x570
    [23496.250407]  [<c18df22f>] ? _raw_spin_unlock_bh+0x1f/0x30
    [23496.250432]  [<c176506a>] ? __nf_conntrack_confirm+0x21a/0x340
    [23496.250459]  [<c175ad1c>] sch_direct_xmit+0x7c/0x1c0
    [23496.250484]  [<c1741572>] dev_queue_xmit+0x162/0x400
    [23496.250512]  [<c177a2e0>] ip_finish_output+0x210/0x3a0
    [23496.250536]  [<c177a0d0>] ? ip_fragment+0x970/0x970
    [23496.250562]  [<c177bb17>] ip_output+0xb7/0xc0
    [23496.250586]  [<c177a0d0>] ? ip_fragment+0x970/0x970
    [23496.250611]  [<c177b230>] ip_local_out+0x20/0x30
    [23496.250637]  [<c17ac771>] igmpv3_sendpack+0x51/0x60
    [23496.250663]  [<c17ad2c3>] igmp_ifc_timer_expire+0x173/0x290
    [23496.250689]  [<c1250c02>] call_timer_fn+0x32/0x140
    [23496.250715]  [<c17ad150>] ? igmp_gq_timer_expire+0x30/0x30
    [23496.250739]  [<c1250e52>] run_timer_softirq+0x142/0x230
    [23496.250766]  [<c1270ddb>] ? get_parent_ip+0xb/0x40
    [23496.250791]  [<c17ad150>] ? igmp_gq_timer_expire+0x30/0x30
    [23496.250817]  [<c1249251>] __do_softirq+0xe1/0x260
    [23496.250843]  [<c1249170>] ? tasklet_action+0x120/0x120
    [23496.250856]  <IRQ>  [<c1249555>] ? irq_exit+0xa5/0xb0
    [23496.250899]  [<c18e535b>] ? smp_apic_timer_interrupt+0x5b/0x8b
    [23496.250928]  [<c14d9ee4>] ? trace_hardirqs_off_thunk+0xc/0x18
    [23496.250953]  [<c18dfc2a>] ? apic_timer_interrupt+0x32/0x38
    [23496.250978]  [<c18d0000>] ? init_intel_cacheinfo+0x1b3/0x37e
    [23496.250994] ---[ end trace ab9c379ac6289fd6 ]---
    [23500.707829] CFG80211-ERROR) wl_cfg80211_connect : Connectting withf8:01:13:a8:2b:40 channel (1) ssid "INFINITUMfjph", )
    [23500.707829] 
    [23500.763280] wl_bss_connect_done succeeded with f8:01:13:a8:2b:40
    [23500.769798] wl_bss_connect_done succeeded with f8:01:13:a8:2b:40

Userspace Applications

SystemCtl, Yocto BSP Edison 3.0

From ArchLinux SystemD

Shut down and reboot the system:
root@edison:~# systemctl reboot
Shut down and power-off the system:
root@edison:~# systemctl poweroff
Suspend the system:
root@edison:~# systemctl suspend
Put the system into hibernation:
root@edison:~# systemctl hibernate
Put the system into hybrid-sleep state (or suspend-to-both):
root@edison:~# systemctl hybrid-sleep
root@edison:~# systemctl suspend
[ 2283.848450] intel_scu_watchdog_evo: watchdog_stop
[ 2283.907087] pci_pm_suspend(): sdhci_pci_suspend+0x0/0xd0 returns -16
[ 2283.907105] dpm_run_callback(): pci_pm_suspend+0x0/0x1d0 returns -16
[ 2283.907120] PM: Device 0000:00:01.3 failed to suspend async: error -16
[ 2283.928403] PM: Some devices failed to suspend
[ 2284.491363] intel_scu_watchdog_evo: watchdog_stop
[ 2284.537447] pci_pm_suspend(): sdhci_pci_suspend+0x0/0xd0 returns -16
[ 2284.537464] dpm_run_callback(): pci_pm_suspend+0x0/0x1d0 returns -16
[ 2284.537479] PM: Device 0000:00:01.3 failed to suspend async: error -16
[ 2284.558639] PM: Some devices failed to suspend
A dependency job for suspend.target failed. See 'journalctl -xn' for details.
root@edison:~#
root@edison:~# dmesg
...
[ 2284.038549] Restarting tasks ... done.
[ 2284.088450] snd_intel_sst: runtime_idle called
[ 2284.088478] snd_intel_sst: runtime_suspend called
[ 2284.096683] PM: Syncing filesystems ... done.
[ 2284.100314] PM: Preparing system for freeze sleep
[ 2284.106998] ------------[ cut here ]------------
[ 2284.107045] WARNING: at /iotdk/noel/newpull/devkit-build-tools/workdir/poky/$
[ 2284.107060] Modules linked in: usb_f_acm u_serial g_multi libcomposite bcm_b$
[ 2284.107123] CPU: 1 PID: 406 Comm: kworker/u4:2 Tainted: G           O 3.10.1$
[ 2284.107137] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542$
[ 2284.107160] Workqueue: kmmcd mmc_rescan
[ 2284.107176]  c1b472c8 00000000 f6f8fd00 c18dc6da f6f8fd28 c12408ae c1ae494a $
[ 2284.107226]  000004e0 c15fa18e c15fa18e f6c49020 f5c20000 f6f8fd88 f6f8fd38 $
[ 2284.107273]  00000009 00000000 f6f8fd94 c15fa18e f6f8fd7c 00000000 00000036 $
[ 2284.107321] Call Trace:
[ 2284.107353]  [<c18dc6da>] dump_stack+0x16/0x18
[ 2284.107384]  [<c12408ae>] warn_slowpath_common+0x5e/0x80
[ 2284.107409]  [<c15fa18e>] ? __dwc3_gadget_kick_transfer+0x3de/0x430
...
[ 2284.108500]  [<c1263560>] ? kthread+0xa0/0xb0
[ 2284.108523]  [<c18e5465>] ? sub_preempt_count+0x95/0xf0
[ 2284.108551]  [<c18e73f7>] ? ret_from_kernel_thread+0x1b/0x28
[ 2284.108574]  [<c12634c0>] ? kthread_create_on_node+0xc0/0xc0
[ 2284.108592] ---[ end trace 33110b433ad381ba ]---
[ 2284.299642] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 2284.317476] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) do$
[ 2284.337404] PM: Entering freeze sleep
[ 2284.337423] Suspending console(s) (use no_console_suspend to debug)
[ 2284.467318] snd_intel_sst: runtime_resume called
[ 2284.490418] snd_intel_sst: runtime_suspend called
[ 2284.491080] bcmsdh_sdmmc_suspend Enter
[ 2284.491087] bcmsdh_sdmmc_suspend Enter
[ 2284.491363] intel_scu_watchdog_evo: watchdog_stop
[ 2284.491761] bcove_thrm bcove_thrm: suspend called.
[ 2284.537411] bcmsdh_sdmmc_resume Enter
[ 2284.537447] pci_pm_suspend(): sdhci_pci_suspend+0x0/0xd0 returns -16
[ 2284.537464] dpm_run_callback(): pci_pm_suspend+0x0/0x1d0 returns -16
[ 2284.537479] PM: Device 0000:00:01.3 failed to suspend async: error -16
[ 2284.558639] PM: Some devices failed to suspend
[ 2284.558944] bcove_thrm bcove_thrm: resume called.
[ 2284.559690] snd_intel_sst: runtime_resume called
[ 2284.670305] PM: resume of devices complete after 111.609 msecs
[ 2284.672284] PM: Finishing wakeup.
[ 2284.702653] snd_intel_sst: runtime_idle called
[ 2284.702678] snd_intel_sst: runtime_suspend called
[ 2284.672297] Restarting tasks ... done.
[ 2288.575692] CFG80211-ERROR) wl_cfg80211_connect : Connectting withf8:01:13:a$
    root@edison:~# systemctl poweroff
    root@edison:~# cat /sys/module/pcie_aspm/parameters/policy
    default [performance] powersave 
    root@edison:~# cpufreq-info
    root@edison:~# head /sys/class/regulator/*/name

Setup

Opkg

Apt-Get

Device Configuration

Usage Models

Suspend Issue

In the latest Yocto release (2.1 from 09/28/15), there is a problem when trying to put asleep the edison board. The commands to put the edison board in S3 state are:

    root@debian8:~# systemctl stop wpa_supplicant
    root@debian8:~# echo -n "mem" > /sys/power/state

But this only works the first time after a reboot. The patch involves modifying two lines of code from intel_soc_pmu.c file from the linux kernel:

https://github.com/01org/edison-linux/commit/149de7abd8829bcc009641e215b53fe89fcf29b2

Assuming you have a working yocto build environment (Check Edison BSP instructions for this), the file is on the following path:

    iotlab@debian8:~/edison-src$ vim ./out/linux64/build/tmp/work/edison-poky-linux/linux- yocto/3.10.17-r0/linux/arch/x86/platform/intel-mid/intel_soc_pmu.c

Then we need to recompile and rebuild the image:

    iotlab@debian8:~/edison-src/out/linux64$ source poky/oe-init-build-env iotlab@debian8:~/edison-src/out/linux64/build$ bitbake linux-yocto -f -c compile iotlab@debian8:~/edison-src/out/linux64/build$ bitbake edison-image iotlab@debian8:~/edison-src/out/linux64/build$ cd ~/edison-src/meta-intel-edison/utils/flash iotlab@debian8:~/edison-src/meta-intel-edison/utils/flash$ ./postBuild.sh

Last updated