All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benson Leung <bleung@google.com>
To: Brian Norris <briannorris@chromium.org>
Cc: Benson Leung <bleung@chromium.org>,
	Lee Jones <lee.jones@linaro.org>,
	linux-kernel@vger.kernel.org, Olof Johansson <olof@lixom.net>,
	Shawn Nematbakhsh <shawnn@chromium.org>,
	Alexandru Stan <amstan@chromium.org>,
	Gwendal Grignou <gwendal@chromium.org>,
	Enrico Granata <egranata@chromium.org>,
	RaviChandra Sadineni <ravisadineni@chromium.org>
Subject: Re: [PATCH v2 2/2] platform/chrome: don't report EC_MKBP_EVENT_SENSOR_FIFO as wakeup
Date: Tue, 13 Nov 2018 21:34:45 -0800	[thread overview]
Message-ID: <20181114053445.GB145716@google.com> (raw)
In-Reply-To: <20181108024939.174321-2-briannorris@chromium.org>

[-- Attachment #1: Type: text/plain, Size: 2980 bytes --]

Hi Brian,

On Wed, Nov 07, 2018 at 06:49:39PM -0800, Brian Norris wrote:
> EC_MKBP_EVENT_SENSOR_FIFO events can be triggered for a variety of
> reasons, and there are very few cases in which they should be treated as
> wakeup interrupts (particularly, when a certain
> MOTIONSENSE_MODULE_FLAG_* is set, but this is not even supported in the
> mainline cros_ec_sensor driver yet). Most of the time, they are benign
> sensor readings. In any case, the top-level cros_ec device doesn't know
> enough to determine that they should wake the system, and so it should
> not report the event. This would be the job of the cros_ec_sensors
> driver to parse.
> 
> This patch adds checks to cros_ec_get_next_event() such that it doesn't
> signal 'wakeup' for events of type EC_MKBP_EVENT_SENSOR_FIFO.
> 
> This patch is particularly relevant on devices like Scarlet (Rockchip
> RK3399 tablet, known as Acer Chromebook Tab 10), where the EC firmware
> reports sensor events much more frequently. This was causing
> /sys/power/wakeup_count to increase very frequently, often needlessly
> interrupting our ability to suspend the system.
> 
> Signed-off-by: Brian Norris <briannorris@chromium.org>

Applied. Thanks!

Benson

> ---
> v1 -> v2:
>  * no change
> ---
>  drivers/platform/chrome/cros_ec_proto.c | 18 +++++++++++++++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c
> index fff67b389c87..cc7baf0ecb3c 100644
> --- a/drivers/platform/chrome/cros_ec_proto.c
> +++ b/drivers/platform/chrome/cros_ec_proto.c
> @@ -575,6 +575,7 @@ static int get_keyboard_state_event(struct cros_ec_device *ec_dev)
>  
>  int cros_ec_get_next_event(struct cros_ec_device *ec_dev, bool *wake_event)
>  {
> +	u8 event_type;
>  	u32 host_event;
>  	int ret;
>  
> @@ -594,11 +595,22 @@ int cros_ec_get_next_event(struct cros_ec_device *ec_dev, bool *wake_event)
>  		return ret;
>  
>  	if (wake_event) {
> +		event_type = ec_dev->event_data.event_type;
>  		host_event = cros_ec_get_host_event(ec_dev);
>  
> -		/* Consider non-host_event as wake event */
> -		*wake_event = !host_event ||
> -			      !!(host_event & ec_dev->host_event_wake_mask);
> +		/*
> +		 * Sensor events need to be parsed by the sensor sub-device.
> +		 * Defer them, and don't report the wakeup here.
> +		 */
> +		if (event_type == EC_MKBP_EVENT_SENSOR_FIFO)
> +			*wake_event = false;
> +		/* Masked host-events should not count as wake events. */
> +		else if (host_event &&
> +			 !(host_event & ec_dev->host_event_wake_mask))
> +			*wake_event = false;
> +		/* Consider all other events as wake events. */
> +		else
> +			*wake_event = true;
>  	}
>  
>  	return ret;
> -- 
> 2.19.1.930.g4563a0d9d0-goog
> 

-- 
Benson Leung
Staff Software Engineer
Chrome OS Kernel
Google Inc.
bleung@google.com
Chromium OS Project
bleung@chromium.org

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2018-11-14  5:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-08  2:49 [PATCH v2 1/2] platform/chrome: straighten out cros_ec_get_{next,host}_event() error codes Brian Norris
2018-11-08  2:49 ` [PATCH v2 2/2] platform/chrome: don't report EC_MKBP_EVENT_SENSOR_FIFO as wakeup Brian Norris
2018-11-14  5:34   ` Benson Leung [this message]
2018-11-13  7:57 ` [PATCH v2 1/2] platform/chrome: straighten out cros_ec_get_{next,host}_event() error codes Lee Jones
2018-11-14  5:33 ` Benson Leung

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181114053445.GB145716@google.com \
    --to=bleung@google.com \
    --cc=amstan@chromium.org \
    --cc=bleung@chromium.org \
    --cc=briannorris@chromium.org \
    --cc=egranata@chromium.org \
    --cc=gwendal@chromium.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=olof@lixom.net \
    --cc=ravisadineni@chromium.org \
    --cc=shawnn@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.