Received: by 2002:a17:90a:88:0:0:0:0 with SMTP id a8csp136479pja; Fri, 22 Nov 2019 04:32:42 -0800 (PST) X-Google-Smtp-Source: APXvYqwTYIwidxlJ8k9DWVrBkxFHbHn5cHV1psCYzoTmOjt9SvtInu6W43wZWqPPupOCjMOHFoZM X-Received: by 2002:a17:906:af5a:: with SMTP id ly26mr22275519ejb.252.1574425962786; Fri, 22 Nov 2019 04:32:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574425962; cv=none; d=google.com; s=arc-20160816; b=x2JejbKCYc1APGsOc/BiIabdDt/NN+vI3bYknkT9qVhV/jGNHwsn80My8nst7Khk2f jqJt8s7SJslB+dfPQm2VIhxzwS3pNxDh3z6w/8VbScsQZGfVNSXUBeU/y8MHS6lyAarz CWz0jWIfWhVyLG6wErjhfhpsaYsrei5nBcfQiBK8kknzrfNZnI/R8QXIvguoJLvwsOcx Ef6CS9MB5zntq9AzdK1RRkOHXYttjS7Y1f/wFzp5vN6q2X/oBs4TLAmvWLLP4i1u4FDk X7Q4Q8W7Q9owjwEP37gQ30C2qB9B9KlHY2/cBPXLX5AOkIlBvAyj2QRiD8cvceYMCgJb g9OA== 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=wep+Ao63k8NWeT32uM16Ld09Mbuneo1uvGMQAPzfqPk=; b=qGhcd3fZsBBdBpg431Ov4jYbWKKBxwqH8sPrGjAdCRoVu0x9ynrigiliGdGxjWYtn8 8RWU21/lLjULiZ4pL/6rH0ZWlwP8RYwommElZfNgZ7Lw45KBpYelSmBitfb9282nFOkC 0qZKuMojVZZDvYO9F+f5w6g3c8kOIJuf3V32B8Blzy8WzsZZJGmOJbKQRqGKCZJhQbks V/oSA+c2PrcLWJSVLvLaH0anm5PjO+mJupu7tWaVzmuUE/e30L3ju2jQ2/ZYgkfbAQFr /ndv669IrezopaKeE+bL7LgDe2IvqvlaHNo7igInBRP5bSLAS+P5UZShfabGTUH2idFs GDbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=GXFJHb8C; 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 d7si4879408eda.429.2019.11.22.04.32.18; Fri, 22 Nov 2019 04:32:42 -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=GXFJHb8C; 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 S1728654AbfKVL0t (ORCPT + 99 others); Fri, 22 Nov 2019 06:26:49 -0500 Received: from mail.kernel.org ([198.145.29.99]:57158 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727200AbfKVKds (ORCPT ); Fri, 22 Nov 2019 05:33:48 -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 C0ECE20714; Fri, 22 Nov 2019 10:33:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574418827; bh=CaV5LegZwnaBQuppS0tYmH+zIr4VngiSBqdszVVVcOg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GXFJHb8CqSjwx12yAtk4MK74hQI0N3WSVKL/sBADXSLEDVDHCjBm3kbgYjFf+PLxG +rIPsswXAa3vuI7SAQbo6j6LDv3lmnQWc+reNkHE/OcdNeT8JY8jVl5cLzT9mubGzs H65kmd+DQ9Vz9KD7WC7uzl3Wmn1HEJQ6zFZ9Gkcc= 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.4 064/159] power: supply: twl4030_charger: disable eoc interrupt on linear charge Date: Fri, 22 Nov 2019 11:27:35 +0100 Message-Id: <20191122100754.419956366@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191122100704.194776704@linuxfoundation.org> References: <20191122100704.194776704@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/twl4030_charger.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c index 14fed11e8f6e3..5b1f147b11cb0 100644 --- a/drivers/power/twl4030_charger.c +++ b/drivers/power/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