Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp49702lfv; Tue, 12 Apr 2022 16:51:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzBWIjxKxSVC5wWZ9TOl4q7iIdoY//GsiU3zhsxOrsu2ieD4ZGOrZbGsimestBGxuSD9UGs X-Received: by 2002:a17:902:9892:b0:158:1fe6:df65 with SMTP id s18-20020a170902989200b001581fe6df65mr23778482plp.85.1649807478952; Tue, 12 Apr 2022 16:51:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649807478; cv=none; d=google.com; s=arc-20160816; b=e9MvMCEg6W7VEXnYrsHhC1gQPKr908mibZg9A+B9WLEJi4WZ+PmBTQUbmt9b+SgaBq LeJ6MeZlbjIDz50OUWVjW5bztyeQGMv6FP6ETpO4919uhZighicYxaeH+XemdYIXM1Lt t9CmNnK8sQDm2vijmcrzG7Vyqov6Pr1YlMh9+m9HygMksmCmaVeUy9tOY2n+/FEpTNkK 3dBArgsl71Qudz/u0uwJ+0TWm1jQna53PqeeqtvZQQqCL/9lqCS2q+TrqxLEp3na5Zb9 2RPZe5d/Jo7wOaHahJx/AL2Js0nUq+AiPLhWllipWUuKyHcd12AmEDTxEMWocn9cjgw+ KyBQ== 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=hfO55TuIF7jCeM4s5VHckhC42wz07DM2EiwsVKt6uGM=; b=zDF3chkU8aQY6L3mY75torMix8A9tD/rY+XoPC8U+kHhdCE6LbZQAmDME+gPJqR+Wo IYN+q4uZXZ/7nWXZOB45X+HA/NGpOjh805Iz0NdJc5usSGWg5gHNB39yLxBoSLLV5A/S +A+WOfd4dCT/bi8RtuPzz3Lsmr5KzstMbWkGXWSjBYzYQg7V5//FrKS4Py8R4x0z4Ub+ FYahEnhPpb8Fhi813RPG5DruweEJ1E4r1orN5hruKcdmj6hh9pK24Q3ODYX4iKy79Oy5 f6JwFJUutI+3s4fGieFwB17C1uBmAtGUWjFSaU0234yxCjBFA2qdP35xNTUb3xAiG78c EI9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=GJtn6kBx; 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 p12-20020a056a000b4c00b0050571cecaefsi2995712pfo.14.2022.04.12.16.51.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 16:51:18 -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=GJtn6kBx; 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 2E0B018B35; Tue, 12 Apr 2022 14:44:32 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349705AbiDLGhD (ORCPT + 99 others); Tue, 12 Apr 2022 02:37:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349359AbiDLGgJ (ORCPT ); Tue, 12 Apr 2022 02:36:09 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 293F035DEB; Mon, 11 Apr 2022 23:33:43 -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 A857D618D7; Tue, 12 Apr 2022 06:33:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB0E7C385A1; Tue, 12 Apr 2022 06:33:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649745222; bh=dvPcYCzevFs+1/jJSvQNJgim5I2zaaED6vtbihtMvF4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GJtn6kBxBiXse8aFfPrx61y9xU6Ite4aAo/rj8WwKiHFqKAtdoTMTzpdJO93Czx8D 2j7+MpAA/pDq7LkC+D1ovJOSD+A0GXrEcbRWzyeGhD7lup3QMpUc1PO3/rmoSiPoLB vqtmh7vLS7m2rSWXwsx4f7k7roPR4inRvz5wfpcU= 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.10 021/171] power: supply: axp20x_battery: properly report current when discharging Date: Tue, 12 Apr 2022 08:28:32 +0200 Message-Id: <20220412062928.497619703@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062927.870347203@linuxfoundation.org> References: <20220412062927.870347203@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 e84b6e4da14a..9fda98b950ba 100644 --- a/drivers/power/supply/axp20x_battery.c +++ b/drivers/power/supply/axp20x_battery.c @@ -185,7 +185,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) { @@ -265,12 +264,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