summaryrefslogtreecommitdiff
path: root/common/mkbp_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/mkbp_event.c')
-rw-r--r--common/mkbp_event.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/common/mkbp_event.c b/common/mkbp_event.c
index 6848bd2813..173745dd98 100644
--- a/common/mkbp_event.c
+++ b/common/mkbp_event.c
@@ -45,6 +45,7 @@ static void set_host_interrupt(int active)
#endif
}
+#ifdef CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK
/**
* Check if the host is sleeping. Check our power state in addition to the
* self-reported sleep state of host (CONFIG_POWER_TRACK_HOST_SLEEP_STATE).
@@ -59,20 +60,27 @@ static inline int host_is_sleeping(void)
#endif
return is_sleeping;
}
+#endif /* CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK */
int mkbp_send_event(uint8_t event_type)
{
+ int skip_interrupt = 0;
+
set_event(event_type);
-#ifdef CONFIG_MKBP_WAKEUP_MASK
- /* Only assert interrupt for wake events if host is sleeping */
- if (host_is_sleeping()) {
- /* Skip host wake if this isn't a wake event */
- if (!(host_get_events() & CONFIG_MKBP_WAKEUP_MASK) &&
- event_type != EC_MKBP_EVENT_KEY_MATRIX)
- return 0;
- }
-#endif
+#ifdef CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK
+ /* Check to see if this host event should wake the system. */
+ skip_interrupt = host_is_sleeping() &&
+ !(host_get_events() &
+ CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK);
+#endif /* CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK */
+
+ /* To skip the interrupt, we cannot have the EC_MKBP_EVENT_KEY_MATRIX */
+ skip_interrupt = skip_interrupt &&
+ (event_type != EC_MKBP_EVENT_KEY_MATRIX);
+
+ if (skip_interrupt)
+ return 0;
set_host_interrupt(1);
return 1;
@@ -143,17 +151,19 @@ DECLARE_HOST_COMMAND(EC_CMD_GET_NEXT_EVENT,
mkbp_get_next_event,
EC_VER_MASK(0));
-#ifdef CONFIG_MKBP_WAKEUP_MASK
-static int mkbp_get_wake_mask(struct host_cmd_handler_args *args)
+#ifdef CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK
+#ifdef CONFIG_MKBP_USE_HOST_EVENT
+static int mkbp_get_host_event_wake_mask(struct host_cmd_handler_args *args)
{
struct ec_response_host_event_mask *r = args->response;
- r->mask = CONFIG_MKBP_WAKEUP_MASK;
+ r->mask = CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK;
args->response_size = sizeof(*r);
return EC_RES_SUCCESS;
}
DECLARE_HOST_COMMAND(EC_CMD_HOST_EVENT_GET_WAKE_MASK,
- mkbp_get_wake_mask,
+ mkbp_get_host_event_wake_mask,
EC_VER_MASK(0));
-#endif
+#endif /* CONFIG_MKBP_USE_HOST_EVENT */
+#endif /* CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK */