Re: [PATCH net 2/2] net: dsa: mv88e6xxx: Avoid EEPROM timeout without EEPROM on 88E6250-family switches

From: Andrew Lunn
Date: Mon Apr 22 2024 - 09:31:33 EST


On Thu, Apr 18, 2024 at 02:16:08PM +0200, Matthias Schiffer wrote:
> 88E6250-family switches have the quirk that the EEPROM Running flag can
> get stuck at 1 when no EEPROM is connected, causing
> mv88e6xxx_g2_eeprom_wait() to time out. We still want to wait for the
> EEPROM however, to avoid interrupting a transfer and leaving the EEPROM
> in an invalid state.
>
> The condition to wait for recommended by the hardware spec is the EEInt
> flag, however this flag is cleared on read, so before the hardware reset,
> is may have been cleared already even though the EEPROM has been read
> successfully.
>
> For this reason, we revive the mv88e6xxx_g1_wait_eeprom_done() function
> that was removed in commit 6ccf50d4d474
> ("net: dsa: mv88e6xxx: Avoid EEPROM timeout when EEPROM is absent") in a
> slightly refactored form, and introduce a new
> mv88e6xxx_g1_wait_eeprom_done_prereset() that additionally handles this
> case by triggering another EEPROM reload that can be waited on.
>
> On other switch models without this quirk, mv88e6xxx_g2_eeprom_wait() is
> kept, as it avoids the additional reload.
>
> Fixes: 6ccf50d4d474 ("net: dsa: mv88e6xxx: Avoid EEPROM timeout when EEPROM is absent")
> Signed-off-by: Matthias Schiffer <matthias.schiffer@xxxxxxxxxxxxxxx>

Reviewed-by: Andrew Lunn <andrew@xxxxxxx>

Andrew