Received: by 2002:a17:90a:88:0:0:0:0 with SMTP id a8csp10196pja; Fri, 22 Nov 2019 02:45:32 -0800 (PST) X-Google-Smtp-Source: APXvYqy18i94fa7HI+Xd1XPrb1nM+SQsaG5Tf/13yFBtfwEMvqEYavjneEuWdRsqMsGZX/7yFuMZ X-Received: by 2002:a50:fa83:: with SMTP id w3mr228110edr.272.1574419532034; Fri, 22 Nov 2019 02:45:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574419532; cv=none; d=google.com; s=arc-20160816; b=JxK6VjEODYNZeYsES5hEa06xliue93Pf3JM78Ytl/aPb/kWONEW6pXd5EpcLyORTHx lIzyMx3jOTc6JMljZLfBjstN0GpnBS3Kk5+C2YeTR8YqNstYXdqBD9byU7wFBAvbhFW0 s3QUHTVlnhQEeO+4AE6PwhATzYU5FOgFl382ThvopYynHcolQHkGb1lnbk+FIhYr4OeF o7tV9BK9hDUCykrlJuSFcdzELvHGCXMPPBtnY+EkqVXrP2eyjG4C1GzQB+dMQqcIpmJL M0spzUwGbzYXibKucz75cm3LAlbwPOTubpp1ZTWb65R3QxUdHuEPYvBB8hz3WXuA0Z7i TUmw== 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=I7+s+M8lFCt8Cx8THeI7HTGT0SH44fNoUTUyXxPujh0=; b=1Bv3xGvjBv6r41G/4BIjBxOf9vgibO89ve2Atdut0x+tTSuiim4UZZ0wvkiD0C6lE8 ARcz6NPNRWD1HRlUxvq8IytXDsjZw4lNqHBkJjjNADy9UAvAnmEFJKu/NqbZyUjP5kxJ +lcrTGJvLyditcMCHiqBzchNRby0kdBk6o5JyK3feOg58SdtKIi408chhnFZ9/+yJ4f/ LvNnl3Jw1mzmbk3MuoA/dpZwbUTdIOxyPnZT60ZAx7zI1R72l+vL106nDBxTX0ZNvnet ZkDxqNKdwMywgeiE/ZewURphEaBiqXuLM1col7L5TXCeQiDKlTOVjYC6jY3Nu4n7ZxcU gMrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=A7PjIVpi; 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 c10si40877edv.360.2019.11.22.02.45.07; Fri, 22 Nov 2019 02:45:32 -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=A7PjIVpi; 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 S1728501AbfKVKm4 (ORCPT + 99 others); Fri, 22 Nov 2019 05:42:56 -0500 Received: from mail.kernel.org ([198.145.29.99]:48354 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729157AbfKVKmw (ORCPT ); Fri, 22 Nov 2019 05:42:52 -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 E94C42071F; Fri, 22 Nov 2019 10:42:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574419371; bh=u5HAUch/zt0qKhz/JRb40yB5Wv5KwFM6XhDO9ftbcdI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A7PjIVpiVus7WQmcauc5MBCTTv6SqOK+QhWxbtuINzjLErSw2O/Qzyh8eNKIFPEYp QPMkGkbEJEnBTZqJ7vJ/cCdg2AAoSSrl6yofezr+9w29/j5mMDyqiKzoTWnd32thzt 4vaD1G/OrYYRe+zM3Z6HAED0AzQyPb62nJXfUj3o= 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.9 089/222] power: supply: twl4030_charger: disable eoc interrupt on linear charge Date: Fri, 22 Nov 2019 11:27:09 +0100 Message-Id: <20191122100909.975432940@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191122100830.874290814@linuxfoundation.org> References: <20191122100830.874290814@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 14fed11e8f6e3..5b1f147b11cb0 100644 --- a/drivers/power/supply/twl4030_charger.c +++ b/drivers/power/supply/twl4030_charger.c @@ -469,6 +469,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; @@ -482,14 +483,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