From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1CB58C33CAA for ; Mon, 20 Jan 2020 13:43:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E663222525 for ; Mon, 20 Jan 2020 13:43:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=pedrovanzella.com header.i=@pedrovanzella.com header.b="VnJdwdbN"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Zxm2g+z7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727117AbgATNnl (ORCPT ); Mon, 20 Jan 2020 08:43:41 -0500 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:46937 "EHLO out4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726626AbgATNnl (ORCPT ); Mon, 20 Jan 2020 08:43:41 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id AB6F020FBE; Mon, 20 Jan 2020 08:43:39 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Mon, 20 Jan 2020 08:43:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= pedrovanzella.com; h=subject:to:references:from:message-id:date :mime-version:in-reply-to:content-type :content-transfer-encoding; s=fm2; bh=SibAiAd7KR/fy3khbzYlcHHfTc +BnLMI3tLmysU5OEo=; b=VnJdwdbNJshVQbNM/Lk4NN9O6xQrF0V99U33Ygr/hA FIgMUOWs5z8nPCL3ssv2WXQaPZnK680OXbtKwolLHx4brrX3KwPJfY3ozo8QaPz7 ErVrrXb1Gf9tXc1qhdfEDlwj1mgy6coAQI6L1lVMNvBD8eeIMcMl5BWisPnuyYZ5 sc+NktqzkobCmJJT89GSLYD2vVMxfT0dL5eAPpujpOUYJpwFK3zxHxZGAHTq50XP xFSf+gZVxZzAOY+Wpi/Kheg/K1Dl+e+yuLFqReWyG7JubrgaGaMt+8AWXMyMHts6 jQDpnzF8JVbNrJyd/zkQaGPgShX2Sn+kQ3JH1H2bsuHw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=SibAiAd7KR/fy3khbzYlcHHfTc+BnLMI3tLmysU5O Eo=; b=Zxm2g+z7kMKIU2RK3pIkM/fGqMer2XcMjqbfZKxkKRELEKplzs1RYBybQ 2utvkqwGh9gTZVJvpu5irYIpxeAUbv3fBO9C5FAzMRqokZlR2SMRmLNOOLjGlMIB cC/wxPoScrTvHAMXQ1MclmL/y0+6M4zMeLsr9AkZhs0yx4Ie+wMtrXg2gSDIXTIN ga8LlbmhVH6d+B0lztWRJsLhs4jm85IQq41T8UJ3PRoXShabtgO9/gwpK9mE0Q+X 6ezBEBj8JiQ92hFTlEFEMGEA+r/hdHpEZZAFVdEUfjNsA4rXvboO0wVp1NhxnHVi wLpsfloyLor3+0jJw4ToWoWruuk8Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudehgdegfecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuvfhfhffkffgfgggjtgfgsehtkeertddtfeejnecuhfhrohhmpefrvggurhho ucggrghniigvlhhlrgcuoehpvggurhhosehpvggurhhovhgrnhiivghllhgrrdgtohhmqe enucfkphepvddtuddrkeejrddvtdehrddvheegnecuvehluhhsthgvrhfuihiivgeptden ucfrrghrrghmpehmrghilhhfrhhomhepphgvughrohesphgvughrohhvrghniigvlhhlrg drtghomh X-ME-Proxy: Received: from [192.168.20.6] (unknown [201.87.205.254]) by mail.messagingengine.com (Postfix) with ESMTPA id AC5D880061; Mon, 20 Jan 2020 08:43:37 -0500 (EST) Subject: Re: [PATCH] HID: logitech-hidpp: BatteryVoltage: only read chargeStatus if extPower is active To: =?UTF-8?Q?Filipe_La=c3=adns?= , Jiri Kosina , Benjamin Tissoires , Henrik Rydberg , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org References: <20200111192419.2503922-1-lains@archlinux.org> From: Pedro Vanzella Message-ID: Date: Mon, 20 Jan 2020 10:43:36 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1 MIME-Version: 1.0 In-Reply-To: <20200111192419.2503922-1-lains@archlinux.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/11/20 4:24 PM, Filipe Laíns wrote: > In the HID++ 2.0 function getBatteryInfo() from the BatteryVoltage > (0x1001) feature, chargeStatus is only valid if extPower is active. > > Previously we were ignoring extPower, which resulted in wrong values. Nice catch. Sorry for missing that the first time around. > > Example: > With an unplugged mouse > > $ cat /sys/class/power_supply/hidpp_battery_0/status > Charging Tested and it works as expected now. > > This patch makes fixes that, it also renames charge_sts to flags as > charge_sts can be confused with chargeStatus from the spec. > > Spec: > +--------+-------------------------------------------------------------------------+ > | byte | 2 | > +--------+--------------+------------+------------+----------+----------+----------+ > | bit | 0..2 | 3 | 4 | 5 | 6 | 7 | > +--------+--------------+------------+------------+----------+----------+----------+ > | buffer | chargeStatus | fastCharge | slowCharge | critical | (unused) | extPower | > +--------+--------------+------------+------------+----------+----------+----------+ > Table 1 - battery voltage (0x1001), getBatteryInfo() (ASE 0), 3rd byte > > +-------+--------------------------------------+ > | value | meaning | > +-------+--------------------------------------+ > | 0 | Charging | > +-------+--------------------------------------+ > | 1 | End of charge (100% charged) | > +-------+--------------------------------------+ > | 2 | Charge stopped (any "normal" reason) | > +-------+--------------------------------------+ > | 7 | Hardware error | > +-------+--------------------------------------+ > Table 2 - chargeStatus value > > Signed-off-by: Filipe Laíns > --- > drivers/hid/hid-logitech-hidpp.c | 43 ++++++++++++++++---------------- > 1 file changed, 21 insertions(+), 22 deletions(-) > > diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c > index bb063e7d48df..39a5ee0aaab0 100644 > --- a/drivers/hid/hid-logitech-hidpp.c > +++ b/drivers/hid/hid-logitech-hidpp.c > @@ -1256,36 +1256,35 @@ static int hidpp20_battery_map_status_voltage(u8 data[3], int *voltage, > { > int status; > > - long charge_sts = (long)data[2]; > + long flags = (long) data[2]; > > - *level = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN; > - switch (data[2] & 0xe0) { > - case 0x00: > - status = POWER_SUPPLY_STATUS_CHARGING; > - break; > - case 0x20: > - status = POWER_SUPPLY_STATUS_FULL; > - *level = POWER_SUPPLY_CAPACITY_LEVEL_FULL; > - break; > - case 0x40: > + if (flags & 0x80) > + switch (flags & 0x07) { > + case 0: > + status = POWER_SUPPLY_STATUS_CHARGING; > + break; > + case 1: > + status = POWER_SUPPLY_STATUS_FULL; > + *level = POWER_SUPPLY_CAPACITY_LEVEL_FULL; > + break; > + case 2: > + status = POWER_SUPPLY_STATUS_NOT_CHARGING; > + break; > + default: > + status = POWER_SUPPLY_STATUS_UNKNOWN; > + break; > + } > + else > status = POWER_SUPPLY_STATUS_DISCHARGING; > - break; > - case 0xe0: > - status = POWER_SUPPLY_STATUS_NOT_CHARGING; > - break; > - default: > - status = POWER_SUPPLY_STATUS_UNKNOWN; > - } > > *charge_type = POWER_SUPPLY_CHARGE_TYPE_STANDARD; > - if (test_bit(3, &charge_sts)) { > + if (test_bit(3, &flags)) { > *charge_type = POWER_SUPPLY_CHARGE_TYPE_FAST; > } > - if (test_bit(4, &charge_sts)) { > + if (test_bit(4, &flags)) { > *charge_type = POWER_SUPPLY_CHARGE_TYPE_TRICKLE; > } > - > - if (test_bit(5, &charge_sts)) { > + if (test_bit(5, &flags)) { > *level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL; > } > > Tested-by: Pedro Vanzella Reviewed-by: Pedro Vanzella