Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5471038pxu; Tue, 22 Dec 2020 19:09:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJz3JkNfVjGHtHePPpXkbMkRj7V0Jvk/wbv7iimElXhXj0cefkto1M7zb4Hex9TglpDuZTf+ X-Received: by 2002:a17:906:17c3:: with SMTP id u3mr22000586eje.304.1608692988712; Tue, 22 Dec 2020 19:09:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608692988; cv=none; d=google.com; s=arc-20160816; b=MCfprxij1RCQcoU2brYSwU7fwPSh+nWbLMX2BL7bs/uB3YbQWtlUj8jUuj8QvVOHG1 jMG1/az5dL/hiogfR3EMM5Ci/11kda/Rdysa2mZglxH6A8OdHzWepjiUHib8/4PDsZIO Cw/Aq8hHmT4oh3aI3Fx/38bUY4WRBZo84hIBr2UrQX64ADIjFa7K1F6y1r45sF5YKkpU sAhNeXHocXEkJWrnM1JdahpKvmrz2PGQ+Yz9bYL+byAF1MgixGB+z1jNQdb62AyM0bPz KLDwoya+UCVOvXSUkHueGTCZJ8DF/rgeSPxDyyiFOudX8o/KJ/nd0GXNjAhm08snqOCd wLzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=IbX8mx1jr6XCJVrHfiFsP2kRJ0PUbhYMb17afnkPtxY=; b=LUaVLjV8yhy94TjOQ+5tqpjenxlOs2bnn4GxU0Xw0Q3Hi8L7z7VC/5HmKNJlv2IbCj eVGqiwirQWyKSlVTo3O0PsCcneurb0oY/hdBUhaBZUNZrBnXdWLjeKus86odfN6FqmXz 7PtINCcuKDCGcC1qJe3Ls1zomkFCZGwP/ks7EQHlMgXYgy9z0Kx96l4dPdFx3NwAyDOv QpkBL6y8j8Rho0+4hOU7Wf3ra3OTQwjapXkyKp1lQokM4dfNKRkHEsEHlGm6zJqcE54+ pmc3N/ebm+oU2m8SMTtRMGlrLj0PNSETrgyNny8eypuAFm2DBc9z7JuaMvT7Kl7nm6lY RZaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PbGQrgZY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ch11si12300911edb.384.2020.12.22.19.09.26; Tue, 22 Dec 2020 19:09:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PbGQrgZY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731775AbgLWDF7 (ORCPT + 99 others); Tue, 22 Dec 2020 22:05:59 -0500 Received: from mail.kernel.org ([198.145.29.99]:46404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728503AbgLWCTI (ORCPT ); Tue, 22 Dec 2020 21:19:08 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 42B40229C5; Wed, 23 Dec 2020 02:18:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1608689898; bh=xr+1SLuzJCgsYIl4xbn8lQXyhC0ITuyAxJQRQWyyD3g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PbGQrgZYg/DbHsaTWQV+LRzMB9koHP3aA5WLV7f5qt7iY5Au/drm91UB/3svmKAWK poSeLwDuG+bJ7a2830PuuX0Id/Kg7s6ljglRDFSlhwgUaQB5wMiHMLP3Xr5xd6Erx+ SMhDAjmG/skMcFD0RU6Q+1F1ZLIuJDtECcDjatQjTsJ4UI+8Kb13782DTWdeklJ7M/ tYPswhzVsm4qn6q2zRalYpAcHXIPvSpLhFUuWcdnFXHWKCkuLhvnlNuWJuCZDwAozf veVApccleYAqBkDTRQD4t+EdhBNfQ/ACIddBIHGIm+xz9sV8nU6bajZAjNWuCoxpB6 PqNNvGdIDnu7g== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: "dmitry.torokhov@gmail.com" , Jiri Kosina , Sasha Levin , linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 5.4 004/130] HID: hid-input: occasionally report stylus battery even if not changed Date: Tue, 22 Dec 2020 21:16:07 -0500 Message-Id: <20201223021813.2791612-4-sashal@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201223021813.2791612-1-sashal@kernel.org> References: <20201223021813.2791612-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "dmitry.torokhov@gmail.com" [ Upstream commit c6838eeef2fbc7e3e1f83759aa016ae6b70c643e ] There are styluses that only report their battery status when they are touching the touchscreen; additionally we currently suppress battery reports if capacity has not changed. To help userspace recognize how long ago the device reported battery status, let's send the change event through if either capacity has changed, or at least 30 seconds have passed since last report we've let through. Signed-off-by: Dmitry Torokhov Signed-off-by: Jiri Kosina Signed-off-by: Sasha Levin --- drivers/hid/hid-input.c | 5 ++++- include/linux/hid.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index b2da8476d0d30..54ac835b72357 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -537,9 +537,12 @@ static void hidinput_update_battery(struct hid_device *dev, int value) capacity = hidinput_scale_battery_capacity(dev, value); if (dev->battery_status != HID_BATTERY_REPORTED || - capacity != dev->battery_capacity) { + capacity != dev->battery_capacity || + ktime_after(ktime_get_coarse(), dev->battery_ratelimit_time)) { dev->battery_capacity = capacity; dev->battery_status = HID_BATTERY_REPORTED; + dev->battery_ratelimit_time = + ktime_add_ms(ktime_get_coarse(), 30 * 1000); power_supply_changed(dev->battery); } } diff --git a/include/linux/hid.h b/include/linux/hid.h index c7044a14200ea..b05f194f30db0 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -583,6 +583,7 @@ struct hid_device { /* device report descriptor */ __s32 battery_report_id; enum hid_battery_status battery_status; bool battery_avoid_query; + ktime_t battery_ratelimit_time; #endif unsigned long status; /* see STAT flags above */ -- 2.27.0