From patchwork Wed Oct 9 21:06:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tony Lindgren X-Patchwork-Id: 11182161 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CA64013BD for ; Wed, 9 Oct 2019 21:06:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B4F53206BB for ; Wed, 9 Oct 2019 21:06:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730955AbfJIVGb (ORCPT ); Wed, 9 Oct 2019 17:06:31 -0400 Received: from muru.com ([72.249.23.125]:36488 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729908AbfJIVGa (ORCPT ); Wed, 9 Oct 2019 17:06:30 -0400 Received: from hillo.muru.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTP id A35638162; Wed, 9 Oct 2019 21:07:03 +0000 (UTC) From: Tony Lindgren To: Sebastian Reichel Cc: linux-pm@vger.kernel.org, linux-omap@vger.kernel.org, Merlijn Wajer , Pavel Machek Subject: [PATCH 1/5] power: supply: cpcap-battery: Move coulomb counter units per lsb to ddata Date: Wed, 9 Oct 2019 14:06:17 -0700 Message-Id: <20191009210621.10522-2-tony@atomide.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191009210621.10522-1-tony@atomide.com> References: <20191009210621.10522-1-tony@atomide.com> MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org We can simplify cpcap_battery_cc_raw_div() a bit by moving the units per lsb to ddata. Cc: Merlijn Wajer Cc: Pavel Machek Signed-off-by: Tony Lindgren Acked-by: Pavel Machek --- drivers/power/supply/cpcap-battery.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/power/supply/cpcap-battery.c b/drivers/power/supply/cpcap-battery.c --- a/drivers/power/supply/cpcap-battery.c +++ b/drivers/power/supply/cpcap-battery.c @@ -111,6 +111,7 @@ struct cpcap_battery_ddata { struct power_supply *psy; struct cpcap_battery_config config; struct cpcap_battery_state_data state[CPCAP_BATTERY_STATE_NR]; + u32 cc_lsb; /* μAms per LSB */ atomic_t active; int status; u16 vendor; @@ -220,32 +221,19 @@ static int cpcap_battery_cc_raw_div(struct cpcap_battery_ddata *ddata, s64 acc; u64 tmp; int avg_current; - u32 cc_lsb; if (!divider) return 0; - switch (ddata->vendor) { - case CPCAP_VENDOR_ST: - cc_lsb = 95374; /* μAms per LSB */ - break; - case CPCAP_VENDOR_TI: - cc_lsb = 91501; /* μAms per LSB */ - break; - default: - return -EINVAL; - } - acc = accumulator; acc = acc - ((s64)sample * offset); - cc_lsb = (cc_lsb * ddata->config.cd_factor) / 1000; if (acc >= 0) tmp = acc; else tmp = acc * -1; - tmp = tmp * cc_lsb; + tmp = tmp * ddata->cc_lsb; do_div(tmp, divider); avg_current = tmp; @@ -814,6 +802,18 @@ static int cpcap_battery_probe(struct platform_device *pdev) if (error) return error; + switch (ddata->vendor) { + case CPCAP_VENDOR_ST: + ddata->cc_lsb = 95374; /* μAms per LSB */ + break; + case CPCAP_VENDOR_TI: + ddata->cc_lsb = 91501; /* μAms per LSB */ + break; + default: + return -EINVAL; + } + ddata->cc_lsb = (ddata->cc_lsb * ddata->config.cd_factor) / 1000; + platform_set_drvdata(pdev, ddata); error = regmap_update_bits(ddata->reg, CPCAP_REG_CCM,