From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05162C4727F for ; Wed, 7 Oct 2020 08:47:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B160621D7A for ; Wed, 7 Oct 2020 08:47:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727956AbgJGIrv (ORCPT ); Wed, 7 Oct 2020 04:47:51 -0400 Received: from mailout07.rmx.de ([94.199.90.95]:41137 "EHLO mailout07.rmx.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726218AbgJGIrv (ORCPT ); Wed, 7 Oct 2020 04:47:51 -0400 Received: from kdin02.retarus.com (kdin02.dmz1.retloc [172.19.17.49]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mailout07.rmx.de (Postfix) with ESMTPS id 4C5nz56dJWzBvZd; Wed, 7 Oct 2020 10:47:45 +0200 (CEST) Received: from mta.arri.de (unknown [217.111.95.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by kdin02.retarus.com (Postfix) with ESMTPS id 4C5nxy6PCwz2TTLm; Wed, 7 Oct 2020 10:46:46 +0200 (CEST) Received: from N95HX1G2.wgnetz.xx (192.168.54.119) by mta.arri.de (192.168.100.104) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 7 Oct 2020 10:46:21 +0200 From: Christian Eggers To: Oleksij Rempel , Shawn Guo , Sascha Hauer , Fabio Estevam , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , "David Laight" CC: Pengutronix Kernel Team , NXP Linux Team , , , , Christian Eggers , Krzysztof Kozlowski , Subject: [PATCH v5 1/3] i2c: imx: Fix reset of I2SR_IAL flag Date: Wed, 7 Oct 2020 10:45:22 +0200 Message-ID: <20201007084524.10835-2-ceggers@arri.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201007084524.10835-1-ceggers@arri.de> References: <20201007084524.10835-1-ceggers@arri.de> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [192.168.54.119] X-RMX-ID: 20201007-104650-4C5nxy6PCwz2TTLm-0@kdin02 X-RMX-SOURCE: 217.111.95.66 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org According to the "VFxxx Controller Reference Manual" (and the comment block starting at line 97), Vybrid requires writing a one for clearing an interrupt flag. Syncing the method for clearing I2SR_IIF in i2c_imx_isr(). Signed-off-by: Christian Eggers Fixes: 4b775022f6fd ("i2c: imx: add struct to hold more configurable quirks") Reviewed-by: Uwe Kleine-König Cc: stable@vger.kernel.org --- drivers/i2c/busses/i2c-imx.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index 0ab5381aa012..cbdcab73a055 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -412,6 +412,19 @@ static void i2c_imx_dma_free(struct imx_i2c_struct *i2c_imx) dma->chan_using = NULL; } +static void i2c_imx_clear_irq(struct imx_i2c_struct *i2c_imx, unsigned int bits) +{ + unsigned int temp; + + /* + * i2sr_clr_opcode is the value to clear all interrupts. Here we want to + * clear only , so we write ~i2sr_clr_opcode with just + * toggled. This is required because i.MX needs W1C and Vybrid uses W0C. + */ + temp = ~i2c_imx->hwdata->i2sr_clr_opcode ^ bits; + imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); +} + static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy, bool atomic) { unsigned long orig_jiffies = jiffies; @@ -424,8 +437,7 @@ static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy, bool a /* check for arbitration lost */ if (temp & I2SR_IAL) { - temp &= ~I2SR_IAL; - imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); + i2c_imx_clear_irq(i2c_imx, I2SR_IAL); return -EAGAIN; } @@ -623,9 +635,7 @@ static irqreturn_t i2c_imx_isr(int irq, void *dev_id) if (temp & I2SR_IIF) { /* save status register */ i2c_imx->i2csr = temp; - temp &= ~I2SR_IIF; - temp |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IIF); - imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); + i2c_imx_clear_irq(i2c_imx, I2SR_IIF); wake_up(&i2c_imx->queue); return IRQ_HANDLED; } -- Christian Eggers Embedded software developer Arnold & Richter Cine Technik GmbH & Co. Betriebs KG Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918 Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477 Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95BD3C4363C for ; Wed, 7 Oct 2020 08:49:16 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 147CD21D7A for ; Wed, 7 Oct 2020 08:49:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="2xv4WawJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 147CD21D7A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arri.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=eZ9WLCMOay2+kOann9FVJhm4dMLKng2qTq5FjNF05t4=; b=2xv4WawJMNLtVjGfaGMzm5jhR weOzb21vhx5pU8pAFd2LiJgydJK09jshth7ABOt9b3L2KCO/bMf6ko1UDKc1uIVsT6or7qRhqhh1c Ch81Ntt+u9V9eQlo+Y66jHiDPzFxrng3sH9e/KVKeVIoL/D7Yc7mcn8Lyn2b7xM7okxvE1JA6LCbo ZxCkg6Y8beKfn9EZH1VGH1a7VD/4amZMd5qmK4a0ziJGHewFiaD7nXfR6AuaxFg7VNyysMWCF2t2n snQlecwkfZ/5avLl7a041cN3UiJFFJ6/e6lWsDyLF/OSLZeBZvzYbdrAh8MaGiiXn4BBM9UGKFwfW T856+CVNQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQ573-0007Wo-0v; Wed, 07 Oct 2020 08:47:53 +0000 Received: from mailout07.rmx.de ([94.199.90.95]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQ56z-0007Vs-Nw for linux-arm-kernel@lists.infradead.org; Wed, 07 Oct 2020 08:47:50 +0000 Received: from kdin02.retarus.com (kdin02.dmz1.retloc [172.19.17.49]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mailout07.rmx.de (Postfix) with ESMTPS id 4C5nz56dJWzBvZd; Wed, 7 Oct 2020 10:47:45 +0200 (CEST) Received: from mta.arri.de (unknown [217.111.95.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by kdin02.retarus.com (Postfix) with ESMTPS id 4C5nxy6PCwz2TTLm; Wed, 7 Oct 2020 10:46:46 +0200 (CEST) Received: from N95HX1G2.wgnetz.xx (192.168.54.119) by mta.arri.de (192.168.100.104) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 7 Oct 2020 10:46:21 +0200 From: Christian Eggers To: Oleksij Rempel , Shawn Guo , Sascha Hauer , Fabio Estevam , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , "David Laight" Subject: [PATCH v5 1/3] i2c: imx: Fix reset of I2SR_IAL flag Date: Wed, 7 Oct 2020 10:45:22 +0200 Message-ID: <20201007084524.10835-2-ceggers@arri.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201007084524.10835-1-ceggers@arri.de> References: <20201007084524.10835-1-ceggers@arri.de> MIME-Version: 1.0 X-Originating-IP: [192.168.54.119] X-RMX-ID: 20201007-104650-4C5nxy6PCwz2TTLm-0@kdin02 X-RMX-SOURCE: 217.111.95.66 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201007_044750_060803_C6C6A770 X-CRM114-Status: GOOD ( 17.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-kernel@vger.kernel.org, Krzysztof Kozlowski , NXP Linux Team , Pengutronix Kernel Team , stable@vger.kernel.org, Christian Eggers , linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWNjb3JkaW5nIHRvIHRoZSAiVkZ4eHggQ29udHJvbGxlciBSZWZlcmVuY2UgTWFudWFsIiAoYW5k IHRoZSBjb21tZW50CmJsb2NrIHN0YXJ0aW5nIGF0IGxpbmUgOTcpLCBWeWJyaWQgcmVxdWlyZXMg d3JpdGluZyBhIG9uZSBmb3IgY2xlYXJpbmcKYW4gaW50ZXJydXB0IGZsYWcuIFN5bmNpbmcgdGhl IG1ldGhvZCBmb3IgY2xlYXJpbmcgSTJTUl9JSUYgaW4KaTJjX2lteF9pc3IoKS4KClNpZ25lZC1v ZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAYXJyaS5kZT4KRml4ZXM6IDRiNzc1MDIy ZjZmZCAoImkyYzogaW14OiBhZGQgc3RydWN0IHRvIGhvbGQgbW9yZSBjb25maWd1cmFibGUgcXVp cmtzIikKUmV2aWV3ZWQtYnk6IFV3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVu Z3V0cm9uaXguZGU+CkNjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCi0tLQogZHJpdmVycy9pMmMv YnVzc2VzL2kyYy1pbXguYyB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2kyYy9idXNzZXMvaTJjLWlteC5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXguYwppbmRl eCAwYWI1MzgxYWEwMTIuLmNiZGNhYjczYTA1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVz c2VzL2kyYy1pbXguYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlteC5jCkBAIC00MTIs NiArNDEyLDE5IEBAIHN0YXRpYyB2b2lkIGkyY19pbXhfZG1hX2ZyZWUoc3RydWN0IGlteF9pMmNf c3RydWN0ICppMmNfaW14KQogCWRtYS0+Y2hhbl91c2luZyA9IE5VTEw7CiB9CiAKK3N0YXRpYyB2 b2lkIGkyY19pbXhfY2xlYXJfaXJxKHN0cnVjdCBpbXhfaTJjX3N0cnVjdCAqaTJjX2lteCwgdW5z aWduZWQgaW50IGJpdHMpCit7CisJdW5zaWduZWQgaW50IHRlbXA7CisKKwkvKgorCSAqIGkyc3Jf Y2xyX29wY29kZSBpcyB0aGUgdmFsdWUgdG8gY2xlYXIgYWxsIGludGVycnVwdHMuIEhlcmUgd2Ug d2FudCB0bworCSAqIGNsZWFyIG9ubHkgPGJpdHM+LCBzbyB3ZSB3cml0ZSB+aTJzcl9jbHJfb3Bj b2RlIHdpdGgganVzdCA8Yml0cz4KKwkgKiB0b2dnbGVkLiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1 c2UgaS5NWCBuZWVkcyBXMUMgYW5kIFZ5YnJpZCB1c2VzIFcwQy4KKwkgKi8KKwl0ZW1wID0gfmky Y19pbXgtPmh3ZGF0YS0+aTJzcl9jbHJfb3Bjb2RlIF4gYml0czsKKwlpbXhfaTJjX3dyaXRlX3Jl Zyh0ZW1wLCBpMmNfaW14LCBJTVhfSTJDX0kyU1IpOworfQorCiBzdGF0aWMgaW50IGkyY19pbXhf YnVzX2J1c3koc3RydWN0IGlteF9pMmNfc3RydWN0ICppMmNfaW14LCBpbnQgZm9yX2J1c3ksIGJv b2wgYXRvbWljKQogewogCXVuc2lnbmVkIGxvbmcgb3JpZ19qaWZmaWVzID0gamlmZmllczsKQEAg LTQyNCw4ICs0MzcsNyBAQCBzdGF0aWMgaW50IGkyY19pbXhfYnVzX2J1c3koc3RydWN0IGlteF9p MmNfc3RydWN0ICppMmNfaW14LCBpbnQgZm9yX2J1c3ksIGJvb2wgYQogCiAJCS8qIGNoZWNrIGZv ciBhcmJpdHJhdGlvbiBsb3N0ICovCiAJCWlmICh0ZW1wICYgSTJTUl9JQUwpIHsKLQkJCXRlbXAg Jj0gfkkyU1JfSUFMOwotCQkJaW14X2kyY193cml0ZV9yZWcodGVtcCwgaTJjX2lteCwgSU1YX0ky Q19JMlNSKTsKKwkJCWkyY19pbXhfY2xlYXJfaXJxKGkyY19pbXgsIEkyU1JfSUFMKTsKIAkJCXJl dHVybiAtRUFHQUlOOwogCQl9CiAKQEAgLTYyMyw5ICs2MzUsNyBAQCBzdGF0aWMgaXJxcmV0dXJu X3QgaTJjX2lteF9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogCWlmICh0ZW1wICYgSTJTUl9J SUYpIHsKIAkJLyogc2F2ZSBzdGF0dXMgcmVnaXN0ZXIgKi8KIAkJaTJjX2lteC0+aTJjc3IgPSB0 ZW1wOwotCQl0ZW1wICY9IH5JMlNSX0lJRjsKLQkJdGVtcCB8PSAoaTJjX2lteC0+aHdkYXRhLT5p MnNyX2Nscl9vcGNvZGUgJiBJMlNSX0lJRik7Ci0JCWlteF9pMmNfd3JpdGVfcmVnKHRlbXAsIGky Y19pbXgsIElNWF9JMkNfSTJTUik7CisJCWkyY19pbXhfY2xlYXJfaXJxKGkyY19pbXgsIEkyU1Jf SUlGKTsKIAkJd2FrZV91cCgmaTJjX2lteC0+cXVldWUpOwogCQlyZXR1cm4gSVJRX0hBTkRMRUQ7 CiAJfQotLSAKQ2hyaXN0aWFuIEVnZ2VycwpFbWJlZGRlZCBzb2Z0d2FyZSBkZXZlbG9wZXIKCkFy bm9sZCAmIFJpY2h0ZXIgQ2luZSBUZWNobmlrIEdtYkggJiBDby4gQmV0cmllYnMgS0cKU2l0ejog TXVlbmNoZW4gLSBSZWdpc3RlcmdlcmljaHQ6IEFtdHNnZXJpY2h0IE11ZW5jaGVuIC0gSGFuZGVs c3JlZ2lzdGVybnVtbWVyOiBIUkEgNTc5MTgKUGVyc29lbmxpY2ggaGFmdGVuZGVyIEdlc2VsbHNj aGFmdGVyOiBBcm5vbGQgJiBSaWNodGVyIENpbmUgVGVjaG5payBHbWJIClNpdHo6IE11ZW5jaGVu IC0gUmVnaXN0ZXJnZXJpY2h0OiBBbXRzZ2VyaWNodCBNdWVuY2hlbiAtIEhhbmRlbHNyZWdpc3Rl cm51bW1lcjogSFJCIDU0NDc3Ckdlc2NoYWVmdHNmdWVocmVyOiBEci4gTWljaGFlbCBOZXVoYWV1 c2VyOyBTdGVwaGFuIFNjaGVuazsgV2FsdGVyIFRyYXVuaW5nZXI7IE1hcmt1cyBaZWlsZXIKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==