Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp604353img; Fri, 22 Mar 2019 05:01:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqxt3E2OzDsqfTp/iF4nyatdTP5Go1HVLg/jHyQKalXdGfuL8cih82ADyBFvrXrX7fFzoFYw X-Received: by 2002:a17:902:2983:: with SMTP id h3mr9346818plb.332.1553256086777; Fri, 22 Mar 2019 05:01:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553256086; cv=none; d=google.com; s=arc-20160816; b=ADR6oRybyW7vwkANLd1ALVYJJ1cvJg/HD61xCBDexxq63xteH5VLmAXDRy+7G3S1t6 pPvM6usEP6d+UiV6PUxhSs5vP8Brdj8RuSTQxAvlO8Puh3R4AiIXT196LGtP7WXI74n4 BkASi94MllMhjk8EpNeUH4FrqEbUk717NUXKK0YCMDfpZeCYvrQMx4y4zb8r0noTVC7F qGRxPikce/6OSrLWev6t13oOzuzGXh2Ixk/Fxy3DXoMWWkuE3+oFOoqH0lcDxaUcELCR tmtbpk5y9RpKRaL0axQmKxsRWgZly+whss/iCShLIClwwbZU5fsEYM7n1zByudkd64QL Qrkw== 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=vACIEfOuQlV2xI1HELGVFsvSwXiWhJi6X8ais4d7T1M=; b=asWjvN9wKrE+rI+BaSkRvPBizDUs9NvYrXXy/ZWOKDZTqrAQMK2PzXHRYHJwQBoO36 S+9ETTqE2cq/z6dGdUkKVbios20EOE3jV03abd7NGc3iVdOsE5F/POcaV6VOx6WNNr1V s+DxnBRvEsBBJctWNSxWhoDtIIPexhmc38LRxn1FkHWQ5vj0pTPxu17BNon6u0WA3qWq 4xk99WVJymqdYmwnDGOwiVCd9zg/x5Xv9WXqUOEsSVLoqcGjECKeFS3qOWHyhkAzGfml q4cAg/NSLpuyBYtQqaRiNyzcAo1iM6tmQXh0Dc59n4aC9GHQ34r2eJACNHBXXI9KRrSw OMxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=XrppdkgB; 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 p87si6490257pfa.48.2019.03.22.05.01.08; Fri, 22 Mar 2019 05:01:26 -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=XrppdkgB; 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 S2388055AbfCVMAL (ORCPT + 99 others); Fri, 22 Mar 2019 08:00:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:37276 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732561AbfCVMAK (ORCPT ); Fri, 22 Mar 2019 08:00:10 -0400 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 D7C33204FD; Fri, 22 Mar 2019 12:00:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553256009; bh=9OzScS+1kFomAvKpYJYrhhJGsxpiDwty0Yf17AYa/B0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XrppdkgBsI0ZMMeVNxNC5yicnHzZXDhN0airFnbn5bZ3YKOspXTusUuB8L/SlSXYB 9VGPrKi/86EdYRSmjTGe74F3qHnuZ998uFeHT+XEl20u2VeXW1Suxr+wGr2jVkBrzN UKnOPVchnKSf6oCL1uLZ1tvr8t2Ui3nrLzRi/jkQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kyle Roeschley , Michal Simek , Shubhrajyoti Datta , Wolfram Sang , Sasha Levin Subject: [PATCH 4.19 063/280] i2c: cadence: Fix the hold bit setting Date: Fri, 22 Mar 2019 12:13:36 +0100 Message-Id: <20190322111309.817759000@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190322111306.356185024@linuxfoundation.org> References: <20190322111306.356185024@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit d358def706880defa4c9e87381c5bf086a97d5f9 ] In case the hold bit is not needed we are carrying the old values. Fix the same by resetting the bit when not needed. Fixes the sporadic i2c bus lockups on National Instruments Zynq-based devices. Fixes: df8eb5691c48 ("i2c: Add driver for Cadence I2C controller") Reported-by: Kyle Roeschley Acked-by: Michal Simek Signed-off-by: Shubhrajyoti Datta Tested-by: Kyle Roeschley Signed-off-by: Wolfram Sang Signed-off-by: Sasha Levin --- drivers/i2c/busses/i2c-cadence.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-cadence.c b/drivers/i2c/busses/i2c-cadence.c index b13605718291..d917cefc5a19 100644 --- a/drivers/i2c/busses/i2c-cadence.c +++ b/drivers/i2c/busses/i2c-cadence.c @@ -382,8 +382,10 @@ static void cdns_i2c_mrecv(struct cdns_i2c *id) * Check for the message size against FIFO depth and set the * 'hold bus' bit if it is greater than FIFO depth. */ - if (id->recv_count > CDNS_I2C_FIFO_DEPTH) + if ((id->recv_count > CDNS_I2C_FIFO_DEPTH) || id->bus_hold_flag) ctrl_reg |= CDNS_I2C_CR_HOLD; + else + ctrl_reg = ctrl_reg & ~CDNS_I2C_CR_HOLD; cdns_i2c_writereg(ctrl_reg, CDNS_I2C_CR_OFFSET); @@ -440,8 +442,11 @@ static void cdns_i2c_msend(struct cdns_i2c *id) * Check for the message size against FIFO depth and set the * 'hold bus' bit if it is greater than FIFO depth. */ - if (id->send_count > CDNS_I2C_FIFO_DEPTH) + if ((id->send_count > CDNS_I2C_FIFO_DEPTH) || id->bus_hold_flag) ctrl_reg |= CDNS_I2C_CR_HOLD; + else + ctrl_reg = ctrl_reg & ~CDNS_I2C_CR_HOLD; + cdns_i2c_writereg(ctrl_reg, CDNS_I2C_CR_OFFSET); /* Clear the interrupts in interrupt status register. */ -- 2.19.1