Support doing battery cut-off in firmware stage.

Add a new crossystem value "battery_cutoff_request" to indicate that
next reboot should cut-off battery and shutdown during firmware stage.

This request is primarily for factories to ship devices in an safe
state. Previously we have done same thing by running "ectool battery-cutoff"
but that creates a problem which "ectool" (and the one to request for
cut-off) must live in developer mode while  the device must be shipped
in normal mode. The mode transition was solved by setting
"disable_dev_request=1", but that flag is may get lost on x86 systems
(having NV storage in CMOS) when the battery is cut-off .

From the experience from Ryu, such settings (dev mode transition and
battery cut-off) should be done together inside firmware execution so we
can create a new flag, battery_cutoff_request, to finalize device

TEST=emerge-chell depthcharge vboot_reference chromeos-bootimage
     crossystem battery_cutoff_request=1
     # Unplug AC adapter
     # See device rebooted and then shutdown immediately.
     # Press power button and system won't boot.
     # Attach AC adapter and now system boots.

Original-Change-Id: I73ccae15b337cd65786106646546c67c155b8fa6
Commit-Ready: Hung-Te Lin <>
Tested-by: Hung-Te Lin <>
Reviewed-by: Duncan Laurie <>
(cherry picked from commit aee6bd69fefac653cfc4a5679eb387d7c3280d14)

Change-Id: I563602ee8437f867720942df7f658a28378579aa
Reviewed-by: Duncan Laurie <>
Tested-by: Duncan Laurie <>
Commit-Queue: Duncan Laurie <>
10 files changed