Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp888756ybe; Fri, 13 Sep 2019 07:52:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqy+mGQ7hgTqUhrOlmgloFc825sddnnk9cE01dXzN9LbnQ4wix/v2sG47Io2FoWai3Skb7sL X-Received: by 2002:a50:9e6c:: with SMTP id z99mr47026709ede.200.1568386361970; Fri, 13 Sep 2019 07:52:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568386361; cv=none; d=google.com; s=arc-20160816; b=yE18vESQVWaWotm3Cwi8FJcyKjemCRrRtrdukUWdSs9Vud6KEescI4YVlNA5Ap2wZ3 kfkvln9TVHq7CrXvOS4DVoalPckktiofb53UxkJQXX40HOwQQW7EJVoNFbRlEbP2vvfW +rB2mcC0jf+EgeHUDoOXzZxqKxmJS3OSaqpYEKtP36Wb71pjYEnkOslIHiBu237YiSYG 60Oe2hkX8kBdusO15oiP+U9uJapWpkCA+g4Sld/OjSjk1KTG5gWTYlZWxgNQ6nZj3yNF IQQNtkxV3SHOLOaBHj2e76q1y23tmQPUnpO0X2yRw26wVzIDPMuGbLR+Kx6LRj0K9ZQd bqIg== 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=Bcx+gBWU/+mEfeVNXykPnnrxteWdFzDT2nu9XaPPotE=; b=ed6PhYOvkMCAHUBVSJkI+BJ8d1wW9u81TFTnm960w+a7/TUf03+wP1dfY6yn1fDYDu kpZ9h4HWe0J9mXEjY8Mn8s9rLKZKStl1fmlaC68mBVVsz3ku94EPmG7rflRmNR6EbC9H 2AEuf4sEbA/OYsGsOw1ebJjXKLZ9eX0SoGGWSTcngkXK2Pm3CKEOe8VlOIa1h1L3xBsp 2hqG67iWGclcHO8iIHWdW2KE7OhWUHMxxQXXqR4j/gtq1PP9N7SL9qflY1j0hgPLJWPS fQtFhRzx9BFtZUO592lYWQ8IBSNXFFz2YTtiX43zLNKPrpOe0Vh1dDggUs2EWnwvDKoW iLnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=C6KRhjnt; 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 h22si6254912ejs.131.2019.09.13.07.52.18; Fri, 13 Sep 2019 07:52:41 -0700 (PDT) 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=C6KRhjnt; 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 S1730185AbfIMNT3 (ORCPT + 99 others); Fri, 13 Sep 2019 09:19:29 -0400 Received: from mail.kernel.org ([198.145.29.99]:47556 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729863AbfIMNT2 (ORCPT ); Fri, 13 Sep 2019 09:19:28 -0400 Received: from localhost (unknown [104.132.45.99]) (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 F2CB1206A5; Fri, 13 Sep 2019 13:19:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1568380767; bh=txUuZQMTu44dx0/gJStgUKSlPnx9hoCMQyPa3qKsVeg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C6KRhjntheITAX7Tvdxcb3z8dvtg4him0O9A7jVfz0MFoYw6SyZHpHIpYfaGckiDY 7Pes/3WqD0Wvsd2kSQxMaJy+WPbLza+XKECSYBT4JTIEe/+mAKLA7D984N4SHkJAKf qeSvJYjS9hN26DgXvU1YlzCvSxGEfbwKQC6U1ZcA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Ludovic Desroches , Raag Jadav , Wolfram Sang , Sasha Levin Subject: [PATCH 4.19 172/190] i2c: at91: disable TXRDY interrupt after sending data Date: Fri, 13 Sep 2019 14:07:07 +0100 Message-Id: <20190913130613.507083280@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190913130559.669563815@linuxfoundation.org> References: <20190913130559.669563815@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 [ Upstream commit d12e3aae160fb26b534c4496b211d6e60a5179ed ] Driver was not disabling TXRDY interrupt after last TX byte. This caused interrupt storm until transfer timeouts for slow or broken device on the bus. The patch fixes the interrupt storm on my SAMA5D2-based board. Cc: stable@vger.kernel.org # 5.2.x [v5.2 introduced file split; the patch should apply to i2c-at91.c before the split] Fixes: fac368a04048 ("i2c: at91: add new driver") Signed-off-by: Michał Mirosław Acked-by: Ludovic Desroches Tested-by: Raag Jadav Signed-off-by: Wolfram Sang Signed-off-by: Sasha Levin --- drivers/i2c/busses/i2c-at91.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c index 3f3e8b3bf5ff9..0998a388d2ed5 100644 --- a/drivers/i2c/busses/i2c-at91.c +++ b/drivers/i2c/busses/i2c-at91.c @@ -270,9 +270,11 @@ static void at91_twi_write_next_byte(struct at91_twi_dev *dev) writeb_relaxed(*dev->buf, dev->base + AT91_TWI_THR); /* send stop when last byte has been written */ - if (--dev->buf_len == 0) + if (--dev->buf_len == 0) { if (!dev->use_alt_cmd) at91_twi_write(dev, AT91_TWI_CR, AT91_TWI_STOP); + at91_twi_write(dev, AT91_TWI_IDR, AT91_TWI_TXRDY); + } dev_dbg(dev->dev, "wrote 0x%x, to go %zu\n", *dev->buf, dev->buf_len); @@ -690,9 +692,8 @@ static int at91_do_twi_transfer(struct at91_twi_dev *dev) } else { at91_twi_write_next_byte(dev); at91_twi_write(dev, AT91_TWI_IER, - AT91_TWI_TXCOMP | - AT91_TWI_NACK | - AT91_TWI_TXRDY); + AT91_TWI_TXCOMP | AT91_TWI_NACK | + (dev->buf_len ? AT91_TWI_TXRDY : 0)); } } -- 2.20.1