1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- From 86e1168a214b7ab0883acf1e7a6885a7a949e3e7 Mon Sep 17 00:00:00 2001
- From: Daniel Golle <[email protected]>
- Date: Mon, 3 Apr 2023 02:19:28 +0100
- Subject: [PATCH 13/48] net: dsa: mt7530: skip locking if MDIO bus isn't
- present
- As MT7530 and MT7531 internally use 32-bit wide registers, each access
- to any register of the switch requires several operations on the MDIO
- bus. Hence if there is congruent access, e.g. due to PCS or PHY
- polling, this can mess up and interfere with another ongoing register
- access sequence.
- However, the MDIO bus mutex is only relevant for MDIO-connected
- switches. Prepare switches which have there registers directly mapped
- into the SoCs register space via MMIO which do not require such
- locking. There we can simply use regmap's default locking mechanism.
- Hence guard mutex operations to only be performed in case of MDIO
- connected switches.
- Signed-off-by: Daniel Golle <[email protected]>
- Reviewed-by: Andrew Lunn <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/dsa/mt7530.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
- --- a/drivers/net/dsa/mt7530.c
- +++ b/drivers/net/dsa/mt7530.c
- @@ -144,13 +144,15 @@ err:
- static void
- mt7530_mutex_lock(struct mt7530_priv *priv)
- {
- - mutex_lock_nested(&priv->bus->mdio_lock, MDIO_MUTEX_NESTED);
- + if (priv->bus)
- + mutex_lock_nested(&priv->bus->mdio_lock, MDIO_MUTEX_NESTED);
- }
-
- static void
- mt7530_mutex_unlock(struct mt7530_priv *priv)
- {
- - mutex_unlock(&priv->bus->mdio_lock);
- + if (priv->bus)
- + mutex_unlock(&priv->bus->mdio_lock);
- }
-
- static void
|