Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp4532248imm; Mon, 17 Sep 2018 16:00:14 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZPv4d23qEsKgCPdsyy5x47UM8/4elpgbjwOLf3tgQzgQBPLTwlyM3QR3/4OH6EdG9Vlt9G X-Received: by 2002:a17:902:b115:: with SMTP id q21-v6mr27033915plr.333.1537225214480; Mon, 17 Sep 2018 16:00:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537225214; cv=none; d=google.com; s=arc-20160816; b=jRNiXh9ClVFAjWrRed5EhGZT8bMeN3SlPu/Bav64gmV15ADBmpjrEUlIj1oJzz/Snn G5L0oOhR28Evt31EpSe4W4Pyaq1VuT1biu7Neq6zVhquHekHgRIOXa4fXhNBwk6lyJxq gUtMZC8+pU/iZ75PQma91avekC7kLSg5qh+uI1mxtNz0agQv5uZwbHALHS8WpxiWVCj8 Oe0Hawbm1a8LOx6t+ll2skFE9Sat2mJRY4pUVzoETjupE/eEPH8vVoyQI7cr84DAXlI2 oeJtoL7/UEGQ69ecfD9QjnkcvSr/XQJywSrJrtOLz4QZnmtnPx8SjEqUWsGIdHqAT6KE A4rA== 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; bh=nesQ8rqcdCgo69P0pP7G1UiTR+PHxApSzUG3fd715MA=; b=YXf9BmSr313OUcWhMJupfgjSKoR+ArQ1RVqLFhI0aS3E+IoCuTWyHxpfyryoUmAXDe 23A/6065zw2K1io1e2Q1oJQ7mRrtc3UH24k95olMU4x3IlbnmiyqVUwXPkX2YeJ8fI/a uwneN/NdnDl9RFm5Rwnsiw3PvV0SQGGj5PmL60YQTkVQ93qTsq7Fv6a4hd/FZKAW5kdn orx4CnmkT48d1GEppg4FEWeghPMZ+8+737iXPnS3bPakDNzpvFJM4IGJdWVpRJKKTSZ+ 9jecuX//I5jvrWvg2ZlhI0ACdHS4ifZMORXr2Alk0CmSqQ/JbG7ZMkZ51c7UnuERn2bd UwDg== ARC-Authentication-Results: i=1; mx.google.com; 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 w71-v6si15683679pgd.362.2018.09.17.15.59.58; Mon, 17 Sep 2018 16:00:14 -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; 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 S1729875AbeIRE3V (ORCPT + 99 others); Tue, 18 Sep 2018 00:29:21 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:47970 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727559AbeIRE3U (ORCPT ); Tue, 18 Sep 2018 00:29:20 -0400 Received: from localhost (li1825-44.members.linode.com [172.104.248.44]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id B7EEFC03; Mon, 17 Sep 2018 22:59:52 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Shubhrajyoti Datta , Michal Simek , Wolfram Sang , stable@kernel.org Subject: [PATCH 4.14 001/126] i2c: xiic: Make the start and the byte count write atomic Date: Tue, 18 Sep 2018 00:40:49 +0200 Message-Id: <20180917211703.553503631@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180917211703.481236999@linuxfoundation.org> References: <20180917211703.481236999@linuxfoundation.org> User-Agent: quilt/0.65 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. ------------------ From: Shubhrajyoti Datta commit ae7304c3ea28a3ba47a7a8312c76c654ef24967e upstream. Disable interrupts while configuring the transfer and enable them back. We have below as the programming sequence 1. start and slave address 2. byte count and stop In some customer platform there was a lot of interrupts between 1 and 2 and after slave address (around 7 clock cyles) if 2 is not executed then the transaction is nacked. To fix this case make the 2 writes atomic. Signed-off-by: Shubhrajyoti Datta Signed-off-by: Michal Simek [wsa: added a newline for better readability] Signed-off-by: Wolfram Sang Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/i2c/busses/i2c-xiic.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/i2c/busses/i2c-xiic.c +++ b/drivers/i2c/busses/i2c-xiic.c @@ -538,6 +538,7 @@ static void xiic_start_recv(struct xiic_ { u8 rx_watermark; struct i2c_msg *msg = i2c->rx_msg = i2c->tx_msg; + unsigned long flags; /* Clear and enable Rx full interrupt. */ xiic_irq_clr_en(i2c, XIIC_INTR_RX_FULL_MASK | XIIC_INTR_TX_ERROR_MASK); @@ -553,6 +554,7 @@ static void xiic_start_recv(struct xiic_ rx_watermark = IIC_RX_FIFO_DEPTH; xiic_setreg8(i2c, XIIC_RFD_REG_OFFSET, rx_watermark - 1); + local_irq_save(flags); if (!(msg->flags & I2C_M_NOSTART)) /* write the address */ xiic_setreg16(i2c, XIIC_DTR_REG_OFFSET, @@ -563,6 +565,8 @@ static void xiic_start_recv(struct xiic_ xiic_setreg16(i2c, XIIC_DTR_REG_OFFSET, msg->len | ((i2c->nmsgs == 1) ? XIIC_TX_DYN_STOP_MASK : 0)); + local_irq_restore(flags); + if (i2c->nmsgs == 1) /* very last, enable bus not busy as well */ xiic_irq_clr_en(i2c, XIIC_INTR_BNB_MASK);