summaryrefslogtreecommitdiff
path: root/common/device_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/device_state.c')
-rw-r--r--common/device_state.c60
1 files changed, 6 insertions, 54 deletions
diff --git a/common/device_state.c b/common/device_state.c
index 0c4024880a..17c32a7054 100644
--- a/common/device_state.c
+++ b/common/device_state.c
@@ -7,8 +7,6 @@
#include "device_state.h"
#include "hooks.h"
-static int enabled = 1;
-
int device_get_state(enum device_type device)
{
return device_states[device].state;
@@ -19,6 +17,9 @@ void device_set_state(enum device_type device, enum device_state state)
if (device_states[device].state == state)
return;
+ if (state != DEVICE_STATE_UNKNOWN)
+ device_states[device].last_known_state = state;
+
device_states[device].state = state;
}
@@ -26,57 +27,11 @@ static void check_device_state(void)
{
int i;
- if (!enabled)
- return;
-
for (i = 0; i < DEVICE_COUNT; i++)
board_update_device_state(i);
}
DECLARE_HOOK(HOOK_SECOND, check_device_state, HOOK_PRIO_DEFAULT);
-static int device_has_interrupts(enum device_type device)
-{
- return (device_states[device].deferred &&
- device_states[device].detect != GPIO_COUNT);
-}
-
-static void disable_interrupts(enum device_type device)
-{
- if (!device_has_interrupts(device))
- return;
-
- /* Cancel any deferred callbacks */
- hook_call_deferred(device_states[device].deferred, -1);
-
- /* Disable gpio interrupts */
- gpio_disable_interrupt(device_states[device].detect);
-}
-
-static void enable_interrupts(enum device_type device)
-{
- if (!device_has_interrupts(device))
- return;
-
- /* Enable gpio interrupts */
- gpio_enable_interrupt(device_states[device].detect);
-}
-
-void device_detect_state_enable(int enable)
-{
- int i;
-
- enabled = enable;
- for (i = 0; i < DEVICE_COUNT; i++) {
- if (enabled) {
- enable_interrupts(i);
- board_update_device_state(i);
- } else {
- disable_interrupts(i);
- device_set_state(i, DEVICE_STATE_UNKNOWN);
- }
- }
-}
-
static void print_state(const char *name, enum device_state state)
{
ccprintf("%-9s %s\n", name, state == DEVICE_STATE_ON ? "on" :
@@ -87,12 +42,9 @@ static int command_devices(int argc, char **argv)
{
int i;
- if (!enabled)
- ccprintf("Device monitoring disabled\n");
- else
- for (i = 0; i < DEVICE_COUNT; i++)
- print_state(device_states[i].name,
- device_states[i].state);
+ for (i = 0; i < DEVICE_COUNT; i++)
+ print_state(device_states[i].name,
+ device_states[i].state);
return EC_SUCCESS;
}