• Brian Norris's avatar
    platform/chrome: cros_ec_proto: ignore unnecessary wakeups on old ECs · c214e564
    Brian Norris authored
    ECs that don't implement EC_CMD_HOST_EVENT_GET_WAKE_MASK should still
    have some reasonable default mask -- otherwise, they'll treat a variety
    of EC signals as spurious wakeups. Battery and AC events can be
    especially common, for devices that have been sitting at full charge
    plugged into AC for a long time, as they may cycle their charging off
    and on, or their battery may start reporting failures as it ages.
    
    Treating these as wakeups does not serve a useful purpose, and is
    instead often counterproductive. And indeed, later ECs (that implement
    the mask) don't include these events in their wake-mask.
    
    Note that this patch doesn't do anything without the subsequent patch
    ("platform/chrome: cros_ec_proto: check for missing
    EC_CMD_HOST_EVENT_GET_WAKE_MASK"), because
    cros_ec_get_host_event_wake_mask() currently does not return an error if
    EC_CMD_HOST_EVENT_GET_WAKE_MASK is not implemented.
    
    Some additional notes:
    While the EC typically knows not to wake the CPU for these unimportant
    events once the CPU reaches a sleep state, it doesn't really have a way
    to know that the CPU is "almost" asleep, unless it has support for
    EC_CMD_HOST_SLEEP_EVENT. Alas, these older ECs do not support that
    command either, so this solution is not 100% complete.
    Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
    Signed-off-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
    c214e564
cros_ec_proto.c 23 KB