Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp131583ybc; Mon, 18 Nov 2019 21:52:06 -0800 (PST) X-Google-Smtp-Source: APXvYqzFbEn/Y04niwV2+nS0VMT9EAW6ftDuARqTXfRZRieHXyDfa9x8OxWtwdvXUw+h03YmhDxN X-Received: by 2002:a17:906:90b:: with SMTP id i11mr18463132ejd.109.1574142726386; Mon, 18 Nov 2019 21:52:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574142726; cv=none; d=google.com; s=arc-20160816; b=Zft3+sdQQ2BatdOVOWnJJ90jaoxg2PRYDGKoulJoGEpVY3vLjntwuF60kWkaBozoWm u+Godspciui0xEHJTj1SVM5mYWloSJXA0m3nNNODu3AL6kHGzEQvIPT7TtXxRKPOdKIK giAmcto334oWbvRRV4kcaLJX+rO4dqJDPDzMQEAswES3OBc8SmbxI49/TrnEM/jl9dEd lSfqxXmc9R1vTiwXrCinur6TxUh2JfvrG+5PrESJRcqe4EPBwXafHfS/UgTDsqOkbuqv BlWSC9QkSOkfKxTnjWujctrd7a1QUBXzbWdndO6amSzovrkJNRh1S+/GakQFKWlaeA7D yWMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=c71TXmdNLPWlC1/9Sl7VcRHfMvoXjF8aSVJqgCXYp+k=; b=d9HrSmWtohoghbKH4w23LL/kGZ1pNV/3aIPDX+sIjWMVa0E631qTGZFtGENnt8aEB+ RxtGzu5somOoWdZoaSSdDfnAg+zqrENfaStL7usOgOFF5LxbUEJDfsBcpZeKUZcBJNlu bUrLNp3uw1i/d4HiLXfsoDrXepMPwpIOCevK0VdB4YF7B8LVpRIXekTqugQI7kIMRLwi OIreWYMsFfpOpQ9ZgaLQ2hFXYbKlUFQsxH/xumiqwA/ZlsD2T9LnioNiEVnCYMLr6Uiy Ygvnnwe6uAb6kcWaZc0mxiF7t2i2ZrdFnNG0aFTRh0cPjXxwv6UOkk99a8or4sYJP7RY zivg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=J17Up6Hf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c25si13469856eja.24.2019.11.18.21.51.42; Mon, 18 Nov 2019 21:52:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=J17Up6Hf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731648AbfKSFue (ORCPT + 99 others); Tue, 19 Nov 2019 00:50:34 -0500 Received: from mail.kernel.org ([198.145.29.99]:47610 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731635AbfKSFud (ORCPT ); Tue, 19 Nov 2019 00:50:33 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3518020862; Tue, 19 Nov 2019 05:50:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574142632; bh=QJJHtwudMUdjrvEkEKhASbB4r4PZp0YPBCLBKA/Tqo4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=J17Up6HfJG8bPzxu6uudeIHZaStRuaLqvguEeXhDCGDsMv2lpWdrekEdfCiYbbfMK hRICPwxgTM3Ah1pz56XQC8SiYBBEhY95o6dQE7P7NBeBSl2E9U2Y2xPln78ABz8+sl EYyBqxQaoXBMtCGc+N7OjrRXAZn5P8Vkh1wqJnUQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andreas Kemnade , Sebastian Reichel , Sasha Levin Subject: [PATCH 4.14 147/239] power: supply: twl4030_charger: disable eoc interrupt on linear charge Date: Tue, 19 Nov 2019 06:19:07 +0100 Message-Id: <20191119051332.414896377@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191119051255.850204959@linuxfoundation.org> References: <20191119051255.850204959@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andreas Kemnade [ Upstream commit 079cdff3d0a09c5da10ae1be35def7a116776328 ] This avoids getting woken up from suspend after power interruptions when the bci wrongly thinks the battery is full just because of input current going low because of low input power Signed-off-by: Andreas Kemnade Signed-off-by: Sebastian Reichel Signed-off-by: Sasha Levin --- drivers/power/supply/twl4030_charger.c | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/power/supply/twl4030_charger.c b/drivers/power/supply/twl4030_charger.c index d3cba954bab54..b20491016b1e4 100644 --- a/drivers/power/supply/twl4030_charger.c +++ b/drivers/power/supply/twl4030_charger.c @@ -440,6 +440,7 @@ static void twl4030_current_worker(struct work_struct *data) static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable) { int ret; + u32 reg; if (bci->usb_mode == CHARGE_OFF) enable = false; @@ -453,14 +454,38 @@ static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable) bci->usb_enabled = 1; } - if (bci->usb_mode == CHARGE_AUTO) + if (bci->usb_mode == CHARGE_AUTO) { + /* Enable interrupts now. */ + reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_ICHGEOC | + TWL4030_TBATOR2 | TWL4030_TBATOR1 | + TWL4030_BATSTS); + ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, reg, + TWL4030_INTERRUPTS_BCIIMR1A); + if (ret < 0) { + dev_err(bci->dev, + "failed to unmask interrupts: %d\n", + ret); + return ret; + } /* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */ ret = twl4030_clear_set_boot_bci(0, TWL4030_BCIAUTOUSB); + } /* forcing USBFASTMCHG(BCIMFSTS4[2]) to 1 */ ret = twl4030_clear_set(TWL_MODULE_MAIN_CHARGE, 0, TWL4030_USBFASTMCHG, TWL4030_BCIMFSTS4); if (bci->usb_mode == CHARGE_LINEAR) { + /* Enable interrupts now. */ + reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_TBATOR2 | + TWL4030_TBATOR1 | TWL4030_BATSTS); + ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, reg, + TWL4030_INTERRUPTS_BCIIMR1A); + if (ret < 0) { + dev_err(bci->dev, + "failed to unmask interrupts: %d\n", + ret); + return ret; + } twl4030_clear_set_boot_bci(TWL4030_BCIAUTOAC|TWL4030_CVENAC, 0); /* Watch dog key: WOVF acknowledge */ ret = twl_i2c_write_u8(TWL_MODULE_MAIN_CHARGE, 0x33, -- 2.20.1