Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp651596img; Fri, 22 Mar 2019 05:58:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqzDfkCL8wdPryORhr/rQYYk+50ch2kEUBG1hFn1m49PwJjVsJM3KlW3HObei2fsLadFv1Gt X-Received: by 2002:a65:5c4b:: with SMTP id v11mr8581913pgr.411.1553259514086; Fri, 22 Mar 2019 05:58:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553259514; cv=none; d=google.com; s=arc-20160816; b=xKE0Vmk0wq444e8/5lFS9Cjisly8OnGFFjkB3vwLAja7aDOZ34icuFpxGuBW69aIpO hVY+YI8zdOYO1a/xucGVylh+PBaF+HLLyjXMtfpH48eiKHdPHa9jlweH545P/g0LVshd RYUDqT0W90zmyKSg60ggWQAisChc0Q9kAsxA16TaKQfFwAkZHUYupbZ9wQ1+5uF0b6yW fIRc4vjRtDDwhHQcxM9ZhQM68xJ0c7mtwZhD/ObIux2yXluOImFyCtYL8Sh1dBToXM4o Z4DsEcSNk8RP8f+T/oBviwWjJ3Z4vpNcZRPTM0P3dab/T5L2b3Dlae22hot1vdVxiz4L Ehgw== 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=/90VgZy6iNYgTPMRI63sYJ9U3BywyInvF4xncQ4AhSY=; b=Y8PhLKGU9S1xJ9pzcO3Anv0ACVuzcqka9bPcxKz4Zv1yfR/evPm4oG8Vi91SCmMgca mVOyzOieUiYk1z0pGEN4aU/PlZjOPntONnQ6IIvapcQqPr8udefboFlFWHFhhiMcMRup rX5FGJfWYl+liY0IzAeJ/eu4QxeSGO1at1v8YR4Xd1ExwRBXpC1nKIToCTcGddZypC1q 8gGHCyIkIbUNjE75F6P84pH2vvgIxUo0rZYL1X24OQu5BR0D4tS07xgafF1D4/Y5c5uT 31sGFH73OrVTWhtaomYngt8be2JpuiivGFg5C5AOZKz5OjXciWayMdOx+IlZCcd9xlXz ku6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="rf/5fwDy"; 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 z9si6309538pgv.265.2019.03.22.05.58.18; Fri, 22 Mar 2019 05:58:34 -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="rf/5fwDy"; 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 S1732407AbfCVLtI (ORCPT + 99 others); Fri, 22 Mar 2019 07:49:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:52602 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732397AbfCVLtF (ORCPT ); Fri, 22 Mar 2019 07:49:05 -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 D9C8220693; Fri, 22 Mar 2019 11:49:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553255344; bh=aecyRGejPgGoCAlIowy/PguJIovSPvoSM3nvBT7csKs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rf/5fwDy5Ql55j4+iNLEn94BDrrX4jlNCxHHdZJgdBoYZQjbGT8vm8Gr4yD5ol0di ut6sv5HQqRaI0IQb2BRhDEyoZfe+RrGGGPiiASq23Ad/vE6Zw2Fk3p0Fa58ffAqn4V UgP64HjC4PP2P39xeKSdqTwtXooPUEnJDNXe7w3s= 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.14 033/183] i2c: cadence: Fix the hold bit setting Date: Fri, 22 Mar 2019 12:14:21 +0100 Message-Id: <20190322111244.130775203@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190322111241.819468003@linuxfoundation.org> References: <20190322111241.819468003@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.14-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