diff mbox series

[net] net: dsa: qca8k: make sure PAD0 MAC06 exchange is disabled

Message ID 20211102183041.27429-1-ansuelsmth@gmail.com (mailing list archive)
State Accepted
Commit 5f15d392dcb4aa250a63d6f2c5adfc26c0aedc78
Delegated to: Netdev Maintainers
Headers show
Series [net] net: dsa: qca8k: make sure PAD0 MAC06 exchange is disabled | expand

Checks

Context Check Description
netdev/cover_letter success Single patches do not need cover letters
netdev/fixes_present success Fixes tag present in non-next series
netdev/patch_count success Link
netdev/subject_prefix success Link
netdev/cc_maintainers success CCed 7 of 7 maintainers
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Fixes tag looks correct
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 21 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/header_inline success No static functions without inline keyword in header files
netdev/tree_selection success Clearly marked for net
netdev/apply success Patch already applied to net

Commit Message

Christian Marangi Nov. 2, 2021, 6:30 p.m. UTC
Some device set MAC06 exchange in the bootloader. This cause some
problem as we don't support this strange mode and we just set the port6
as the primary CPU port. With MAC06 exchange, PAD0 reg configure port6
instead of port0. Add an extra check and explicitly disable MAC06 exchange
to correctly configure the port PAD config.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Fixes: 3fcf734aa482 ("net: dsa: qca8k: add support for cpu port 6")
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
---
 drivers/net/dsa/qca8k.c | 8 ++++++++
 drivers/net/dsa/qca8k.h | 1 +
 2 files changed, 9 insertions(+)

Some comments here:
Resetting the switch using the sw reg doesn't reset the port PAD
configuration. I was thinking if it would be better to clear all the
pad configuration but considering that the entire reg is set by phylink
mac config, I think it's not necessary as the PAD related to the port will
be reset anyway with the new values. Have a dirty configuration on PAD6
doesn't cause any problem as we have that port disabled and it would be
reset and configured anyway if defined.

Comments

patchwork-bot+netdevbpf@kernel.org Nov. 3, 2021, 2:30 p.m. UTC | #1
Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Tue,  2 Nov 2021 19:30:41 +0100 you wrote:
> Some device set MAC06 exchange in the bootloader. This cause some
> problem as we don't support this strange mode and we just set the port6
> as the primary CPU port. With MAC06 exchange, PAD0 reg configure port6
> instead of port0. Add an extra check and explicitly disable MAC06 exchange
> to correctly configure the port PAD config.
> 
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> Fixes: 3fcf734aa482 ("net: dsa: qca8k: add support for cpu port 6")
> Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
> 
> [...]

Here is the summary with links:
  - [net] net: dsa: qca8k: make sure PAD0 MAC06 exchange is disabled
    https://git.kernel.org/netdev/net/c/5f15d392dcb4

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c
index ea7f12778922..a429c9750add 100644
--- a/drivers/net/dsa/qca8k.c
+++ b/drivers/net/dsa/qca8k.c
@@ -1109,6 +1109,14 @@  qca8k_setup(struct dsa_switch *ds)
 	if (ret)
 		return ret;
 
+	/* Make sure MAC06 is disabled */
+	ret = qca8k_reg_clear(priv, QCA8K_REG_PORT0_PAD_CTRL,
+			      QCA8K_PORT0_PAD_MAC06_EXCHANGE_EN);
+	if (ret) {
+		dev_err(priv->dev, "failed disabling MAC06 exchange");
+		return ret;
+	}
+
 	/* Enable CPU Port */
 	ret = qca8k_reg_set(priv, QCA8K_REG_GLOBAL_FW_CTRL0,
 			    QCA8K_GLOBAL_FW_CTRL0_CPU_PORT_EN);
diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h
index e10571a398c9..128b8cf85e08 100644
--- a/drivers/net/dsa/qca8k.h
+++ b/drivers/net/dsa/qca8k.h
@@ -34,6 +34,7 @@ 
 #define   QCA8K_MASK_CTRL_DEVICE_ID_MASK		GENMASK(15, 8)
 #define   QCA8K_MASK_CTRL_DEVICE_ID(x)			((x) >> 8)
 #define QCA8K_REG_PORT0_PAD_CTRL			0x004
+#define   QCA8K_PORT0_PAD_MAC06_EXCHANGE_EN		BIT(31)
 #define   QCA8K_PORT0_PAD_SGMII_RXCLK_FALLING_EDGE	BIT(19)
 #define   QCA8K_PORT0_PAD_SGMII_TXCLK_FALLING_EDGE	BIT(18)
 #define QCA8K_REG_PORT5_PAD_CTRL			0x008