linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
@ 2025-08-27 17:13 Gabor Juhos
  2025-08-27 17:13 ` [PATCH v3 1/2] i2c: pxa: defer reset on Armada 3700 when recovery is used Gabor Juhos
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Gabor Juhos @ 2025-08-27 17:13 UTC (permalink / raw)
  To: Wolfram Sang, Wolfram Sang, Andi Shyti, Andy Shevchenko,
	Russell King, Andrew Lunn, Hanna Hawa
  Cc: Robert Marko, Linus Walleij, Russell King, linux-i2c,
	linux-arm-kernel, linux-kernel, Gabor Juhos, stable, Imre Kaloz

There is a long standing bug which causes I2C communication not to
work on the Armada 3700 based boards. The first patch in the series
fixes that regression. The second patch improves recovery to make it
more robust which helps to avoid communication problems with certain
SFP modules.

Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
---
Changes in v3:
  - rebase on tip of i2c/for-current
  - remove Imre's tag from the cover letter, and replace his SoB tag to
    Reviewed-by in the individual patches
  - rework the second patch so it does not need changes in the I2C core code,
    and drop the first one as it is not needed now
  - Link to v2: https://lore.kernel.org/r/20250811-i2c-pxa-fix-i2c-communication-v2-0-ca42ea818dc9@gmail.com

Changes in v2:
  - collect offered tags
  - rebase and retest on tip of i2c/for-current
  - Link to v1: https://lore.kernel.org/r/20250511-i2c-pxa-fix-i2c-communication-v1-0-e9097d09a015@gmail.com

---
Gabor Juhos (2):
      i2c: pxa: defer reset on Armada 3700 when recovery is used
      i2c: pxa: handle 'Early Bus Busy' condition on Armada 3700

 drivers/i2c/busses/i2c-pxa.c | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)
---
base-commit: 3dd22078026c7cad4d4a3f32c5dc5452c7180de8
change-id: 20250510-i2c-pxa-fix-i2c-communication-3e6de1e3d0c6

Best regards,
-- 
Gabor Juhos <j4g8y7@gmail.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 1/2] i2c: pxa: defer reset on Armada 3700 when recovery is used
  2025-08-27 17:13 [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700 Gabor Juhos
@ 2025-08-27 17:13 ` Gabor Juhos
  2025-08-27 17:13 ` [PATCH v3 2/2] i2c: pxa: handle 'Early Bus Busy' condition on Armada 3700 Gabor Juhos
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Gabor Juhos @ 2025-08-27 17:13 UTC (permalink / raw)
  To: Wolfram Sang, Wolfram Sang, Andi Shyti, Andy Shevchenko,
	Russell King, Andrew Lunn, Hanna Hawa
  Cc: Robert Marko, Linus Walleij, Russell King, linux-i2c,
	linux-arm-kernel, linux-kernel, Gabor Juhos, stable

The I2C communication is completely broken on the Armada 3700 platform
since commit 0b01392c18b9 ("i2c: pxa: move to generic GPIO recovery").

For example, on the Methode uDPU board, probing of the two onboard
temperature sensors fails ...

  [    7.271713] i2c i2c-0: using pinctrl states for GPIO recovery
  [    7.277503] i2c i2c-0:  PXA I2C adapter
  [    7.282199] i2c i2c-1: using pinctrl states for GPIO recovery
  [    7.288241] i2c i2c-1:  PXA I2C adapter
  [    7.292947] sfp sfp-eth1: Host maximum power 3.0W
  [    7.299614] sfp sfp-eth0: Host maximum power 3.0W
  [    7.308178] lm75 1-0048: supply vs not found, using dummy regulator
  [   32.489631] lm75 1-0048: probe with driver lm75 failed with error -121
  [   32.496833] lm75 1-0049: supply vs not found, using dummy regulator
  [   82.890614] lm75 1-0049: probe with driver lm75 failed with error -121

... and accessing the plugged-in SFP modules also does not work:

  [  511.298537] sfp sfp-eth1: please wait, module slow to respond
  [  536.488530] sfp sfp-eth0: please wait, module slow to respond
  ...
  [ 1065.688536] sfp sfp-eth1: failed to read EEPROM: -EREMOTEIO
  [ 1090.888532] sfp sfp-eth0: failed to read EEPROM: -EREMOTEIO

After a discussion [1], there was an attempt to fix the problem by
reverting the offending change by commit 7b211c767121 ("Revert "i2c:
pxa: move to generic GPIO recovery""), but that only helped to fix
the issue in the 6.1.y stable tree. The reason behind the partial succes
is that there was another change in commit 20cb3fce4d60 ("i2c: Set i2c
pinctrl recovery info from it's device pinctrl") in the 6.3-rc1 cycle
which broke things further.

The cause of the problem is the same in case of both offending commits
mentioned above. Namely, the I2C core code changes the pinctrl state to
GPIO while running the recovery initialization code. Although the PXA
specific initialization also does this, but the key difference is that
it happens before the controller is getting enabled in i2c_pxa_reset(),
whereas in the case of the generic initialization it happens after that.

Change the code to reset the controller only before the first transfer
instead of before registering the controller. This ensures that the
controller is not enabled at the time when the generic recovery code
performs the pinctrl state changes, thus avoids the problem described
above.

As the result this change restores the original behaviour, which in
turn makes the I2C communication to work again as it can be seen from
the following log:

  [    7.363250] i2c i2c-0: using pinctrl states for GPIO recovery
  [    7.369041] i2c i2c-0:  PXA I2C adapter
  [    7.373673] i2c i2c-1: using pinctrl states for GPIO recovery
  [    7.379742] i2c i2c-1:  PXA I2C adapter
  [    7.384506] sfp sfp-eth1: Host maximum power 3.0W
  [    7.393013] sfp sfp-eth0: Host maximum power 3.0W
  [    7.399266] lm75 1-0048: supply vs not found, using dummy regulator
  [    7.407257] hwmon hwmon0: temp1_input not attached to any thermal zone
  [    7.413863] lm75 1-0048: hwmon0: sensor 'tmp75c'
  [    7.418746] lm75 1-0049: supply vs not found, using dummy regulator
  [    7.426371] hwmon hwmon1: temp1_input not attached to any thermal zone
  [    7.432972] lm75 1-0049: hwmon1: sensor 'tmp75c'
  [    7.755092] sfp sfp-eth1: module MENTECHOPTO      POS22-LDCC-KR    rev 1.0  sn MNC208U90009     dc 200828
  [    7.764997] mvneta d0040000.ethernet eth1: unsupported SFP module: no common interface modes
  [    7.785362] sfp sfp-eth0: module Mikrotik         S-RJ01           rev 1.0  sn 61B103C55C58     dc 201022
  [    7.803426] hwmon hwmon2: temp1_input not attached to any thermal zone

Link: https://lore.kernel.org/r/20230926160255.330417-1-robert.marko@sartura.hr #1

Cc: stable@vger.kernel.org # 6.3+
Fixes: 20cb3fce4d60 ("i2c: Set i2c pinctrl recovery info from it's device pinctrl")
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
---
Changes in v3:
  - rebase on tip of i2c/for-current
  - rework the patch and use a different approach which does not requires
    modification in the I2C core code and update commit description
    acccordingly
  - remove Imre's SoB tag, it should have been a Reviewed-by tag, but due
    to the rework this is an entirely different patch so that does not
    apply anyway
  - use Link tag for the URL of the referenced LKML thread
  - Link to v2: https://lore.kernel.org/r/20250811-i2c-pxa-fix-i2c-communication-v2-2-ca42ea818dc9@gmail.com

Changes in v2:
  - rebase and retest on tip of i2c/for-current
  - Link to v1: https://lore.kernel.org/r/20250511-i2c-pxa-fix-i2c-communication-v1-2-e9097d09a015@gmail.com
---
 drivers/i2c/busses/i2c-pxa.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 968a8b8794dac3398a68d827c567aa5bb73ae3d7..70acf33e1d573231f84a1f09cffb376a8277351d 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -268,6 +268,7 @@ struct pxa_i2c {
 	struct pinctrl		*pinctrl;
 	struct pinctrl_state	*pinctrl_default;
 	struct pinctrl_state	*pinctrl_recovery;
+	bool			reset_before_xfer;
 };
 
 #define _IBMR(i2c)	((i2c)->reg_ibmr)
@@ -1144,6 +1145,11 @@ static int i2c_pxa_xfer(struct i2c_adapter *adap,
 {
 	struct pxa_i2c *i2c = adap->algo_data;
 
+	if (i2c->reset_before_xfer) {
+		i2c_pxa_reset(i2c);
+		i2c->reset_before_xfer = false;
+	}
+
 	return i2c_pxa_internal_xfer(i2c, msgs, num, i2c_pxa_do_xfer);
 }
 
@@ -1521,7 +1527,16 @@ static int i2c_pxa_probe(struct platform_device *dev)
 		}
 	}
 
-	i2c_pxa_reset(i2c);
+	/*
+	 * Skip reset on Armada 3700 when recovery is used to avoid
+	 * controller hang due to the pinctrl state changes done by
+	 * the generic recovery initialization code. The reset will
+	 * be performed later, prior to the first transfer.
+	 */
+	if (i2c_type == REGS_A3700 && i2c->adap.bus_recovery_info)
+		i2c->reset_before_xfer = true;
+	else
+		i2c_pxa_reset(i2c);
 
 	ret = i2c_add_numbered_adapter(&i2c->adap);
 	if (ret < 0)

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 2/2] i2c: pxa: handle 'Early Bus Busy' condition on Armada 3700
  2025-08-27 17:13 [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700 Gabor Juhos
  2025-08-27 17:13 ` [PATCH v3 1/2] i2c: pxa: defer reset on Armada 3700 when recovery is used Gabor Juhos
@ 2025-08-27 17:13 ` Gabor Juhos
  2025-09-01  9:20 ` [PATCH v3 0/2] i2c: pxa: fix I2C communication " Andy Shevchenko
  2025-09-01  9:23 ` Andy Shevchenko
  3 siblings, 0 replies; 9+ messages in thread
From: Gabor Juhos @ 2025-08-27 17:13 UTC (permalink / raw)
  To: Wolfram Sang, Wolfram Sang, Andi Shyti, Andy Shevchenko,
	Russell King, Andrew Lunn, Hanna Hawa
  Cc: Robert Marko, Linus Walleij, Russell King, linux-i2c,
	linux-arm-kernel, linux-kernel, Gabor Juhos, stable, Imre Kaloz

Under some circumstances I2C recovery fails on Armada 3700. At least
on the Methode uDPU board, removing and replugging an SFP module fails
often, like this:

  [   36.953127] sfp sfp-eth1: module removed
  [   38.468549] i2c i2c-1: i2c_pxa: timeout waiting for bus free
  [   38.486960] sfp sfp-eth1: module MENTECHOPTO      POS22-LDCC-KR    rev 1.0  sn MNC208U90009     dc 200828
  [   38.496867] mvneta d0040000.ethernet eth1: unsupported SFP module: no common interface modes
  [   38.521448] hwmon hwmon2: temp1_input not attached to any thermal zone
  [   39.249196] sfp sfp-eth1: module removed
  ...
  [  292.568799] sfp sfp-eth1: please wait, module slow to respond
  ...
  [  625.208814] sfp sfp-eth1: failed to read EEPROM: -EREMOTEIO

Note that the 'unsupported SFP module' messages are not relevant. The
module is used only for testing the I2C recovery funcionality, because
the error can be triggered easily with this specific one.

Enabling debug in the i2c-pxa driver reveals the following:

  [   82.034678] sfp sfp-eth1: module removed
  [   90.008654] i2c i2c-1: slave_0x50 error: timeout with active message
  [   90.015112] i2c i2c-1: msg_num: 2 msg_idx: 0 msg_ptr: 0
  [   90.020464] i2c i2c-1: IBMR: 00000003 IDBR: 000000a0 ICR: 000007e0 ISR: 00000802
  [   90.027906] i2c i2c-1: log:
  [   90.030787]

This continues until the retries are exhausted ...

  [  110.192489] i2c i2c-1: slave_0x50 error: exhausted retries
  [  110.198012] i2c i2c-1: msg_num: 2 msg_idx: 0 msg_ptr: 0
  [  110.203323] i2c i2c-1: IBMR: 00000003 IDBR: 000000a0 ICR: 000007e0 ISR: 00000802
  [  110.210810] i2c i2c-1: log:
  [  110.213633]

... then the whole sequence starts again ...

  [  115.368641] i2c i2c-1: slave_0x50 error: timeout with active message

... while finally the SFP core gives up:

  [  671.975258] sfp sfp-eth1: failed to read EEPROM: -EREMOTEIO

When we analyze the log, it can be seen that bit 1 and 11 is set in the
ISR (Interface Status Register). Bit 1 indicates the ACK/NACK status, but
the purpose of bit 11 is not documented in the driver code unfortunately.

The 'Functional Specification' document of the Armada 3700 SoCs family
however says that this bit indicates an 'Early Bus Busy' condition. The
document also notes that whenever this bit is set, it is not possible to
initiate a transaction on the I2C bus. The observed behaviour corresponds
to this statement.

Unfortunately, I2C recovery does not help as it never runs in this
special case. Although the driver checks the busyness of the bus at
several places, but since it does not consider the A3700 specific bit
in these checks it can't determine the actual status of the bus correctly
which results in the errors above.

In order to fix the problem, add a new member to struct 'i2c_pxa' to
store a controller specific bitmask containing the bits indicating the
busy status, and use that in the code while checking the actual status
of the bus. This ensures that the correct status can be determined on
the Armada 3700 based devices without causing functional changes on
devices based on other SoCs.

With the change applied, the driver detects the busy condition, and runs
the recovery process:

  [  742.617312] i2c i2c-1: state:i2c_pxa_wait_bus_not_busy:449: ISR=00000802, ICR=000007e0, IBMR=03
  [  742.626099] i2c i2c-1: i2c_pxa: timeout waiting for bus free
  [  742.631933] i2c i2c-1: recovery: resetting controller, ISR=0x00000802
  [  742.638421] i2c i2c-1: recovery: IBMR 0x00000003 ISR 0x00000000

This clears the EBB bit in the ISR register, so it makes it possible to
initiate transactions on the I2C bus again.

After this patch, the SFP module used for testing can be removed and
replugged numerous times without causing the error described at the
beginning. Previously, the error happened after a few such attempts.

The patch has been tested also with the following kernel versions:
5.10.240, 5.15.189, 6.1.148, 6.6.102, 6.12.42, 6.14.11, 6.15.10, 6.16.1
It improves recovery on all of them.

Cc: stable@vger.kernel.org # 5.10+
Reviewed-by: Imre Kaloz <kaloz@openwrt.org>
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
---
Changes in v3:
  - rebase on tip of i2c/for-current
  - use Reviewed-by tag for Imre
  - remove Fixes tag as the problem is not caused by the previously mentioned
    commit, simply it is not handled by the code yet
  - update list of tested kernels
  - Link to v2: https://lore.kernel.org/r/20250811-i2c-pxa-fix-i2c-communication-v2-3-ca42ea818dc9@gmail.com

Changes in v2:
  - rebase and retest on tip of i2c/for-current
  - Link to v1: https://lore.kernel.org/r/20250511-i2c-pxa-fix-i2c-communication-v1-3-e9097d09a015@gmail.com
---
 drivers/i2c/busses/i2c-pxa.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 70acf33e1d573231f84a1f09cffb376a8277351d..19f5da08def11ded1d3de968f50fa5b5851066f5 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -71,6 +71,7 @@
 #define ISR_GCAD	(1 << 8)	   /* general call address detected */
 #define ISR_SAD		(1 << 9)	   /* slave address detected */
 #define ISR_BED		(1 << 10)	   /* bus error no ACK/NAK */
+#define ISR_A3700_EBB	(1 << 11)	   /* early bus busy for armada 3700 */
 
 #define ILCR_SLV_SHIFT		0
 #define ILCR_SLV_MASK		(0x1FF << ILCR_SLV_SHIFT)
@@ -263,6 +264,7 @@ struct pxa_i2c {
 	bool			highmode_enter;
 	u32			fm_mask;
 	u32			hs_mask;
+	u32			busy_mask;
 
 	struct i2c_bus_recovery_info recovery;
 	struct pinctrl		*pinctrl;
@@ -430,7 +432,7 @@ static int i2c_pxa_wait_bus_not_busy(struct pxa_i2c *i2c)
 
 	while (1) {
 		isr = readl(_ISR(i2c));
-		if (!(isr & (ISR_IBB | ISR_UB)))
+		if (!(isr & i2c->busy_mask))
 			return 0;
 
 		if (isr & ISR_SAD)
@@ -467,7 +469,7 @@ static int i2c_pxa_wait_master(struct pxa_i2c *i2c)
 		 * quick check of the i2c lines themselves to ensure they've
 		 * gone high...
 		 */
-		if ((readl(_ISR(i2c)) & (ISR_UB | ISR_IBB)) == 0 &&
+		if ((readl(_ISR(i2c)) & i2c->busy_mask) == 0 &&
 		    readl(_IBMR(i2c)) == (IBMR_SCLS | IBMR_SDAS)) {
 			if (i2c_debug > 0)
 				dev_dbg(&i2c->adap.dev, "%s: done\n", __func__);
@@ -488,7 +490,7 @@ static int i2c_pxa_set_master(struct pxa_i2c *i2c)
 	if (i2c_debug)
 		dev_dbg(&i2c->adap.dev, "setting to bus master\n");
 
-	if ((readl(_ISR(i2c)) & (ISR_UB | ISR_IBB)) != 0) {
+	if ((readl(_ISR(i2c)) & i2c->busy_mask) != 0) {
 		dev_dbg(&i2c->adap.dev, "%s: unit is busy\n", __func__);
 		if (!i2c_pxa_wait_master(i2c)) {
 			dev_dbg(&i2c->adap.dev, "%s: error: unit busy\n", __func__);
@@ -514,7 +516,7 @@ static int i2c_pxa_wait_slave(struct pxa_i2c *i2c)
 			dev_dbg(&i2c->adap.dev, "%s: %ld: ISR=%08x, ICR=%08x, IBMR=%02x\n",
 				__func__, (long)jiffies, readl(_ISR(i2c)), readl(_ICR(i2c)), readl(_IBMR(i2c)));
 
-		if ((readl(_ISR(i2c)) & (ISR_UB|ISR_IBB)) == 0 ||
+		if ((readl(_ISR(i2c)) & i2c->busy_mask) == 0 ||
 		    (readl(_ISR(i2c)) & ISR_SAD) != 0 ||
 		    (readl(_ICR(i2c)) & ICR_SCLE) == 0) {
 			if (i2c_debug > 1)
@@ -1177,7 +1179,7 @@ static int i2c_pxa_pio_set_master(struct pxa_i2c *i2c)
 	/*
 	 * Wait for the bus to become free.
 	 */
-	while (timeout-- && readl(_ISR(i2c)) & (ISR_IBB | ISR_UB))
+	while (timeout-- && readl(_ISR(i2c)) & i2c->busy_mask)
 		udelay(1000);
 
 	if (timeout < 0) {
@@ -1322,7 +1324,7 @@ static void i2c_pxa_unprepare_recovery(struct i2c_adapter *adap)
 	 * handing control of the bus back to avoid the bus changing state.
 	 */
 	isr = readl(_ISR(i2c));
-	if (isr & (ISR_UB | ISR_IBB)) {
+	if (isr & i2c->busy_mask) {
 		dev_dbg(&i2c->adap.dev,
 			"recovery: resetting controller, ISR=0x%08x\n", isr);
 		i2c_pxa_do_reset(i2c);
@@ -1479,6 +1481,10 @@ static int i2c_pxa_probe(struct platform_device *dev)
 	i2c->fm_mask = pxa_reg_layout[i2c_type].fm;
 	i2c->hs_mask = pxa_reg_layout[i2c_type].hs;
 
+	i2c->busy_mask = ISR_UB | ISR_IBB;
+	if (i2c_type == REGS_A3700)
+		i2c->busy_mask |= ISR_A3700_EBB;
+
 	if (i2c_type != REGS_CE4100)
 		i2c->reg_isar = i2c->reg_base + pxa_reg_layout[i2c_type].isar;
 

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
  2025-08-27 17:13 [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700 Gabor Juhos
  2025-08-27 17:13 ` [PATCH v3 1/2] i2c: pxa: defer reset on Armada 3700 when recovery is used Gabor Juhos
  2025-08-27 17:13 ` [PATCH v3 2/2] i2c: pxa: handle 'Early Bus Busy' condition on Armada 3700 Gabor Juhos
@ 2025-09-01  9:20 ` Andy Shevchenko
  2025-09-01 14:49   ` Gabor Juhos
  2025-09-01  9:23 ` Andy Shevchenko
  3 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2025-09-01  9:20 UTC (permalink / raw)
  To: Gabor Juhos
  Cc: Wolfram Sang, Wolfram Sang, Andi Shyti, Russell King, Andrew Lunn,
	Hanna Hawa, Robert Marko, Linus Walleij, linux-i2c,
	linux-arm-kernel, linux-kernel, stable, Imre Kaloz

On Wed, Aug 27, 2025 at 07:13:57PM +0200, Gabor Juhos wrote:
> There is a long standing bug which causes I2C communication not to
> work on the Armada 3700 based boards. The first patch in the series
> fixes that regression. The second patch improves recovery to make it
> more robust which helps to avoid communication problems with certain
> SFP modules.

> Changes in v3:
>   - rebase on tip of i2c/for-current

Hmm... Why not the i2c/i2c-host branch? (It's Andi's tree)

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
  2025-08-27 17:13 [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700 Gabor Juhos
                   ` (2 preceding siblings ...)
  2025-09-01  9:20 ` [PATCH v3 0/2] i2c: pxa: fix I2C communication " Andy Shevchenko
@ 2025-09-01  9:23 ` Andy Shevchenko
  2025-09-01 15:24   ` Gabor Juhos
  3 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2025-09-01  9:23 UTC (permalink / raw)
  To: Gabor Juhos
  Cc: Wolfram Sang, Wolfram Sang, Andi Shyti, Russell King, Andrew Lunn,
	Hanna Hawa, Robert Marko, Linus Walleij, linux-i2c,
	linux-arm-kernel, linux-kernel, stable, Imre Kaloz

On Wed, Aug 27, 2025 at 07:13:57PM +0200, Gabor Juhos wrote:
> There is a long standing bug which causes I2C communication not to
> work on the Armada 3700 based boards. The first patch in the series
> fixes that regression. The second patch improves recovery to make it
> more robust which helps to avoid communication problems with certain
> SFP modules.

...

>   - remove Imre's tag from the cover letter, and replace his SoB tag to
>     Reviewed-by in the individual patches

Note, this can be automated with `b4`.

	# Start a new branch of the same base
	git checkout -b v3 ...
	# Apply last version from the mailing list
	b4 am $MESSAGE_ID_OF_v2
	# Do actual development of v3
	...

Also you can do more with `b4 relay`, but I haven't tried it, so I don't know
if it makes it possible or better.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
  2025-09-01  9:20 ` [PATCH v3 0/2] i2c: pxa: fix I2C communication " Andy Shevchenko
@ 2025-09-01 14:49   ` Gabor Juhos
  2025-09-01 15:43     ` Andy Shevchenko
  0 siblings, 1 reply; 9+ messages in thread
From: Gabor Juhos @ 2025-09-01 14:49 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Wolfram Sang, Wolfram Sang, Andi Shyti, Russell King, Andrew Lunn,
	Hanna Hawa, Robert Marko, Linus Walleij, linux-i2c,
	linux-arm-kernel, linux-kernel, stable, Imre Kaloz

2025. 09. 01. 11:20 keltezéssel, Andy Shevchenko írta:
> On Wed, Aug 27, 2025 at 07:13:57PM +0200, Gabor Juhos wrote:
>> There is a long standing bug which causes I2C communication not to
>> work on the Armada 3700 based boards. The first patch in the series
>> fixes that regression. The second patch improves recovery to make it
>> more robust which helps to avoid communication problems with certain
>> SFP modules.
> 
>> Changes in v3:
>>   - rebase on tip of i2c/for-current
> 
> Hmm... Why not the i2c/i2c-host branch? (It's Andi's tree)
> 

Simply, because the previous versions of the series were based on that since
they contained a patch for the I2C core code. Additionally, I did not notice
that there is a separate tree for host driver patches.

Although, I could send a new version, but that seems pointless since the i2c-pxa
driver code is the same in both trees currently.

Regards,
Gabor


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
  2025-09-01  9:23 ` Andy Shevchenko
@ 2025-09-01 15:24   ` Gabor Juhos
  2025-09-01 15:45     ` Andy Shevchenko
  0 siblings, 1 reply; 9+ messages in thread
From: Gabor Juhos @ 2025-09-01 15:24 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Wolfram Sang, Wolfram Sang, Andi Shyti, Russell King, Andrew Lunn,
	Hanna Hawa, Robert Marko, Linus Walleij, linux-i2c,
	linux-arm-kernel, linux-kernel, stable, Imre Kaloz

2025. 09. 01. 11:23 keltezéssel, Andy Shevchenko írta:
> On Wed, Aug 27, 2025 at 07:13:57PM +0200, Gabor Juhos wrote:
>> There is a long standing bug which causes I2C communication not to
>> work on the Armada 3700 based boards. The first patch in the series
>> fixes that regression. The second patch improves recovery to make it
>> more robust which helps to avoid communication problems with certain
>> SFP modules.
> 
> ...
> 
>>   - remove Imre's tag from the cover letter, and replace his SoB tag to
>>     Reviewed-by in the individual patches
> 
> Note, this can be automated with `b4`.
> 
> 	# Start a new branch of the same base
> 	git checkout -b v3 ...
> 	# Apply last version from the mailing list
> 	b4 am $MESSAGE_ID_OF_v2
> 	# Do actual development of v3
> 	...

As far as I know it can be used only to collect tags offered publicly on the
mailing lists. I can even use 'b4 trailers --update' for that on an existing b4
tracked branch.

However, the current case is a bit different. I have replaced Imre's tag
manually according to our previous discussion [1].

[1] https://lore.kernel.org/all/aJyM3N9T4xI4Xo1G@smile.fi.intel.com/

Regards,
Gabor

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
  2025-09-01 14:49   ` Gabor Juhos
@ 2025-09-01 15:43     ` Andy Shevchenko
  0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-09-01 15:43 UTC (permalink / raw)
  To: Gabor Juhos
  Cc: Wolfram Sang, Wolfram Sang, Andi Shyti, Russell King, Andrew Lunn,
	Hanna Hawa, Robert Marko, Linus Walleij, linux-i2c,
	linux-arm-kernel, linux-kernel, stable, Imre Kaloz

On Mon, Sep 01, 2025 at 04:49:20PM +0200, Gabor Juhos wrote:
> 2025. 09. 01. 11:20 keltezéssel, Andy Shevchenko írta:
> > On Wed, Aug 27, 2025 at 07:13:57PM +0200, Gabor Juhos wrote:
> >> There is a long standing bug which causes I2C communication not to
> >> work on the Armada 3700 based boards. The first patch in the series
> >> fixes that regression. The second patch improves recovery to make it
> >> more robust which helps to avoid communication problems with certain
> >> SFP modules.
> > 
> >> Changes in v3:
> >>   - rebase on tip of i2c/for-current
> > 
> > Hmm... Why not the i2c/i2c-host branch? (It's Andi's tree)
> 
> Simply, because the previous versions of the series were based on that since
> they contained a patch for the I2C core code. Additionally, I did not notice
> that there is a separate tree for host driver patches.
> 
> Although, I could send a new version, but that seems pointless since the i2c-pxa
> driver code is the same in both trees currently.

Yep, no need for a new version (I haven't implied that need). Just asking...

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700
  2025-09-01 15:24   ` Gabor Juhos
@ 2025-09-01 15:45     ` Andy Shevchenko
  0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-09-01 15:45 UTC (permalink / raw)
  To: Gabor Juhos
  Cc: Wolfram Sang, Wolfram Sang, Andi Shyti, Russell King, Andrew Lunn,
	Hanna Hawa, Robert Marko, Linus Walleij, linux-i2c,
	linux-arm-kernel, linux-kernel, stable, Imre Kaloz

On Mon, Sep 01, 2025 at 05:24:51PM +0200, Gabor Juhos wrote:
> 2025. 09. 01. 11:23 keltezéssel, Andy Shevchenko írta:
> > On Wed, Aug 27, 2025 at 07:13:57PM +0200, Gabor Juhos wrote:

...

> >>   - remove Imre's tag from the cover letter, and replace his SoB tag to
> >>     Reviewed-by in the individual patches
> > 
> > Note, this can be automated with `b4`.
> > 
> > 	# Start a new branch of the same base
> > 	git checkout -b v3 ...
> > 	# Apply last version from the mailing list
> > 	b4 am $MESSAGE_ID_OF_v2
> > 	# Do actual development of v3
> > 	...
> 
> As far as I know it can be used only to collect tags offered publicly on the
> mailing lists. I can even use 'b4 trailers --update' for that on an existing b4
> tracked branch.
> 
> However, the current case is a bit different. I have replaced Imre's tag
> manually according to our previous discussion [1].

Right, but technically it can be done via `b4`. I thought you have done that
manually. Seems I misinterpreted things.

> [1] https://lore.kernel.org/all/aJyM3N9T4xI4Xo1G@smile.fi.intel.com/

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-09-01 15:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-27 17:13 [PATCH v3 0/2] i2c: pxa: fix I2C communication on Armada 3700 Gabor Juhos
2025-08-27 17:13 ` [PATCH v3 1/2] i2c: pxa: defer reset on Armada 3700 when recovery is used Gabor Juhos
2025-08-27 17:13 ` [PATCH v3 2/2] i2c: pxa: handle 'Early Bus Busy' condition on Armada 3700 Gabor Juhos
2025-09-01  9:20 ` [PATCH v3 0/2] i2c: pxa: fix I2C communication " Andy Shevchenko
2025-09-01 14:49   ` Gabor Juhos
2025-09-01 15:43     ` Andy Shevchenko
2025-09-01  9:23 ` Andy Shevchenko
2025-09-01 15:24   ` Gabor Juhos
2025-09-01 15:45     ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).