[rdkb][common][bsp][Refactor and sync kernel from oprnwrt]
[Description]
1077944 [MT7988][Fix dm-verity failed due to non-hashed rootfs in factory.bin]
ed96c77 [kernel][mt7988][eth][Update 1000basex support and refactor to upstream style for the SGMII]
abcbc21 [Kernel][hnat][FiX hnat coverity issue]
0682ce8 [kernel][mt7988][eth][Update GMAC connection for the MT7988C]
[Release-log]
Change-Id: I7e0bc90277631c3cc90cb95fea64ce13253f0cfd
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
index bbfd3c6..afd03bf 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
@@ -113,6 +113,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
pcie0_pins: pcie0-pins {
mux {
function = "pcie";
@@ -193,19 +200,35 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
- phy-mode = "usxgmii";
+ phy-mode = "xgmii";
phy-handle = <&phy0>;
};
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
+ phy-mode = "usxgmii";
+ phy-handle = <&phy1>;
+ };
+
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <10500000>;
phy0: ethernet-phy@0 {
- reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
+ phy1: ethernet-phy@8 {
+ reg = <8>;
compatible = "ethernet-phy-ieee802.3-c45";
- reset-gpios = <&pio 72 1>;
+ reset-gpios = <&pio 3 1>;
reset-assert-us = <100000>;
reset-deassert-us = <221000>;
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
index 750d9f1..0714bff 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
@@ -104,6 +104,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
pcie0_pins: pcie0-pins {
mux {
function = "pcie";
@@ -184,19 +191,35 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
- phy-mode = "usxgmii";
+ phy-mode = "xgmii";
phy-handle = <&phy0>;
};
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
+ phy-mode = "usxgmii";
+ phy-handle = <&phy1>;
+ };
+
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <10500000>;
phy0: ethernet-phy@0 {
- reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
+ phy1: ethernet-phy@8 {
+ reg = <8>;
compatible = "ethernet-phy-ieee802.3-c45";
- reset-gpios = <&pio 72 1>;
+ reset-gpios = <&pio 3 1>;
reset-assert-us = <100000>;
reset-deassert-us = <221000>;
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
index bdc5d9e..53b9668 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
@@ -138,6 +138,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
pcie0_pins: pcie0-pins {
mux {
function = "pcie";
@@ -219,19 +226,35 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
- phy-mode = "usxgmii";
+ phy-mode = "xgmii";
phy-handle = <&phy0>;
};
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
+ phy-mode = "usxgmii";
+ phy-handle = <&phy1>;
+ };
+
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <10500000>;
phy0: ethernet-phy@0 {
- reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
+ phy1: ethernet-phy@8 {
+ reg = <8>;
compatible = "ethernet-phy-ieee802.3-c45";
- reset-gpios = <&pio 72 1>;
+ reset-gpios = <&pio 3 1>;
reset-assert-us = <100000>;
reset-deassert-us = <221000>;
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
index ba261f6..db03e0b 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
@@ -258,6 +258,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
i2c0_pins: i2c0-pins-g0 {
mux {
function = "i2c";
@@ -359,17 +366,33 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
- phy-mode = "usxgmii";
+ phy-mode = "xgmii";
phy-handle = <&phy0>;
};
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
+ phy-mode = "usxgmii";
+ phy-handle = <&phy1>;
+ };
+
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <10500000>;
phy0: ethernet-phy@0 {
- reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
+ phy1: ethernet-phy@8 {
+ reg = <8>;
compatible = "ethernet-phy-ieee802.3-c45";
reset-gpios = <&pio 3 1>;
reset-assert-us = <100000>;
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
index 28c1f7e..c0b7c33 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
@@ -138,6 +138,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
pcie0_pins: pcie0-pins {
mux {
function = "pcie";
@@ -211,19 +218,35 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
- phy-mode = "usxgmii";
+ phy-mode = "xgmii";
phy-handle = <&phy0>;
};
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
+ phy-mode = "usxgmii";
+ phy-handle = <&phy1>;
+ };
+
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <10500000>;
phy0: ethernet-phy@0 {
- reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
+ phy1: ethernet-phy@8 {
+ reg = <8>;
compatible = "ethernet-phy-ieee802.3-c45";
- reset-gpios = <&pio 72 1>;
+ reset-gpios = <&pio 3 1>;
reset-assert-us = <100000>;
reset-deassert-us = <221000>;
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts
index 830b223..6c383fc 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-e2p5g-spim-nand.dts
@@ -205,6 +205,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
i2c0_pins: i2c0-pins-g0 {
mux {
function = "i2c";
@@ -289,19 +296,35 @@
gmac1: mac@1 {
compatible = "mediatek,eth-mac";
reg = <1>;
+ mac-type = "xgdm";
+ phy-mode = "xgmii";
+ phy-handle = <&phy0>;
+ };
+
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
mac-type = "gdm";
phy-mode = "2500base-x";
- phy-handle = <&phy13>;
+ phy-handle = <&phy5>;
};
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+ phy0: ethernet-phy@0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
- phy13: phy@13 {
+ phy5: phy@5 {
compatible = "ethernet-phy-ieee802.3-c45";
- reg = <13>;
- reset-gpios = <&pio 1 1>;
+ reg = <5>;
+ reset-gpios = <&pio 3 1>;
reset-assert-us = <600>;
reset-deassert-us = <20000>;
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts
deleted file mode 100644
index e8b6f14..0000000
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-i2p5g-spim-nand.dts
+++ /dev/null
@@ -1,340 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0 OR MIT)
-/*
- * Copyright (C) 2021 MediaTek Inc.
- * Author: Sam.Shih <sam.shih@mediatek.com>
- */
-
-/dts-v1/;
-#include "mt7988.dtsi"
-
-/ {
- model = "MediaTek MT7988C DSA internal-2.5G SPIM-NAND RFB";
- compatible = "mediatek,mt7988c-dsa-i2p5g-spim-snand",
- /* Reserve this for DVFS if creating new dts */
- "mediatek,mt7988";
-
- chosen {
- bootargs = "console=ttyS0,115200n1 loglevel=8 \
- earlycon=uart8250,mmio32,0x11000000 \
- pci=pcie_bus_perf";
- };
-
- memory {
- reg = <0 0x40000000 0 0x10000000>;
- };
-
- nmbm_spim_nand {
- compatible = "generic,nmbm";
-
- #address-cells = <1>;
- #size-cells = <1>;
-
- lower-mtd-device = <&spi_nand>;
- forced-create;
-
- partitions {
- compatible = "fixed-partitions";
- #address-cells = <1>;
- #size-cells = <1>;
-
- partition@0 {
- label = "BL2";
- reg = <0x00000 0x0100000>;
- read-only;
- };
-
- partition@100000 {
- label = "u-boot-env";
- reg = <0x0100000 0x0080000>;
- };
-
- factory: partition@180000 {
- label = "Factory";
- reg = <0x180000 0x0400000>;
- };
-
- partition@580000 {
- label = "FIP";
- reg = <0x580000 0x0200000>;
- };
-
- partition@780000 {
- label = "ubi";
- reg = <0x780000 0x7080000>;
- };
- };
- };
-
- wsys_adie: wsys_adie@0 {
- // fpga cases need to manual change adie_id / sku_type for dvt only
- compatible = "mediatek,rebb-mt7988-adie";
- adie_id = <7976>;
- sku_type = <3000>;
- };
-};
-
-&uart0 {
- status = "okay";
-};
-
-&spi0 {
- pinctrl-names = "default";
- pinctrl-0 = <&spi0_flash_pins>;
- status = "okay";
-
- spi_nand: spi_nand@0 {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "spi-nand";
- spi-cal-enable;
- spi-cal-mode = "read-data";
- spi-cal-datalen = <7>;
- spi-cal-data = /bits/ 8 <0x53 0x50 0x49 0x4E 0x41 0x4E 0x44>;
- spi-cal-addrlen = <5>;
- spi-cal-addr = /bits/ 32 <0x0 0x0 0x0 0x0 0x0>;
- reg = <0>;
- spi-max-frequency = <52000000>;
- spi-tx-buswidth = <4>;
- spi-rx-buswidth = <4>;
- };
-};
-
-&spi1 {
- pinctrl-names = "default";
- /* pin shared with snfi */
- pinctrl-0 = <&spic_pins>;
- status = "disabled";
-};
-
-&pcie0 {
- pinctrl-names = "default";
- pinctrl-0 = <&pcie0_pins>;
- status = "okay";
-};
-
-&pcie1 {
- pinctrl-names = "default";
- pinctrl-0 = <&pcie1_pins>;
- status = "disabled";
-};
-
-&pcie2 {
- pinctrl-names = "default";
- pinctrl-0 = <&pcie2_pins>;
- status = "disabled";
-};
-
-&pcie3 {
- pinctrl-names = "default";
- pinctrl-0 = <&pcie3_pins>;
- status = "okay";
-};
-
-&pio {
- gbe_led0_pins: gbe-pins {
- mux {
- function = "led";
- groups = "gbe_led0";
- };
- };
-
- i2p5gbe_led0_pins: 2p5gbe-pins {
- mux {
- function = "led";
- groups = "2p5gbe_led0";
- };
- };
-
- pcie0_pins: pcie0-pins {
- mux {
- function = "pcie";
- groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0",
- "pcie_wake_n0_0";
- };
- };
-
- pcie1_pins: pcie1-pins {
- mux {
- function = "pcie";
- groups = "pcie_2l_1_pereset", "pcie_clk_req_n1",
- "pcie_wake_n1_0";
- };
- };
-
- pcie2_pins: pcie2-pins {
- mux {
- function = "pcie";
- groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0",
- "pcie_wake_n2_0";
- };
- };
-
- pcie3_pins: pcie3-pins {
- mux {
- function = "pcie";
- groups = "pcie_1l_1_pereset", "pcie_clk_req_n3",
- "pcie_wake_n3_0";
- };
- };
-
- spi0_flash_pins: spi0-pins {
- mux {
- function = "spi";
- groups = "spi0", "spi0_wp_hold";
- };
- };
-
- spic_pins: spi1-pins {
- mux {
- function = "spi";
- groups = "spi1";
- };
- };
-};
-
-&watchdog {
- status = "disabled";
-};
-
-ð {
- status = "okay";
-
- gmac0: mac@0 {
- compatible = "mediatek,eth-mac";
- reg = <0>;
- mac-type = "xgdm";
- phy-mode = "10gbase-kr";
-
- fixed-link {
- speed = <10000>;
- full-duplex;
- pause;
- };
- };
-
- gmac1: mac@1 {
- compatible = "mediatek,eth-mac";
- reg = <1>;
- mac-type = "xgdm";
- phy-mode = "xgmii";
- phy-handle = <&phy0>;
- };
-
- mdio: mdio-bus {
- #address-cells = <1>;
- #size-cells = <0>;
- phy0: ethernet-phy@0 {
- pinctrl-names = "default";
- pinctrl-0 = <&i2p5gbe_led0_pins>;
- reg = <15>;
- compatible = "ethernet-phy-ieee802.3-c45";
- phy-mode = "xgmii";
- };
-
- switch@0 {
- compatible = "mediatek,mt7988";
- reg = <31>;
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@0 {
- reg = <0>;
- label = "lan0";
- phy-mode = "gmii";
- phy-handle = <&sphy0>;
- };
-
- port@1 {
- reg = <1>;
- label = "lan1";
- phy-mode = "gmii";
- phy-handle = <&sphy1>;
- };
-
- port@2 {
- reg = <2>;
- label = "lan2";
- phy-mode = "gmii";
- phy-handle = <&sphy2>;
- };
-
- port@3 {
- reg = <3>;
- label = "lan3";
- phy-mode = "gmii";
- phy-handle = <&sphy3>;
- };
-
- port@6 {
- reg = <6>;
- label = "cpu";
- ethernet = <&gmac0>;
- phy-mode = "10gbase-kr";
-
- fixed-link {
- speed = <10000>;
- full-duplex;
- pause;
- };
- };
- };
-
- mdio {
- 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";
- reg = <0>;
- phy-mode = "gmii";
- rext = "efuse";
- tx_r50 = "efuse";
- nvmem-cells = <&phy_calibration_p0>;
- nvmem-cell-names = "phy-cal-data";
- };
-
- sphy1: switch_phy1@1 {
- compatible = "ethernet-phy-id03a2.9481";
- reg = <1>;
- phy-mode = "gmii";
- rext = "efuse";
- tx_r50 = "efuse";
- nvmem-cells = <&phy_calibration_p1>;
- nvmem-cell-names = "phy-cal-data";
- };
-
- sphy2: switch_phy2@2 {
- compatible = "ethernet-phy-id03a2.9481";
- reg = <2>;
- phy-mode = "gmii";
- rext = "efuse";
- tx_r50 = "efuse";
- nvmem-cells = <&phy_calibration_p2>;
- nvmem-cell-names = "phy-cal-data";
- };
-
- sphy3: switch_phy3@3 {
- compatible = "ethernet-phy-id03a2.9481";
- reg = <3>;
- phy-mode = "gmii";
- rext = "efuse";
- tx_r50 = "efuse";
- nvmem-cells = <&phy_calibration_p3>;
- nvmem-cell-names = "phy-cal-data";
- };
- };
- };
- };
-};
-
-&hnat {
- mtketh-wan = "eth1";
- mtketh-lan = "lan";
- mtketh-lan2 = "eth2";
- mtketh-max-gmac = <3>;
- status = "okay";
-};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts
index 8c0436c..2185239 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-sfp-spim-nand.dts
@@ -219,6 +219,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
i2c0_pins: i2c0-pins-g0 {
mux {
function = "i2c";
@@ -304,6 +311,14 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
+ phy-mode = "xgmii";
+ phy-handle = <&phy0>;
+ };
+
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
phy-mode = "10gbase-kr";
managed = "in-band-status";
sfp = <&sfp_esp0>;
@@ -312,6 +327,15 @@
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
+
+ phy0: ethernet-phy@0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
};
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
index af63d6c..301d1ea 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
@@ -234,6 +234,13 @@
};
};
+ i2p5gbe_led0_pins: 2p5gbe-pins {
+ mux {
+ function = "led";
+ groups = "2p5gbe_led0";
+ };
+ };
+
i2c0_pins: i2c0-pins-g0 {
mux {
function = "i2c";
@@ -335,19 +342,35 @@
compatible = "mediatek,eth-mac";
reg = <1>;
mac-type = "xgdm";
- phy-mode = "usxgmii";
+ phy-mode = "xgmii";
phy-handle = <&phy0>;
};
+ gmac2: mac@2 {
+ compatible = "mediatek,eth-mac";
+ reg = <2>;
+ mac-type = "xgdm";
+ phy-mode = "usxgmii";
+ phy-handle = <&phy1>;
+ };
+
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <10500000>;
phy0: ethernet-phy@0 {
- reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2p5gbe_led0_pins>;
+ reg = <15>;
+ compatible = "ethernet-phy-ieee802.3-c45";
+ phy-mode = "xgmii";
+ };
+
+ phy1: ethernet-phy@8 {
+ reg = <8>;
compatible = "ethernet-phy-ieee802.3-c45";
- reset-gpios = <&pio 72 1>;
+ reset-gpios = <&pio 3 1>;
reset-assert-us = <100000>;
reset-deassert-us = <221000>;
};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_debugfs.c b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_debugfs.c
index 5db9291..96d446e 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_debugfs.c
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_debugfs.c
@@ -2531,7 +2531,7 @@
return -EFAULT;
if (!strncmp(buf, "prefix", 6)) {
- if (sscanf(buf, "prefix %s\n", v6_str) != 1) {
+ if (sscanf(buf, "prefix %64s\n", v6_str) != 1) {
pr_info("input error\n");
return -1;
}
@@ -2539,14 +2539,14 @@
in6_pton(v6_str, -1, (u8 *)&h->xlat.prefix, -1, NULL);
pr_info("set prefix = %pI6\n", &h->xlat.prefix);
} else if (!strncmp(buf, "pfx_len", 7)) {
- if (sscanf(buf, "pfx_len %d", &h->xlat.prefix_len) != 1) {
+ if (sscanf(buf, "pfx_len %3d", &h->xlat.prefix_len) != 1) {
pr_info("input error\n");
return -1;
}
pr_info("set pfx_len = %d\n", h->xlat.prefix_len);
} else if (!strncmp(buf, "map add", 7)) {
- if (sscanf(buf, "map add %s %s\n", v4_str, v6_str) != 2) {
+ if (sscanf(buf, "map add %64s %64s\n", v4_str, v6_str) != 2) {
pr_info("input error\n");
return -1;
}
@@ -2569,7 +2569,7 @@
list_add(&map->list, &h->xlat.map_list);
pr_info("add map: %pI4<=>%pI6\n", &map->ipv4, &map->ipv6);
} else if (!strncmp(buf, "map del", 7)) {
- if (sscanf(buf, "map del %s %s\n", v4_str, v6_str) != 2) {
+ if (sscanf(buf, "map del %64s %64s\n", v4_str, v6_str) != 2) {
pr_info("input error\n");
return -1;
}
@@ -2811,7 +2811,7 @@
u32 hnat_get_ppe_hash(struct foe_entry *entry)
{
- u32 hv1, hv2, hv3, hash;
+ u32 hv1 = 0, hv2 = 0, hv3 = 0, hash = 0;
switch (entry->bfib1.pkt_type) {
case IPV4_HNAPT:
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c
index e0d5e10..a30ec1e 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c
@@ -692,6 +692,10 @@
{
struct foe_entry *foe;
+ if (skb_hnat_entry(skb) >= hnat_priv->foe_etry_num ||
+ skb_hnat_ppe(skb) >= CFG_PPE_NUM)
+ return;
+
foe = &hnat_priv->foe_table_cpu[skb_hnat_ppe(skb)][skb_hnat_entry(skb)];
if (foe->bfib1.state != BIND &&
skb_hnat_reason(skb) == HIT_UNBIND_RATE_REACH)
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
index 282fd30..9aef092 100755
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
@@ -403,11 +403,6 @@
if (advertise < 0)
return advertise;
- if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V3)) {
- mtk_sgmii_xfi_pll_enable(eth->sgmii);
- mtk_sgmii_reset(eth, mpcs->id);
- }
-
/* Clearing IF_MODE_BIT0 switches the PCS to BASE-X mode, and
* we assume that fixes it's speed at bitrate = line rate (in
* other words, 1000Mbps or 2500Mbps).
@@ -429,6 +424,11 @@
if (link_timer < 0)
return link_timer;
+ if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V3)) {
+ mtk_sgmii_xfi_pll_enable(eth->sgmii);
+ mtk_sgmii_reset(eth, mpcs->id);
+ }
+
/* PHYA power down */
regmap_update_bits(mpcs->regmap, SGMSYS_QPHY_PWR_STATE_CTRL,
SGMII_PHYA_PWD, SGMII_PHYA_PWD);
@@ -437,6 +437,12 @@
regmap_update_bits(mpcs->regmap, SGMII_RESERVED_0,
SGMII_SW_RESET, SGMII_SW_RESET);
+ /* Configure the interface polarity */
+ if (MTK_HAS_FLAGS(mpcs->flags, MTK_SGMII_PN_SWAP))
+ regmap_update_bits(mpcs->regmap, SGMSYS_QPHY_WRAP_CTRL,
+ SGMII_PN_SWAP_MASK,
+ SGMII_PN_SWAP_TX_RX);
+
if (interface == PHY_INTERFACE_MODE_2500BASEX)
rgc3 = RG_PHY_SPEED_3_125G;
else
@@ -472,11 +478,13 @@
usleep_range(50, 100);
regmap_write(mpcs->regmap, SGMSYS_QPHY_PWR_STATE_CTRL, 0);
- if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V3)) {
- if (interface == PHY_INTERFACE_MODE_2500BASEX)
- mtk_sgmii_setup_phya_gen2(mpcs);
- else
- mtk_sgmii_setup_phya_gen1(mpcs);
+ if (mode_changed) {
+ if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V3)) {
+ if (interface == PHY_INTERFACE_MODE_2500BASEX)
+ mtk_sgmii_setup_phya_gen2(mpcs);
+ else
+ mtk_sgmii_setup_phya_gen1(mpcs);
+ }
}
return changed || mode_changed;