From patchwork Mon Jul 23 04:08:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matheus Castello X-Patchwork-Id: 10539613 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E5B72174A for ; Mon, 23 Jul 2018 04:33:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D21932022B for ; Mon, 23 Jul 2018 04:33:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C66E5204FB; Mon, 23 Jul 2018 04:33:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6BEAD2022B for ; Mon, 23 Jul 2018 04:33:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728295AbeGWFcx (ORCPT ); Mon, 23 Jul 2018 01:32:53 -0400 Received: from gateway22.websitewelcome.com ([192.185.46.194]:35155 "EHLO gateway22.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728303AbeGWFcx (ORCPT ); Mon, 23 Jul 2018 01:32:53 -0400 Received: from cm12.websitewelcome.com (cm12.websitewelcome.com [100.42.49.8]) by gateway22.websitewelcome.com (Postfix) with ESMTP id CFA749189 for ; Sun, 22 Jul 2018 23:09:31 -0500 (CDT) Received: from br164.hostgator.com.br ([192.185.176.180]) by cmsmtp with SMTP id hSA7fB5IESjJAhSA7fx81E; Sun, 22 Jul 2018 23:09:31 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=castello.eng.br; s=default; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Oq8DE0ZVL8MkaMAaSb3QYKeaXhdbQxIhDYODtJiW/II=; b=JglGGp6jdj9K9Kd/MC82W5zbb k24S/fuytkZUbsqLhxBnVKyh/p25mcW2zcyKLrTCLD1rDMD8GDT/wUn/NMqQ2uFCgXfq3ZdMS0iY8 kDRj52PXMX9lYcqRurybTfPuVaLUmNUgqoOsNKlmpdZpSfcVo0wFYl+Twk/Clz1iuyGIQwtWCQx+7 qpP1JsTcjB/t0qFc401jwTWCHeBzmh+NvkqJn+OJaWPCpoddGnRy4tdHnE04tTo678BSdHFRGv1xi fpWkfnZCjxm4XC3knZX8daOcK0j+m2rqVmpkxBn0FmutNSQZuof030aTkSti7uqEJASN1JhqR4BjP +u+IZf5eQ==; Received: from [191.189.20.114] (port=7927 helo=localhost.localdomain) by br164.hostgator.com.br with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1fhSA6-001oyu-Um; Mon, 23 Jul 2018 01:09:31 -0300 From: Matheus Castello To: sre@kernel.org Cc: robh+dt@kernel.org, mark.rutland@arm.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Matheus Castello Subject: [PATCH 1/4] power: supply: max17040: Add IRQ handler for low SOC alert Date: Mon, 23 Jul 2018 00:08:13 -0400 Message-Id: <20180723040816.19455-2-matheus@castello.eng.br> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20180723040816.19455-1-matheus@castello.eng.br> References: <20180723040816.19455-1-matheus@castello.eng.br> X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - br164.hostgator.com.br X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - castello.eng.br X-BWhitelist: no X-Source-IP: 191.189.20.114 X-Source-L: No X-Exim-ID: 1fhSA6-001oyu-Um X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (localhost.localdomain) [191.189.20.114]:7927 X-Source-Auth: matheus@castello.eng.br X-Email-Count: 10 X-Source-Cap: Y2FzdGUyNDg7Y2FzdGUyNDg7YnIxNjQuaG9zdGdhdG9yLmNvbS5icg== X-Local-Domain: yes Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP According datasheet max17040 has a pin for alert host for low SOC. This pin can be used as external interrupt, so we need to check for interrupts assigned for device and handle it. In hadler we are checking and storing fuel gauge registers values and send an uevent to notificate user space, so user space can decide save work or turn off since the alert demonstrate that the battery may no have the power to keep the system turned on for much longer. Signed-off-by: Matheus Castello --- drivers/power/supply/max17040_battery.c | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/drivers/power/supply/max17040_battery.c b/drivers/power/supply/max17040_battery.c index 33c40f79d23d..6e54e58814a9 100644 --- a/drivers/power/supply/max17040_battery.c +++ b/drivers/power/supply/max17040_battery.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -179,6 +180,24 @@ static void max17040_work(struct work_struct *work) MAX17040_DELAY); } +static irqreturn_t max17040_thread_handler(int id, void *dev) +{ + struct max17040_chip *chip = dev; + struct i2c_client *client = chip->client; + + dev_warn(&client->dev, "IRQ: Alert battery low level"); + /* read registers */ + max17040_get_vcell(chip->client); + max17040_get_soc(chip->client); + max17040_get_online(chip->client); + max17040_get_status(chip->client); + + /* send uevent */ + power_supply_changed(chip->battery); + + return IRQ_HANDLED; +} + static enum power_supply_property max17040_battery_props[] = { POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_ONLINE, @@ -200,6 +219,8 @@ static int max17040_probe(struct i2c_client *client, struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); struct power_supply_config psy_cfg = {}; struct max17040_chip *chip; + int ret; + unsigned int flags; if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE)) return -EIO; @@ -221,6 +242,24 @@ static int max17040_probe(struct i2c_client *client, return PTR_ERR(chip->battery); } + /* check interrupt */ + if (client->irq) { + dev_info(&client->dev, "IRQ: enabled\n"); + flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT; + + ret = devm_request_threaded_irq(&client->dev, client->irq, + NULL, + max17040_thread_handler, flags, + chip->battery->desc->name, + chip); + if (ret) { + client->irq = 0; + if (ret != -EBUSY) + dev_warn(&client->dev, + "Failed to get IRQ err %d \n", ret); + } + } + max17040_reset(client); max17040_get_version(client); @@ -248,6 +287,12 @@ static int max17040_suspend(struct device *dev) struct max17040_chip *chip = i2c_get_clientdata(client); cancel_delayed_work(&chip->work); + + if (chip->client->irq) { + disable_irq(chip->client->irq); + enable_irq_wake(chip->client->irq); + } + return 0; } @@ -258,6 +303,12 @@ static int max17040_resume(struct device *dev) queue_delayed_work(system_power_efficient_wq, &chip->work, MAX17040_DELAY); + + if (chip->client->irq) { + disable_irq_wake(chip->client->irq); + enable_irq(chip->client->irq); + } + return 0; } From patchwork Mon Jul 23 04:08:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matheus Castello X-Patchwork-Id: 10539611 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 287AC174A for ; Mon, 23 Jul 2018 04:33:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 148D820223 for ; Mon, 23 Jul 2018 04:33:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0664D204FB; Mon, 23 Jul 2018 04:33:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4B03720223 for ; Mon, 23 Jul 2018 04:33:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728298AbeGWFcx (ORCPT ); Mon, 23 Jul 2018 01:32:53 -0400 Received: from gateway22.websitewelcome.com ([192.185.46.194]:49790 "EHLO gateway22.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728295AbeGWFcx (ORCPT ); Mon, 23 Jul 2018 01:32:53 -0400 X-Greylist: delayed 1378 seconds by postgrey-1.27 at vger.kernel.org; Mon, 23 Jul 2018 01:32:52 EDT Received: from cm12.websitewelcome.com (cm12.websitewelcome.com [100.42.49.8]) by gateway22.websitewelcome.com (Postfix) with ESMTP id E892A9350 for ; Sun, 22 Jul 2018 23:09:34 -0500 (CDT) Received: from br164.hostgator.com.br ([192.185.176.180]) by cmsmtp with SMTP id hSAAfB5LgSjJAhSAAfx84i; Sun, 22 Jul 2018 23:09:34 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=castello.eng.br; s=default; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=GgGZmjOQR9xtwOYRIyHgKsDrFuSnUHm3BwBAMQ+Vkuo=; b=S1q3RPXrUrFqZVUF6/b+dnM7H 5bPwyBiVzHKc5w6Ivk8I1hpVksB1JdQ+5FYCADZS0ev8tzXlBPvqZ3ti5ZNiMtBioiGDDKRzkz0gx FrZdLyWctzFUzgwizgTXKFHhG9RBm5G0JE4cXl/t20JhwKO+kpF3S/5jC+hXaAgDGaUDHqQZyeZpY mUu1GX1EwnfAEU8FtMJeaSU7hEEGxsMLcCbEfJCetiVjOpNO/PkfWXDiXA+W5/bS/UFeRnw75rd/4 dKqhcFkseZVkPI9ODLaEwPVbPqdPWPPmuag1heW+caagweITnDY0JAVfTbLlS5wKx6DSddVI2hPpC lIsNxTi4A==; Received: from [191.189.20.114] (port=7927 helo=localhost.localdomain) by br164.hostgator.com.br with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1fhSAA-001oyu-5a; Mon, 23 Jul 2018 01:09:34 -0300 From: Matheus Castello To: sre@kernel.org Cc: robh+dt@kernel.org, mark.rutland@arm.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Matheus Castello Subject: [PATCH 2/4] power: supply: max17040: Config alert SOC low level threshold from FDT Date: Mon, 23 Jul 2018 00:08:14 -0400 Message-Id: <20180723040816.19455-3-matheus@castello.eng.br> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20180723040816.19455-1-matheus@castello.eng.br> References: <20180723040816.19455-1-matheus@castello.eng.br> X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - br164.hostgator.com.br X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - castello.eng.br X-BWhitelist: no X-Source-IP: 191.189.20.114 X-Source-L: No X-Exim-ID: 1fhSAA-001oyu-5a X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (localhost.localdomain) [191.189.20.114]:7927 X-Source-Auth: matheus@castello.eng.br X-Email-Count: 17 X-Source-Cap: Y2FzdGUyNDg7Y2FzdGUyNDg7YnIxNjQuaG9zdGdhdG9yLmNvbS5icg== X-Local-Domain: yes Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP For configuration of fuel gauge alert for a low level state of charge interrupt we add a function to config level threshold and a device tree binding property to set it in flatned device tree node. Now we can use "maxim,alert-soc-level" property with the values from 1 up to 32 to configure alert interrupt threshold. Signed-off-by: Matheus Castello --- drivers/power/supply/max17040_battery.c | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/power/supply/max17040_battery.c b/drivers/power/supply/max17040_battery.c index 6e54e58814a9..3efa52d32b44 100644 --- a/drivers/power/supply/max17040_battery.c +++ b/drivers/power/supply/max17040_battery.c @@ -47,6 +47,8 @@ struct max17040_chip { int soc; /* State Of Charge */ int status; + /* Alert threshold */ + int alert_threshold; }; static int max17040_get_property(struct power_supply *psy, @@ -123,6 +125,28 @@ static void max17040_get_soc(struct i2c_client *client) chip->soc = (soc >> 8); } +static int max17040_set_soc_threshold(struct i2c_client *client, u8 level) +{ + int ret; + u16 data; + + /* check if level is between 1% and 32% */ + if (level > 0 && level < 33) { + /* alert threshold use LSb 5 bits from RCOMP */ + /* two's-complements form: 00000 = 32% and 11111 = 1% */ + level = 32 - level; + data = max17040_read_reg(client, MAX17040_RCOMP); + data &= 0xFFE0; + data |= level; + max17040_write_reg(client, MAX17040_RCOMP, data); + ret = 0; + } else { + ret = -EINVAL; + } + + return ret; +} + static void max17040_get_version(struct i2c_client *client) { u16 version; @@ -165,6 +189,16 @@ static void max17040_get_status(struct i2c_client *client) chip->status = POWER_SUPPLY_STATUS_FULL; } +static void max17040_get_of_data(struct max17040_chip *chip) +{ + struct device *dev = &chip->client->dev; + struct device_node *np = dev->of_node; + + if (of_property_read_s32(np, "maxim,alert-soc-level", + &chip->alert_threshold)) + chip->alert_threshold = 4; +} + static void max17040_work(struct work_struct *work) { struct max17040_chip *chip; @@ -231,6 +265,7 @@ static int max17040_probe(struct i2c_client *client, chip->client = client; chip->pdata = client->dev.platform_data; + max17040_get_of_data(chip); i2c_set_clientdata(client, chip); psy_cfg.drv_data = chip; @@ -262,6 +297,7 @@ static int max17040_probe(struct i2c_client *client, max17040_reset(client); max17040_get_version(client); + max17040_set_soc_threshold(client, chip->alert_threshold); INIT_DEFERRABLE_WORK(&chip->work, max17040_work); queue_delayed_work(system_power_efficient_wq, &chip->work, From patchwork Mon Jul 23 04:08:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matheus Castello X-Patchwork-Id: 10539627 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7C7D91823 for ; Mon, 23 Jul 2018 04:59:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 693F427853 for ; Mon, 23 Jul 2018 04:59:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5DC0C28517; Mon, 23 Jul 2018 04:59:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0CF5C28518 for ; Mon, 23 Jul 2018 04:59:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387712AbeGWF6o (ORCPT ); Mon, 23 Jul 2018 01:58:44 -0400 Received: from gateway20.websitewelcome.com ([192.185.59.4]:22685 "EHLO gateway20.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726781AbeGWF6n (ORCPT ); Mon, 23 Jul 2018 01:58:43 -0400 X-Greylist: delayed 1504 seconds by postgrey-1.27 at vger.kernel.org; Mon, 23 Jul 2018 01:58:43 EDT Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5]) by gateway20.websitewelcome.com (Postfix) with ESMTP id 3068E400C74A4 for ; Sun, 22 Jul 2018 23:09:38 -0500 (CDT) Received: from br164.hostgator.com.br ([192.185.176.180]) by cmsmtp with SMTP id hSAEfi6eeRPojhSAEfFD05; Sun, 22 Jul 2018 23:09:38 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=castello.eng.br; s=default; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=EnsQVUYtm0+DsogU7q/hOj4wINGmftqfl6hUQBV9EH0=; b=bqj6Xi0NOdTPSN7bfdLRzVLZq mNvH77TI9coUYuuksFUq31ND4dD4t+X8WELGDzQ4oHQXpt6NUbE9eA+N2AbfSOA/eQ1JO88uBfJfi MOW/WsYTkwpY9V84kY9R6HtKCKWtGXVSikCGM8euUSLE1SIpDVtiWS1367C6ghvdrIScZOBA21Ogp ORHthREa3ub+kMYJw3CV2dtk0GNOEQLFbO1oneUWGx4WzgPi2bRMJFLy8IdYyLpJr5lxoOgrfp8o/ ZCU/Kytgk8+iglei+GSa1ox1B0qSV+gZaEX0tr5Q9xj6nlCrA1LDXpCUNeGRQOyWryKFnvdYJN7lx s4JdrK/Pg==; Received: from [191.189.20.114] (port=7927 helo=localhost.localdomain) by br164.hostgator.com.br with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1fhSAD-001oyu-7r; Mon, 23 Jul 2018 01:09:37 -0300 From: Matheus Castello To: sre@kernel.org Cc: robh+dt@kernel.org, mark.rutland@arm.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Matheus Castello Subject: [PATCH 3/4] dt-bindings: power: supply: Max17040: Add low level SOC alert threshold Date: Mon, 23 Jul 2018 00:08:15 -0400 Message-Id: <20180723040816.19455-4-matheus@castello.eng.br> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20180723040816.19455-1-matheus@castello.eng.br> References: <20180723040816.19455-1-matheus@castello.eng.br> X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - br164.hostgator.com.br X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - castello.eng.br X-BWhitelist: no X-Source-IP: 191.189.20.114 X-Source-L: No X-Exim-ID: 1fhSAD-001oyu-7r X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (localhost.localdomain) [191.189.20.114]:7927 X-Source-Auth: matheus@castello.eng.br X-Email-Count: 24 X-Source-Cap: Y2FzdGUyNDg7Y2FzdGUyNDg7YnIxNjQuaG9zdGdhdG9yLmNvbS5icg== X-Local-Domain: yes Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP For configure low level state of charge threshold alert signaled from max17040 we add "maxim,alert-soc-level" property. Signed-off-by: Matheus Castello --- .../bindings/power/supply/max17040_battery.txt | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Documentation/devicetree/bindings/power/supply/max17040_battery.txt diff --git a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt new file mode 100644 index 000000000000..e6e4e46c03c4 --- /dev/null +++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt @@ -0,0 +1,24 @@ +max17040_battery +~~~~~~~~~~~~~~~~ + +Required properties : + - compatible : "maxim,max17040" + +Optional threshold properties : + If skipped the power up default value will be used + - maxim,alert-soc-level : The alert threshold that sets the state of + charge level where an interrupt is generated. + max17040 can be configured from 1 up to 32. + +Remembering that for the interrupt to be handled it must also be described the +information of the interruption in the node. + +Example: + + battery-charger@36 { + compatible = "maxim,max17040"; + reg = <0x36>; + maxim,alert-soc-level = <10>; + interrupt-parent = <&gpio>; + interrupts = <18 IRQ_TYPE_EDGE_FALLING>; + }; From patchwork Mon Jul 23 04:08:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matheus Castello X-Patchwork-Id: 10539623 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CB3FD1822 for ; Mon, 23 Jul 2018 04:57:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ABBCB23B34 for ; Mon, 23 Jul 2018 04:57:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9E365268AE; Mon, 23 Jul 2018 04:57:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3F76E23B34 for ; Mon, 23 Jul 2018 04:57:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727956AbeGWF4i (ORCPT ); Mon, 23 Jul 2018 01:56:38 -0400 Received: from gateway36.websitewelcome.com ([50.116.125.2]:16620 "EHLO gateway36.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725976AbeGWF4i (ORCPT ); Mon, 23 Jul 2018 01:56:38 -0400 X-Greylist: delayed 1505 seconds by postgrey-1.27 at vger.kernel.org; Mon, 23 Jul 2018 01:56:37 EDT Received: from cm17.websitewelcome.com (cm17.websitewelcome.com [100.42.49.20]) by gateway36.websitewelcome.com (Postfix) with ESMTP id 2919C400E22B1 for ; Sun, 22 Jul 2018 22:11:35 -0500 (CDT) Received: from br164.hostgator.com.br ([192.185.176.180]) by cmsmtp with SMTP id hSAHf4nUsPvAdhSAHf949S; Sun, 22 Jul 2018 23:09:41 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=castello.eng.br; s=default; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=xbVF/gG+TGE44CgZMh960mEdaHIB1v2hHfiYYFUNTK8=; b=b5ph9s0XBW9J0Y/Hz+97ESsL2 j5LfZNZJKf7EPTh2i5Qm4TBQm9OEqTf0ccA1AavSxYewnq/xuJevc/qGdIs90+96vjxXlNp0PV1gU iYxxa7/KkJFRlNaZj9V5B9bP3YA+wOIzfWYjlv7MlddzpE8UNt7LIruhg84FoZvfKkoZEl8Gkd1aN ZLz2X/DzVLlN1r86ZFu+kh4ZiWXZSNysL+Q6sRf/TMZcTbsk1wen7AD04Ecu06Oc7ed/JxkbohXOF wTnWkda74XbEf6AqctAdu0YMVXR6fZ+8t0Tu2a6+fgxCS5lO8qvh8VFfnsi1+CkICkJ0smVo2+hKe HOGt99EPg==; Received: from [191.189.20.114] (port=7927 helo=localhost.localdomain) by br164.hostgator.com.br with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1fhSAG-001oyu-BT; Mon, 23 Jul 2018 01:09:40 -0300 From: Matheus Castello To: sre@kernel.org Cc: robh+dt@kernel.org, mark.rutland@arm.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Matheus Castello Subject: [PATCH 4/4] power: supply: max17040: Send uevent in SOC changes Date: Mon, 23 Jul 2018 00:08:16 -0400 Message-Id: <20180723040816.19455-5-matheus@castello.eng.br> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20180723040816.19455-1-matheus@castello.eng.br> References: <20180723040816.19455-1-matheus@castello.eng.br> X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - br164.hostgator.com.br X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - castello.eng.br X-BWhitelist: no X-Source-IP: 191.189.20.114 X-Source-L: No X-Exim-ID: 1fhSAG-001oyu-BT X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (localhost.localdomain) [191.189.20.114]:7927 X-Source-Auth: matheus@castello.eng.br X-Email-Count: 31 X-Source-Cap: Y2FzdGUyNDg7Y2FzdGUyNDg7YnIxNjQuaG9zdGdhdG9yLmNvbS5icg== X-Local-Domain: yes Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add check for changes in state of charge from delayed work, so in case of changes we call power_supply_changed to send an uevent. power_supply_changed send an uevent for alert user space about changes, is useful for example to user space apps made changes in UI battery level or made other decisions. Signed-off-by: Matheus Castello Reviewed-by: Krzysztof Kozlowski --- drivers/power/supply/max17040_battery.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/power/supply/max17040_battery.c b/drivers/power/supply/max17040_battery.c index 3efa52d32b44..72915ac9e13b 100644 --- a/drivers/power/supply/max17040_battery.c +++ b/drivers/power/supply/max17040_battery.c @@ -202,14 +202,22 @@ static void max17040_get_of_data(struct max17040_chip *chip) static void max17040_work(struct work_struct *work) { struct max17040_chip *chip; + u16 last_soc; chip = container_of(work, struct max17040_chip, work.work); + /* store SOC for check change */ + last_soc = chip->soc; + max17040_get_vcell(chip->client); max17040_get_soc(chip->client); max17040_get_online(chip->client); max17040_get_status(chip->client); + /* check changes and send uevent */ + if (last_soc != chip->soc) + power_supply_changed(chip->battery); + queue_delayed_work(system_power_efficient_wq, &chip->work, MAX17040_DELAY); }