[][kernel][mt7988][eth][phy: mediatek-ge: Change LED pinmux after setting correct polarity]
[Description]
Change LED pinmux after setting correct polarity.
We set four internal phys' polarity first and then switch pinmux. Or LED
will blink unexpectedly.
[Release-log]
N/A
Change-Id: Ie7d209745c3fb565a14a99767c8ac6c69e8b5750
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7352621
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts
index 4c1ae3d..bbfa4dc 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts
@@ -173,7 +173,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -279,6 +279,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts
index 6f8ca41..a8ce4f3 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts
@@ -164,7 +164,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -270,6 +270,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts
index 4942308..c4b2721 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts
@@ -199,7 +199,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -305,6 +305,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
index 1ac7f69..e4630ae 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
@@ -344,7 +344,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -450,6 +450,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts
index 19430fe..f4953b3 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts
@@ -191,7 +191,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -297,6 +297,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-e2p5g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-e2p5g-spim-nand.dts
index b168a76..1fd6282 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-e2p5g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-e2p5g-spim-nand.dts
@@ -276,8 +276,6 @@
};
ð {
- pinctrl-names = "default";
- pinctrl-0 = <&gbe_led0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -382,6 +380,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-i2p5g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-i2p5g-spim-nand.dts
index 4711824..9250e5c 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-i2p5g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-i2p5g-spim-nand.dts
@@ -198,7 +198,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&gbe_led0_pins>, <&i2p5gbe_led0_pins>;
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -297,6 +297,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-sfp-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-sfp-spim-nand.dts
index 2203af2..22048ac 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-sfp-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-sfp-spim-nand.dts
@@ -308,8 +308,6 @@
};
ð {
- pinctrl-names = "default";
- pinctrl-0 = <&gbe_led0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -379,6 +377,8 @@
mdio1: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
gsw_phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts
index e80a188..f970199 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts
@@ -295,7 +295,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -380,6 +380,8 @@
mdio1: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
gsw_phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
index bda84fe..407b8ed 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
@@ -315,7 +315,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -400,6 +400,8 @@
mdio1: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
gsw_phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
index 2025451..bbfd3c6 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
@@ -173,7 +173,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -263,6 +263,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
index 9b29598..750d9f1 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
@@ -164,7 +164,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -254,6 +254,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
index fc31453..bdc5d9e 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
@@ -199,7 +199,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -289,6 +289,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
index 6345b44..ba261f6 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
@@ -339,7 +339,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -429,6 +429,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
index b61f09b..28c1f7e 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
@@ -191,7 +191,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -281,6 +281,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts
index 16a0a69..830b223 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts
@@ -271,8 +271,6 @@
};
ð {
- pinctrl-names = "default";
- pinctrl-0 = <&gbe_led0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -361,6 +359,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts
index e925403..ccedbbc 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts
@@ -198,7 +198,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&gbe_led0_pins>, <&i2p5gbe_led0_pins>;
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -284,6 +284,8 @@
compatible = "mediatek,dsa-slave-mdio";
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
sphy0: switch_phy0@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts
index b2528a0..8c0436c 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts
@@ -285,8 +285,6 @@
};
ð {
- pinctrl-names = "default";
- pinctrl-0 = <&gbe_led0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -347,6 +345,8 @@
mdio1: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
gsw_phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
index b1ec33b..af63d6c 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
@@ -315,7 +315,7 @@
ð {
pinctrl-names = "default";
- pinctrl-0 = <&mdio0_pins>, <&gbe_led0_pins>;
+ pinctrl-0 = <&mdio0_pins>;
status = "okay";
gmac0: mac@0 {
@@ -384,6 +384,8 @@
mdio1: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gbe_led0_pins>;
gsw_phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id03a2.9481";
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c b/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c
index 956bd09..b99ee0b 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c
@@ -4,6 +4,7 @@
#include <linux/nvmem-consumer.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
+#include <linux/pinctrl/consumer.h>
#include <linux/phy.h>
#define MTK_GPHY_ID_MT7530 0x03a29412
@@ -1238,6 +1239,51 @@
static int mt7988_phy_probe(struct phy_device *phydev)
{
+ struct device_node *np;
+ void __iomem *boottrap;
+ u32 reg;
+ int port;
+ int ret;
+ struct pinctrl *pinctrl;
+
+ /* Setup LED polarity according to boottrap's polarity */
+ np = of_find_compatible_node(NULL, NULL, "mediatek,boottrap");
+ if (!np)
+ return -ENOENT;
+ boottrap = of_iomap(np, 0);
+ if (!boottrap)
+ return -ENOMEM;
+ reg = readl(boottrap);
+ port = phydev->mdio.addr;
+ if ((port == GPHY_PORT0 && reg & BIT(8)) ||
+ (port == GPHY_PORT1 && reg & BIT(9)) ||
+ (port == GPHY_PORT2 && reg & BIT(10)) ||
+ (port == GPHY_PORT3 && reg & BIT(11))) {
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED0_ON_CTRL,
+ MTK_PHY_LED0_ENABLE | MTK_PHY_LED0_ON_LINK10 |
+ MTK_PHY_LED0_ON_LINK100 |
+ MTK_PHY_LED0_ON_LINK1000);
+ } else {
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED0_ON_CTRL,
+ MTK_PHY_LED0_ENABLE | MTK_PHY_LED0_POLARITY |
+ MTK_PHY_LED0_ON_LINK10 |
+ MTK_PHY_LED0_ON_LINK100 |
+ MTK_PHY_LED0_ON_LINK1000);
+ }
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED0_BLINK_CTRL,
+ MTK_PHY_LED0_1000TX | MTK_PHY_LED0_1000RX |
+ MTK_PHY_LED0_100TX | MTK_PHY_LED0_100RX |
+ MTK_PHY_LED0_10TX | MTK_PHY_LED0_10RX);
+
+ if (port == GPHY_PORT3) {
+ pinctrl = devm_pinctrl_get_select_default(&phydev->mdio.bus->dev);
+ if (IS_ERR(pinctrl)) {
+ ret = PTR_ERR(pinctrl);
+ dev_err(&phydev->mdio.dev, "Fail to set LED pins!\n");
+ return -EINVAL;
+ }
+ }
+
mt798x_phy_common_finetune(phydev);
mt7988_phy_finetune(phydev);
mt798x_phy_eee(phydev);