Received: by 2002:a19:f614:0:0:0:0:0 with SMTP id x20csp54342lfe; Fri, 15 Apr 2022 19:10:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwW0C+5RJn3Nj9z2y96qzuDWiBdp6R+586kcIuqYdadlwCcfiLA1NhUfVj0MagfVRDQJm5o X-Received: by 2002:a17:902:7d81:b0:14f:e18b:2b9e with SMTP id a1-20020a1709027d8100b0014fe18b2b9emr1717766plm.160.1650074999722; Fri, 15 Apr 2022 19:09:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650074999; cv=none; d=google.com; s=arc-20160816; b=hUaBNZZ8Age2Z/5qzhn2kmqIfZzTNQ6UqHSrj7UHaOvYNWZlocAP48thUeazxF/7VO e+/vHtyWbeM1DgFH8LQySYZJply5G1xIe0SVEqumU0MFdWwAV/sqYqWNgtyV6HObpa5e p8Du29bCwU+VuVjUBB2p1TgFEuTvvrJ/RTE2qzuqaWItlMJEMHrPdTO/GkM5t3alVF8Y 8PVyhdfjq81NXYhRobXvEyQbQidHP+WHU0OguKNNAklkUkXMLARONOLqdnaBIkdIYa+m vEM6M5MaX9dxIVi8Ls7a3qkxFKUINYt9ptWMVEJUwo37O5kHf3i1YiIFcPK+gJaxtQmL BoPw== 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=s9w3fjbkxKpUukh7+IVqA88AN4nondxoy73rAmOBeqJ0lZCXZP0yBeeGNQIh2CMTdU AeUozzzRQ9iiEKsnVEmu7oSXxumqB1R/vClg/bIAPjYKIRErFnvjc0SOxqZLDW7zztSL 7aakrmHzj/JZ8C7ody7mJUht8LWMPbrSMuqnMlWRTc5PQv0kxxhRA+BEZrpsY7RuJqng iQgO1GVG5ViZjTi49C5koMRlagTQDzPoUPZjuykVymyqtzyzhFwX/E3rr+Dj1Gf/Dx/c IvMgxDllRjLkmeTpV9exgGIaObBJPko15YUqk0pkagsc+CM3LF8SdjrYCorBTpR1aDhF IIJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=szdQKaJn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id z19-20020a17090a541300b001c6c8e19f0csi5467696pjh.98.2022.04.15.19.09.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Apr 2022 19:09:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=szdQKaJn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 F1A971E4812; Fri, 15 Apr 2022 18:27:01 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344660AbiDNNt2 (ORCPT + 99 others); Thu, 14 Apr 2022 09:49:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344042AbiDNNaR (ORCPT ); Thu, 14 Apr 2022 09:30:17 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FA925F88; Thu, 14 Apr 2022 06:26:50 -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 BF3986190F; Thu, 14 Apr 2022 13:26:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4235C385A5; Thu, 14 Apr 2022 13:26:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649942809; bh=dvPcYCzevFs+1/jJSvQNJgim5I2zaaED6vtbihtMvF4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=szdQKaJnAtlGBK4sFwOQ1GFnx93AF7NHe1f0C0DeUL5bfZE8eAyBh1vDZYL7qb4SQ 4vZxRp+WTQM9k/Tyo1AgTqHuEAt8tZ1V80PDle4bwfzrymvCrewxF2xTbzRFGUXzp2 T7E0B+CTdPyV6G16EOoskXtGuKWXk4iuZyLjTgXM= 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 4.19 268/338] power: supply: axp20x_battery: properly report current when discharging Date: Thu, 14 Apr 2022 15:12:51 +0200 Message-Id: <20220414110846.517055203@linuxfoundation.org> X-Mailer: git-send-email 2.35.2 In-Reply-To: <20220414110838.883074566@linuxfoundation.org> References: <20220414110838.883074566@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