/* Copyright 2016 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. */ #include "gpio.h" #ifndef __CROS_DEVICE_STATE_H #define __CROS_DEVICE_STATE_H /* Device state indexes */ enum device_state { DEVICE_STATE_UNKNOWN = 0, DEVICE_STATE_OFF, DEVICE_STATE_ON, DEVICE_STATE_COUNT, }; struct device_config { const char *name; /* Device name */ enum device_state state; /* Device status */ enum device_state last_known_state; /* Either off or on */ /* Deferred handler to detect power off */ const struct deferred_data *deferred; enum gpio_signal detect; /* GPIO detecting power on */ }; enum device_type; extern struct device_config device_states[]; /* Return the device state */ int device_get_state(enum device_type device); /** * Sets the device state * * @param device the device to update * @param state the new device state * @return true if the last_known_state was changed */ int device_set_state(enum device_type device, enum device_state state); /* Update the device state based on the device gpios */ void board_update_device_state(enum device_type device); #endif /* __CROS_DEVICE_STATE_H */