blob: 75cd11a1c2d09c3f5cbaf007f635e0d5a5a06dd4 [file] [log] [blame]
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Driver for power_state for veyron_mickey board.
"""
import power_state
import time
class veyronMickeyPower(power_state.PowerStateDriver):
"""Mickey has no EC and thus uses a physical recovery button.
It's similar to Chromeboxes but with some different hold time
requirements.
"""
# Time in seconds to allow the firmware to detect the
# 'rec_mode' signal after cold reset.
_RECOVERY_DETECTION_DELAY = 2.5
def _reset_cycle(self):
"""Force a power cycle using cold reset."""
self._cold_reset()
# AP isn't powered on after cold reset, so power it on.
self._interface.set('power_key', '0.7')
def _power_off(self):
self._cold_reset()
def _power_on_rec(self):
"""Power on in recovery mode."""
self._interface.set('rec_mode', self.REC_ON)
self._reset_cycle()
time.sleep(self._RECOVERY_DETECTION_DELAY)
self._interface.set('rec_mode', self.REC_OFF)
def _power_on_normal(self):
"""Power on in normal mode, i.e., no recovery."""
self._interface.set('rec_mode', self.REC_OFF)
self._interface.set('power_key', '0.7')
def _power_on(self, rec_mode):
if rec_mode == self.REC_ON:
self._power_on_rec()
else:
self._power_on_normal()