From 13b169a35dfff523263d20d0d97e46401f6c692f Mon Sep 17 00:00:00 2001
From: Sam Shih <sam.shih@mediatek.com>
Date: Fri, 2 Jun 2023 13:06:31 +0800
Subject: [PATCH] 
 [networking][999-2714-mt7531-gsw-port5_external_phy_init.patch]

---
 drivers/net/phy/mtk/mt753x/Makefile        |  3 +-
 drivers/net/phy/mtk/mt753x/mt7531.c        |  3 +
 drivers/net/phy/mtk/mt753x/mt753x.h        |  1 +
 drivers/net/phy/mtk/mt753x/mt753x_extphy.c | 69 ++++++++++++++++++++++
 drivers/net/phy/mtk/mt753x/mt753x_extphy.h | 18 ++++++
 5 files changed, 93 insertions(+), 1 deletion(-)
 create mode 100644 drivers/net/phy/mtk/mt753x/mt753x_extphy.c
 create mode 100644 drivers/net/phy/mtk/mt753x/mt753x_extphy.h

diff --git a/drivers/net/phy/mtk/mt753x/Makefile b/drivers/net/phy/mtk/mt753x/Makefile
index b5a63fe91..16e977528 100644
--- a/drivers/net/phy/mtk/mt753x/Makefile
+++ b/drivers/net/phy/mtk/mt753x/Makefile
@@ -7,5 +7,6 @@ obj-$(CONFIG_MT753X_GSW)	+= mt753x.o
 mt753x-$(CONFIG_SWCONFIG)	+= mt753x_swconfig.o
 
 mt753x-y			+= mt753x_mdio.o mt7530.o mt7531.o \
-					mt753x_common.o mt753x_vlan.o mt753x_nl.o mt753x_phy.o
+					mt753x_common.o mt753x_vlan.o mt753x_nl.o mt753x_phy.o \
+					mt753x_extphy.o
 
diff --git a/drivers/net/phy/mtk/mt753x/mt7531.c b/drivers/net/phy/mtk/mt753x/mt7531.c
index 512a89a94..3e2187d21 100755
--- a/drivers/net/phy/mtk/mt753x/mt7531.c
+++ b/drivers/net/phy/mtk/mt753x/mt7531.c
@@ -264,6 +264,9 @@ static int mt7531_set_port_sgmii_force_mode(struct gsw_mt753x *gsw, u32 port,
 		return -EINVAL;
 	}
 
+	if (port == 5)
+		extphy_init(gsw, port);
+
 	port_base = port - 5;
 
 	switch (port_cfg->speed) {
diff --git a/drivers/net/phy/mtk/mt753x/mt753x.h b/drivers/net/phy/mtk/mt753x/mt753x.h
index 252ce350f..c23fd9e5f 100644
--- a/drivers/net/phy/mtk/mt753x/mt753x.h
+++ b/drivers/net/phy/mtk/mt753x/mt753x.h
@@ -147,6 +147,7 @@ int mt753x_phy_calibration(struct gsw_mt753x *gsw, u8 phyaddr);
 int extphy_init(struct gsw_mt753x *gsw, int addr);
 
 int mt753x_phy_calibration(struct gsw_mt753x *gsw, u8 phyaddr);
+int extphy_init(struct gsw_mt753x *gsw, int addr);
 
 /* MDIO Indirect Access Registers */
 #define MII_MMD_ACC_CTL_REG		0x0d
diff --git a/drivers/net/phy/mtk/mt753x/mt753x_extphy.c b/drivers/net/phy/mtk/mt753x/mt753x_extphy.c
new file mode 100644
index 000000000..f58e8a62d
--- /dev/null
+++ b/drivers/net/phy/mtk/mt753x/mt753x_extphy.c
@@ -0,0 +1,69 @@
+/*
+ * Driver for MediaTek MT7531 gigabit switch
+ *
+ * Copyright (C) 2018 MediaTek Inc. All Rights Reserved.
+ *
+ * Author: Landen Chao <landen.chao@mediatek.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <linux/kernel.h>
+#include <linux/mii.h>
+
+#include "mt753x.h"
+#include "mt753x_regs.h"
+#include "mt753x_extphy.h"
+
+int gpy211_init(struct gsw_mt753x *gsw, int addr)
+{
+	/* Enable rate adaption */
+	gsw->mmd_write(gsw, addr, 0x1e, 0x8, 0x24e2);
+
+	return 0;
+}
+
+static struct mt753x_extphy_id extphy_tbl[] = {
+        {0x67c9de00, 0x0fffffff0, gpy211_init},
+};
+
+static u32 get_cl22_phy_id(struct gsw_mt753x *gsw, int addr)
+{
+	int phy_reg;
+	u32 phy_id = 0;
+
+	phy_reg = gsw->mii_read(gsw, addr, MII_PHYSID1);
+	if (phy_reg < 0)
+		return 0;
+	phy_id = (phy_reg & 0xffff) << 16;
+
+	/* Grab the bits from PHYIR2, and put them in the lower half */
+	phy_reg = gsw->mii_read(gsw, addr, MII_PHYSID2);
+	if (phy_reg < 0)
+		return 0;
+
+	phy_id |= (phy_reg & 0xffff);
+
+	return phy_id;
+}
+
+static inline bool phy_id_is_match(u32 id, struct mt753x_extphy_id *phy)
+{
+	return ((id & phy->phy_id_mask) == (phy->phy_id & phy->phy_id_mask));
+}
+
+int extphy_init(struct gsw_mt753x *gsw, int addr)
+{
+	int i;
+	u32 phy_id;
+	struct mt753x_extphy_id *extphy;
+
+	phy_id = get_cl22_phy_id(gsw, addr);
+	for (i = 0; i < ARRAY_SIZE(extphy_tbl); i++) {
+		extphy = &extphy_tbl[i];
+		if(phy_id_is_match(phy_id, extphy))
+			extphy->init(gsw, addr);
+	}
+
+	return 0;
+}
diff --git a/drivers/net/phy/mtk/mt753x/mt753x_extphy.h b/drivers/net/phy/mtk/mt753x/mt753x_extphy.h
new file mode 100644
index 000000000..2b72c8a9d
--- /dev/null
+++ b/drivers/net/phy/mtk/mt753x/mt753x_extphy.h
@@ -0,0 +1,18 @@
+/*
+ * Driver for MediaTek MT753x gigabit switch
+ *
+ * Copyright (C) 2018 MediaTek Inc. All Rights Reserved.
+ *
+ * Author: Landen Chao <landen.chao@mediatek.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef _MT753X_EXTPHY_H_
+#define _MT753X_EXTPHY_H_
+struct mt753x_extphy_id {
+        u32 phy_id;
+        u32 phy_id_mask;
+	int (*init)(struct gsw_mt753x *gsw, int addr);
+};
+#endif
-- 
2.34.1

