{"id":2227894,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2227894/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260424-i2c-imx-fixes-v2-1-34fb9504aaeb@ideasonboard.com/","project":{"id":35,"url":"http://patchwork.ozlabs.org/api/1.1/projects/35/?format=json","name":"Linux I2C development","link_name":"linux-i2c","list_id":"linux-i2c.vger.kernel.org","list_email":"linux-i2c@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260424-i2c-imx-fixes-v2-1-34fb9504aaeb@ideasonboard.com>","date":"2026-04-24T12:36:46","name":"[v2,1/2] i2c: imx: Don't recover bus when arbitration lost","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"7150392c80a1881e5955512529dbad61ccf96d29","submitter":{"id":84970,"url":"http://patchwork.ozlabs.org/api/1.1/people/84970/?format=json","name":"Daniel Scally","email":"dan.scally@ideasonboard.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260424-i2c-imx-fixes-v2-1-34fb9504aaeb@ideasonboard.com/mbox/","series":[{"id":501358,"url":"http://patchwork.ozlabs.org/api/1.1/series/501358/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-i2c/list/?series=501358","date":"2026-04-24T12:36:45","name":"Minor changes for i2c-imx driver","version":2,"mbox":"http://patchwork.ozlabs.org/series/501358/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227894/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227894/checks/","tags":{},"headers":{"Return-Path":"\n <linux-i2c+bounces-17165-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-i2c@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n header.a=rsa-sha256 header.s=mail header.b=u9QLlTeA;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-i2c+bounces-17165-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com\n header.b=\"u9QLlTeA\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=213.167.242.64","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=ideasonboard.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=ideasonboard.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g2CCc0RSWz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 22:37:32 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id DBEDD3027B7B\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 12:37:17 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A61D53CF029;\n\tFri, 24 Apr 2026 12:37:17 +0000 (UTC)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n [213.167.242.64])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 9EE5D3CF04C\n\tfor <linux-i2c@vger.kernel.org>; Fri, 24 Apr 2026 12:37:10 +0000 (UTC)","from [127.0.1.1]\n (chfd-03-b2-v4wan-176392-cust229.vm15.cable.virginm.net [82.19.20.230])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DFD011587;\n\tFri, 24 Apr 2026 14:35:22 +0200 (CEST)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777034235; cv=none;\n b=uOX1BuuJO2INhlkkCB2hl4g3lH1UV5DvAYuMXGSiXMTgn9kqoyCr5aNDOiHf1DrXrtuMJZxgrxF1uj45ZDCjo8NjtxV0snsfaZo0hMJzCAvU9JgstJUBebUNEMxjdDbTy3eKKvDEJeOd/ehxqn5Um7xnpxZ/5odJ9qopSE/xkQU=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777034235; c=relaxed/simple;\n\tbh=KCGG71CLMmIar38TlRIMxcvDFT1J+bF5d3VJ7VIIF/M=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=e6mksaFBxhh8NBOOoDao4JnkvcAdP1sRrjlQXcUcHS7FDQadnTLrQJasekaMPHPKrslCwVn/iztlSg2Lvf/r6FVSh2AS4ftmpALGMVU/0/Kdo5MKzfXQOuwCmBHtw2NDhSQ+BBWrr1QkCqKjw+13I9j6pcevucio/4LvTHgJJ94=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=ideasonboard.com;\n spf=pass smtp.mailfrom=ideasonboard.com;\n dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com\n header.b=u9QLlTeA; arc=none smtp.client-ip=213.167.242.64","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1777034123;\n\tbh=KCGG71CLMmIar38TlRIMxcvDFT1J+bF5d3VJ7VIIF/M=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:From;\n\tb=u9QLlTeAsr304Azcw0zhce0pd1eMp2YDRNAKvOtE1qIXi3LowyIBDtjbd16y/QKEa\n\t U9147w9LgLqldq5+CCl3jUUbOjxyZESxHABgvhvWgoE8gnJ2elF2iz6bRKmbWyfvSK\n\t pRbCdStDVffxC3zL7LAbriEjKoSCMmfDP8O25fJU=","From":"Daniel Scally <dan.scally@ideasonboard.com>","Date":"Fri, 24 Apr 2026 13:36:46 +0100","Subject":"[PATCH v2 1/2] i2c: imx: Don't recover bus when arbitration lost","Precedence":"bulk","X-Mailing-List":"linux-i2c@vger.kernel.org","List-Id":"<linux-i2c.vger.kernel.org>","List-Subscribe":"<mailto:linux-i2c+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-i2c+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260424-i2c-imx-fixes-v2-1-34fb9504aaeb@ideasonboard.com>","References":"<20260424-i2c-imx-fixes-v2-0-34fb9504aaeb@ideasonboard.com>","In-Reply-To":"<20260424-i2c-imx-fixes-v2-0-34fb9504aaeb@ideasonboard.com>","To":"Oleksij Rempel <o.rempel@pengutronix.de>,\n Pengutronix Kernel Team <kernel@pengutronix.de>,\n Andi Shyti <andi.shyti@kernel.org>, Frank Li <Frank.Li@nxp.com>,\n Sascha Hauer <s.hauer@pengutronix.de>, Fabio Estevam <festevam@gmail.com>,\n Gao Pan <b54642@freescale.com>, Fugang Duan <B38611@freescale.com>,\n Wolfram Sang <wsa@kernel.org>","Cc":"linux-i2c@vger.kernel.org, imx@lists.linux.dev,\n linux-arm-kernel@lists.infradead.org,\n Daniel Scally <dan.scally@ideasonboard.com>","X-Mailer":"b4 0.14.2","X-Developer-Signature":"v=1; a=openpgp-sha256; l=1232;\n i=dan.scally@ideasonboard.com; h=from:subject:message-id;\n bh=KCGG71CLMmIar38TlRIMxcvDFT1J+bF5d3VJ7VIIF/M=;\n b=owEBbQKS/ZANAwAKAchJV3psRXUyAcsmYgBp62Ptb30gbhkbdoXbzk2HNvn0SEvk/pxYvLAND\n 95dcAXyvheJAjMEAAEKAB0WIQQqyuwyDnZdb+mxmm/ISVd6bEV1MgUCaetj7QAKCRDISVd6bEV1\n Mj3sEACOkCQ5mSB3coiFik4V/scY0kA8h52z/HTzH+Hh1Z+13bP1bQP83zICkqJruB/1wxPMXLz\n Eq3IaKgKpZC6VLqCQ2B4sBxMEqrUKemKLECfBSUbG8mc+N1TSpxXH7zfbLRrq7wkiYkFXQH9Yzt\n brKW6vivGQM4TT/Y9RMfMPTQRXjzKWD+14Ui2U3YlYAIar11VcHXld3GabfwdVCVNuYuycnhaQZ\n 6v9FydgdwfW2MQ2SRk/u9WyG41Wclcs+HCm7hhSRiEFtfWo5NkB7AEeUfzpu7oeecgyK4CDtPKs\n KwUUsRpEeK5wAu+esFU8LyvgcTwStlDo32Cl7R89J+/lwhu8iNL+PldsAXWjauuz746OQh/fCc+\n AklCMNW2U9z+zOpzCTuMY/hokhGK7fSqKtAmCIC2vvsk1+1hR73ukewDNEdNch34jRZC5n33+Gk\n 7LoRnVJ1RA3wsfmBCDJQDLcNw7usv/czIi76EKzUh4j/cp9CpahSw8ZNhjItgV8gijHIo4oIo5K\n N9os9xwEPYH4tdDQsYIIP+otzXGPkof1YE79Sw6Rh6lU1b/qwQYSFC3j3wsIzZZTQvs5B5DYXo5\n sCwEGf13enwFeMpt6F7rI46Y+U0II99O2Xpku4nah4bOLDWGBd1m/sYpzlgq4G0nEoIH1P0paRB\n Gp4U93JR+SR/Qjg==","X-Developer-Key":"i=dan.scally@ideasonboard.com; a=openpgp;\n fpr=EEC699ACA1B7CB5D31330C0BBD501C2A3546CCF6"},"content":"In i2c_imx_xfer_common(), the driver attempts bus recovery whenever\ni2c_imx_start() fails. One of the failure modes for i2c_imx_start()\nis an arbitration-lost signal which results when a second I2C master\non the bus tries to control the bus simultaneously, which is a normal\nand expected behaviour.\n\nBus recovery is not the right response for this case. Add a check for\nthe -EAGAIN return code to avoid running the bus recovery.\n\nFixes: 1c4b6c3bcf30d (\"i2c: imx: implement bus recovery\")\nSigned-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n---\n drivers/i2c/busses/i2c-imx.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)","diff":"diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c\nindex a208fefd3c3b35672a00eda8448f24859aaa793a..b68a0f7105682006bbcfee52891c9a9c2d8c009e 100644\n--- a/drivers/i2c/busses/i2c-imx.c\n+++ b/drivers/i2c/busses/i2c-imx.c\n@@ -1552,7 +1552,7 @@ static int i2c_imx_xfer_common(struct i2c_adapter *adapter,\n \n \t/* Start I2C transfer */\n \tresult = i2c_imx_start(i2c_imx, atomic);\n-\tif (result) {\n+\tif (result && result != -EAGAIN) {\n \t\t/*\n \t\t * Bus recovery uses gpiod_get_value_cansleep() which is not\n \t\t * allowed within atomic context.\n","prefixes":["v2","1/2"]}