Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp16583lfv; Tue, 12 Apr 2022 15:23:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9eMi1weK7y9MKKpcUWthCW0tyzaHnvv1YO5EG1ryEvaI4rXkiQH4HESrb7QcJCUWGH8hZ X-Received: by 2002:a17:902:db10:b0:158:657e:10f0 with SMTP id m16-20020a170902db1000b00158657e10f0mr12499898plx.125.1649802219709; Tue, 12 Apr 2022 15:23:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649802219; cv=none; d=google.com; s=arc-20160816; b=fJjMB3zJElDbhrnPugEcYYXSqa4gUOvD7yYHpGKlW2dQJId3X/CtMXpWTpW/YjMwhi VlsGIJjMr2DNrH9VN+XdvfgoRdMfpuWHapi7X3dqipwixa2lLNkkebkDgKIccEqMosg8 3dy3Is3ETLrBdP7METfrY3tsnppTt+XXnBYP0uhzSFxo6SzR70Rja3utVbbk6+G5tlXB u6YokfDM5YFc9K7+ZBe6TZmRXU9xHswrFJbeaHmE/mGKdPYYTp+3JAlcBFR0eOTQv0Ii 2zZhCUnsyJB3SSVVGA+EK/n8BrT3qcx3H5d++yyZbAgDWsQcTeFq04pV5FtL7b8R2MT6 7pnQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qAh31J4i1+XU8nn8Ng5R7Olw0VlZ8v6vN8oljIcfBK8=; b=lsxjjXOPChPdNMPI7g+2zyBr9H0zsnvv3ujwyFw7q6VZ3RoRbhJz2xbytzzFX0UExM AMlTCzYWDv9VpL7Ny2MQlTStqQnv93AZVa77LukC1WHxgnvdYOAqlEvkUuP8dLsCQM4P YHx7zgWV5U8rueGoOsrProNhIIHwdURybsYM9E/2+CWJnMpIHeMZaAy7Oxo2G7GzgyrQ I7odVlJe4hqEEiS4BrQH+IEcngJcO/mF56u0Yr4jIOG/pPFWvyjKl/dkU0nldnNTHudW GVCGaqLheBbYNJIONBT0kz6DfYhTl9P/g1BgmL+WZCBiUYVAmd6f4Bk3KjG2DSa5qfPC fRrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=FOizQfI8; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id n12-20020a170903110c00b00153b2d16473si15163899plh.123.2022.04.12.15.23.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 15:23:39 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=FOizQfI8; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2F2CE5469F; Tue, 12 Apr 2022 14:03:48 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358621AbiDLHmA (ORCPT + 99 others); Tue, 12 Apr 2022 03:42:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353647AbiDLHPx (ORCPT ); Tue, 12 Apr 2022 03:15:53 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1CF9C39831; Mon, 11 Apr 2022 23:57:14 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 87A3D61571; Tue, 12 Apr 2022 06:57:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 983EDC385A1; Tue, 12 Apr 2022 06:57:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649746633; bh=6WWeLjwM6nugWoViIV7BNPooOy6baoQmDnNITUB0e5I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FOizQfI8e60mEFBNufizWzt9a1PveQxqNnEu9Z1cJng7ZDu+syN0X0PM7vyvrj0XT PVbVc8VC4Eqz00HbghfW90BZLCA4cvrFuMCbwFwNtC3ceYUhEVJY4KFuwxQtP0x7Iw uShatyVRAeGrydYDe8Nq8/Q1HWlXj25hx2fker34= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Evgeny Boger , Chen-Yu Tsai , Sebastian Reichel , Sasha Levin Subject: [PATCH 5.16 035/285] power: supply: axp20x_battery: properly report current when discharging Date: Tue, 12 Apr 2022 08:28:12 +0200 Message-Id: <20220412062944.689610381@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062943.670770901@linuxfoundation.org> References: <20220412062943.670770901@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Evgeny Boger [ Upstream commit d4f408cdcd26921c1268cb8dcbe8ffb6faf837f3 ] As stated in [1], negative current values are used for discharging batteries. AXP PMICs internally have two different ADC channels for shunt current measurement: one used during charging and one during discharging. The values reported by these ADCs are unsigned. While the driver properly selects ADC channel to get the data from, it doesn't apply negative sign when reporting discharging current. [1] Documentation/ABI/testing/sysfs-class-power Signed-off-by: Evgeny Boger Acked-by: Chen-Yu Tsai Signed-off-by: Sebastian Reichel Signed-off-by: Sasha Levin --- drivers/power/supply/axp20x_battery.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/power/supply/axp20x_battery.c b/drivers/power/supply/axp20x_battery.c index 18a9db0df4b1..335e12cc5e2f 100644 --- a/drivers/power/supply/axp20x_battery.c +++ b/drivers/power/supply/axp20x_battery.c @@ -186,7 +186,6 @@ static int axp20x_battery_get_prop(struct power_supply *psy, union power_supply_propval *val) { struct axp20x_batt_ps *axp20x_batt = power_supply_get_drvdata(psy); - struct iio_channel *chan; int ret = 0, reg, val1; switch (psp) { @@ -266,12 +265,12 @@ static int axp20x_battery_get_prop(struct power_supply *psy, if (ret) return ret; - if (reg & AXP20X_PWR_STATUS_BAT_CHARGING) - chan = axp20x_batt->batt_chrg_i; - else - chan = axp20x_batt->batt_dischrg_i; - - ret = iio_read_channel_processed(chan, &val->intval); + if (reg & AXP20X_PWR_STATUS_BAT_CHARGING) { + ret = iio_read_channel_processed(axp20x_batt->batt_chrg_i, &val->intval); + } else { + ret = iio_read_channel_processed(axp20x_batt->batt_dischrg_i, &val1); + val->intval = -val1; + } if (ret) return ret; -- 2.35.1