Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2772822imj; Mon, 11 Feb 2019 08:14:36 -0800 (PST) X-Google-Smtp-Source: AHgI3IZM+W7zinXxrnq5kKwV60HuiS00oytv+LeVgmIP5QkCZn35AJAHmSnzYeH7K8N5UK+RoDa2 X-Received: by 2002:a17:902:29ab:: with SMTP id h40mr38078441plb.238.1549901676737; Mon, 11 Feb 2019 08:14:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549901676; cv=none; d=google.com; s=arc-20160816; b=dE6uNXGsnSAASnQnZAZA3XYoirnQyY6ZGeYf5tWkbyqAsdId4XQRx4gvI3zcjkROAt H5Pe88kNviZXUhLNHFo8ZbOIZU9UVgYrx+MGO1kKoDpOIQk7SkLhbIMRtzHqDTWYtf7r jDmjpF4nYz38rcvXWNcuVHQCWqe4YSFjP+dZ0wy6tArjLfo5mgyE13xsIDDb4eu8ft1w IdoJDw6JGORdhS1ujoWAIwtGgx3lOS5iSvlYpS0ufIzkHj/LArA67UUZ8M1jtMmYffMf iyTjF5aGa9WiDyAPX9T6dxCpZ3dBfy0pddVjz/0s0Gkcg5f7rSZxDmYGAoqhAglUgctA WJAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=652Fk6PyaVkmXFzajtcMNbunZNA1incr3t1D6iROB/k=; b=TSJY9+KC5qNxrZnEH2KQy+ZPcF3yBGz2W+jSgd+EIQt7IbKFIuduqsSldU6/YAL1ZX BdVVLTJFSVELgzIIt+jgHd84v1xQiwh9zyJwo9lZ86eCi5PrsdlAJ8Frhxk6g14GMnHM HQos0Jr95olEaTYKHMNEJIbk9g+4syn0VnvAwTzqowmXFZE0y/D6KbVXXmKEkvF96GNV 459m/emzhwy7pwPIaa6Hi9NyV6njy1gk2Hf08OTWGV6VosyxwKkSXWfm3ph3jVphXTo4 RN6xVeswzy4xTkRugh5LMSL4hOBe/ZfrK/VXxPHfqlcv29xwqIaGFu94jWpkZvwDzFF6 V57g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BHBS8XHZ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x18si10330547pfm.39.2019.02.11.08.14.20; Mon, 11 Feb 2019 08:14:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BHBS8XHZ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728801AbfBKOWh (ORCPT + 99 others); Mon, 11 Feb 2019 09:22:37 -0500 Received: from mail.kernel.org ([198.145.29.99]:55526 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728769AbfBKOWe (ORCPT ); Mon, 11 Feb 2019 09:22:34 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B086D20844; Mon, 11 Feb 2019 14:22:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549894953; bh=npl2pjBTnGauGmA4xkWal9FZ77i1HMF6MHGXrRLH+1E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BHBS8XHZ7yDJ+Z7oXE+ba3FfUhEGAeDTiwmm81y2934pd/96bPvGO2ERQU/Pnbjhh qZUK4/wUunF1mPVzKsWtcGS7+cI2x9+VEyzqqDCHf0pspkIcWUW1LEmhTmFVr8YVQ9 XX/E+HEb+nZLsHXWoubHY1yxMPYAiLHYtNGXnZnI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Brian Norris , Benson Leung , Sasha Levin Subject: [PATCH 4.20 041/352] platform/chrome: dont report EC_MKBP_EVENT_SENSOR_FIFO as wakeup Date: Mon, 11 Feb 2019 15:14:28 +0100 Message-Id: <20190211141848.922190292@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190211141846.543045703@linuxfoundation.org> References: <20190211141846.543045703@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 6ad16b78a039b45294b1ad5d69c14ac57b2fe706 ] 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 Signed-off-by: Benson Leung Signed-off-by: Sasha Levin --- 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 b6fd4838f60f..e5d5b1adb5a9 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