1 From patchwork Sun May 11 13:31:06 2025
2 Content-Type: text/plain; charset="utf-8"
4 Content-Transfer-Encoding: 7bit
5 X-Patchwork-Submitter: Gabor Juhos <j4g8y7@gmail.com>
6 X-Patchwork-Id: 14084056
8 <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
9 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
10 aws-us-west-2-korg-lkml-1.web.codeaurora.org
11 Received: from bombadil.infradead.org (bombadil.infradead.org
13 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
14 (No client certificate requested)
15 by smtp.lore.kernel.org (Postfix) with ESMTPS id 72E7DC3ABC3
16 for <linux-arm-kernel@archiver.kernel.org>;
17 Sun, 11 May 2025 13:37:50 +0000 (UTC)
18 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
19 d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help
20 :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References
21 :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:
22 From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:
23 Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;
24 bh=BySnXAIGhp18eRP0sg1mjpdXdHwBsus0rtjMi26U9uM=; b=ba0yGs/0cSs2cep9T3wjo3iDxy
25 VSaQu2j7YGuiAMJt8ERY5OVL7YiPC/6+MqGcLqkrGunZq/TEjXRGX9ztKqyko6KY9fLbiH1wXYBjK
26 /9yxbEyt9bPrIw/r64uaUOdRzZMF0i2oBn53RgZJJFaD4ou1E28BMc22AuVGshj99Dlz63ncr/Lz7
27 M3/ptMOWGRp0SrImYRUdvnWj+LKyb4zqRFEYIQuq9WzyhhNuDZDaHFpdJn4go/eoS4kUvTFfixpwV
28 FevQupqdOn62R3ull5YYdI6BFQVL6dISjD34mjoNXJABSjuXmq8FRWuX/V3rPrvnVIflxOmzSrKrF
30 Received: from localhost ([::1] helo=bombadil.infradead.org)
31 by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))
32 id 1uE6sA-00000007GuC-0j29;
33 Sun, 11 May 2025 13:37:42 +0000
34 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636])
35 by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))
36 id 1uE6mF-00000007GPb-1uOE
37 for linux-arm-kernel@lists.infradead.org;
38 Sun, 11 May 2025 13:31:36 +0000
39 Received: by mail-ej1-x636.google.com with SMTP id
40 a640c23a62f3a-acae7e7587dso539429266b.2
41 for <linux-arm-kernel@lists.infradead.org>;
42 Sun, 11 May 2025 06:31:35 -0700 (PDT)
43 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
44 d=gmail.com; s=20230601; t=1746970294; x=1747575094;
45 darn=lists.infradead.org;
46 h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
47 :mime-version:subject:date:from:from:to:cc:subject:date:message-id
49 bh=BySnXAIGhp18eRP0sg1mjpdXdHwBsus0rtjMi26U9uM=;
50 b=QtIYufKg61b066knR9OpyawErNmkYyoP/2lIkHhyGY7qtGXkc1jJmC0TpPyhp0WGlm
51 xWP3K/PG23VcjEuGj/880thPietuKQuTF029WPfm+yrQ3uHLMzkHqyOiMYyiBR9N0Zjw
52 NICgywX4iqVHVBnXZTiBA7sRSjQqteatDPTGbKgZxpIHpg4ZJtfXZcCE8RiKVVgZCWsq
53 JgTJuTO/4J0cq5TWVOIGLrt0XOslaMmuISPbUDdArr5yKfGZqu51i747A0o0RBdEuH9Y
54 UPI8/GExcWWa+62KCVEwB9OmCZR81ieb8To/XdZO8hIQAlExOzKa3OOPCkS0PF0M9BBa
56 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
57 d=1e100.net; s=20230601; t=1746970294; x=1747575094;
58 h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
59 :mime-version:subject:date:from:x-gm-message-state:from:to:cc
60 :subject:date:message-id:reply-to;
61 bh=BySnXAIGhp18eRP0sg1mjpdXdHwBsus0rtjMi26U9uM=;
62 b=A+LfIVmyzogyr2akFoGR3PIbjd8E/TVXGlur91KBF7h2W8msMTeMyv0PDVjqEBxWFI
63 cqNLira3TWf9soXrRBGaJVB111/r5woARoN4aO5otCDrh3o5U2gJ5/eZLGbcX49TqJG5
64 rbI1Eq0GGXFdidQ4T5CMLtooa6B5pg7j+o2gcyG/vQlHr6MbG4/2sIDPX0JbL08xibWC
65 5LqP933W+yopGIbnp3YZ9pybbvOUA9x4cYkUm1Of3idmkTN0xUh8kmUWz7FJCH4R/PAN
66 5CA/vn8q1myUvXisU0oAbC9y/WrlExPfvguXjru1LTx9AdPaC9+D3Qxmh2Raz9b4NrKl
68 X-Forwarded-Encrypted: i=1;
69 AJvYcCWMm/Er5t6Xp05DMDNak7mbsqx8YZmOrqz9Y39eovLKPkbqcMhQwOzxqxCY8ZfQtETNpZ8X9NptEow+bBHo+z3t@lists.infradead.org
70 X-Gm-Message-State: AOJu0YwBTrjBcryZjqJBq66bcSYfV2AWsDAqAfMinxG8gRUJjpKq8RXn
71 kKSKTp2XvMObVTWx7cEMM5BBPWl7LfLwBkjVIusbgScQ8qW8YA9H
72 X-Gm-Gg: ASbGnctKtEUhBLJdOfPb7cKwM8a1ZTe5+8zPX9TaLdomZybHHeteF9o/ZyUNbunUsSK
73 fuMy3pPFmYcC4TZtPqfZPdpagbDpOb2R/9xbSTMd1TKDDj4vFnkTIzQHA9E1ZxX44Nw6JkxA0up
74 S94PBow9mEb3tkHLN9hbNe7W8ksyf7RZ25IGC4FYj/wEGQsMy2VidJsfG4bIeImZ8zj8ufUCNby
75 7jIjmP1taNt5U8omPEWhFuRdJfiPqIXx85tIsGVFwG7VSr/JW8LwxBCJLGhWLUZhxYqV4cEfSRC
76 zYKj2qkuRfx5AxzN+JGtfcxYPijsy/rI51OnjOv2CQRPuE6rESamNJiR7pmnDgvHSRm5nps5chp
79 AGHT+IG8Y/7VNg8lhY275mIfLbq8EaG9jCRvvK1wX7rlbuoMvEUYYC3k7sZOxh3RPmKhAB94Kfvlwg==
80 X-Received: by 2002:a17:907:7b04:b0:ad1:fab8:88ab with SMTP id
81 a640c23a62f3a-ad219085c07mr897192766b.29.1746970293535;
82 Sun, 11 May 2025 06:31:33 -0700 (PDT)
83 Received: from [192.168.0.253] (5D59A51C.catv.pool.telekom.hu. [93.89.165.28])
84 by smtp.googlemail.com with ESMTPSA id
85 a640c23a62f3a-ad2197bd398sm466765366b.152.2025.05.11.06.31.32
86 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
87 Sun, 11 May 2025 06:31:33 -0700 (PDT)
88 From: Gabor Juhos <j4g8y7@gmail.com>
89 Date: Sun, 11 May 2025 15:31:06 +0200
90 Subject: [PATCH 2/3] i2c: pxa: prevent calling of the generic recovery init
94 <20250511-i2c-pxa-fix-i2c-communication-v1-2-e9097d09a015@gmail.com>
96 <20250511-i2c-pxa-fix-i2c-communication-v1-0-e9097d09a015@gmail.com>
98 <20250511-i2c-pxa-fix-i2c-communication-v1-0-e9097d09a015@gmail.com>
99 To: Wolfram Sang <wsa@kernel.org>, Andi Shyti <andi.shyti@kernel.org>,
100 Russell King <rmk+kernel@armlinux.org.uk>, Andrew Lunn <andrew@lunn.ch>
101 Cc: Robert Marko <robert.marko@sartura.hr>,
102 Linus Walleij <linus.walleij@linaro.org>,
103 Russell King <rmk+kernel@armlinux.org.uk>, linux-i2c@vger.kernel.org,
104 linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org,
105 Gabor Juhos <j4g8y7@gmail.com>, Imre Kaloz <kaloz@openwrt.org>,
106 stable@vger.kernel.org
108 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
109 X-CRM114-CacheID: sfid-20250511_063135_499888_294068DC
110 X-CRM114-Status: GOOD ( 21.30 )
111 X-BeenThere: linux-arm-kernel@lists.infradead.org
112 X-Mailman-Version: 2.1.34
114 List-Id: <linux-arm-kernel.lists.infradead.org>
116 <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
117 <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
118 List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
119 List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
120 List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
122 <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
123 <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
124 Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
126 linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
128 The I2C communication is completely broken on the Armada 3700 platform
129 since commit 0b01392c18b9 ("i2c: pxa: move to generic GPIO recovery").
131 For example, on the Methode uDPU board, probing of the two onboard
132 temperature sensors fails ...
134 [ 7.271713] i2c i2c-0: using pinctrl states for GPIO recovery
135 [ 7.277503] i2c i2c-0: PXA I2C adapter
136 [ 7.282199] i2c i2c-1: using pinctrl states for GPIO recovery
137 [ 7.288241] i2c i2c-1: PXA I2C adapter
138 [ 7.292947] sfp sfp-eth1: Host maximum power 3.0W
139 [ 7.299614] sfp sfp-eth0: Host maximum power 3.0W
140 [ 7.308178] lm75 1-0048: supply vs not found, using dummy regulator
141 [ 32.489631] lm75 1-0048: probe with driver lm75 failed with error -121
142 [ 32.496833] lm75 1-0049: supply vs not found, using dummy regulator
143 [ 82.890614] lm75 1-0049: probe with driver lm75 failed with error -121
145 ... and accessing the plugged-in SFP modules also does not work:
147 [ 511.298537] sfp sfp-eth1: please wait, module slow to respond
148 [ 536.488530] sfp sfp-eth0: please wait, module slow to respond
150 [ 1065.688536] sfp sfp-eth1: failed to read EEPROM: -EREMOTEIO
151 [ 1090.888532] sfp sfp-eth0: failed to read EEPROM: -EREMOTEIO
153 After a discussion [1], there was an attempt to fix the problem by
154 reverting the offending change by commit 7b211c767121 ("Revert "i2c:
155 pxa: move to generic GPIO recovery""), but that only helped to fix
156 the issue in the 6.1.y stable tree. The reason behind the partial succes
157 is that there was another change in commit 20cb3fce4d60 ("i2c: Set i2c
158 pinctrl recovery info from it's device pinctrl") in the 6.3-rc1 cycle
159 which broke things further.
161 The cause of the problem is the same in case of both offending commits
162 mentioned above. Namely, the I2C core code changes the pinctrl state to
163 GPIO while running the recovery initialization code. Although the PXA
164 specific initialization also does this, but the key difference is that
165 it happens before the conrtoller is getting enabled in i2c_pxa_reset(),
166 whereas in the case of the generic initialization it happens after that.
168 To resolve the problem, provide an empty init_recovery() callback
169 function thus preventing the I2C core to call the generic recovery
172 As the result this change restores the original behaviour, which in
173 turn makes the I2C communication to work again as it can be seen from
176 [ 7.305277] i2c i2c-0: PXA I2C adapter
177 [ 7.310198] i2c i2c-1: PXA I2C adapter
178 [ 7.315012] sfp sfp-eth1: Host maximum power 3.0W
179 [ 7.324061] lm75 1-0048: supply vs not found, using dummy regulator
180 [ 7.331738] sfp sfp-eth0: Host maximum power 3.0W
181 [ 7.337000] hwmon hwmon0: temp1_input not attached to any thermal zone
182 [ 7.343593] lm75 1-0048: hwmon0: sensor 'tmp75c'
183 [ 7.348526] lm75 1-0049: supply vs not found, using dummy regulator
184 [ 7.356858] hwmon hwmon1: temp1_input not attached to any thermal zone
185 [ 7.363463] lm75 1-0049: hwmon1: sensor 'tmp75c'
187 [ 7.730315] sfp sfp-eth1: module Mikrotik S-RJ01 rev 1.0 sn 61B103C55C58 dc 201022
188 [ 7.840318] sfp sfp-eth0: module MENTECHOPTO POS22-LDCC-KR rev 1.0 sn MNC208U90009 dc 200828
189 [ 7.850083] mvneta d0030000.ethernet eth0: unsupported SFP module: no common interface modes
190 [ 7.990335] hwmon hwmon2: temp1_input not attached to any thermal zone
192 [1] https://lore.kernel.org/r/20230926160255.330417-1-robert.marko@sartura.hr
194 Cc: stable@vger.kernel.org # 6.3+
195 Fixes: 20cb3fce4d60 ("i2c: Set i2c pinctrl recovery info from it's device pinctrl")
196 Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
197 Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
199 drivers/i2c/busses/i2c-pxa.c | 7 +++++++
200 1 file changed, 7 insertions(+)
202 --- a/drivers/i2c/busses/i2c-pxa.c
203 +++ b/drivers/i2c/busses/i2c-pxa.c
204 @@ -1331,6 +1331,12 @@ static void i2c_pxa_unprepare_recovery(s
208 +static int i2c_pxa_init_recovery_cb(struct i2c_adapter *adap)
210 + /* We have initialized everything already, so nothing to do here. */
214 static int i2c_pxa_init_recovery(struct pxa_i2c *i2c)
216 struct i2c_bus_recovery_info *bri = &i2c->recovery;
217 @@ -1399,6 +1405,7 @@ static int i2c_pxa_init_recovery(struct
221 + bri->init_recovery = i2c_pxa_init_recovery_cb;
222 bri->prepare_recovery = i2c_pxa_prepare_recovery;
223 bri->unprepare_recovery = i2c_pxa_unprepare_recovery;
224 bri->recover_bus = i2c_generic_scl_recovery;