octeon: upgrade to 6.1 kernel
[openwrt/openwrt.git] / target / linux / octeon / patches-6.1 / 701-honor_sgmii_node_device_tree_status.patch
diff --git a/target/linux/octeon/patches-6.1/701-honor_sgmii_node_device_tree_status.patch b/target/linux/octeon/patches-6.1/701-honor_sgmii_node_device_tree_status.patch
new file mode 100644 (file)
index 0000000..fdfbc23
--- /dev/null
@@ -0,0 +1,27 @@
+From: Roman Kuzmitskii <damex.pp@icloud.com>
+Date: Sun, 01 Nov 2020 19:00:00 +0000
+Subject: [PATCH] staging: octeon: sgmii to honor disabled dt node status
+
+With this patch, sgmii interface device tree node could be disabled and
+that disabled interface will not be unnecessarily initialized.
+
+It solves the problem with Octeon boards that have 8 sgmii or more ports
+initialized but have nothing connected to them.
+
+Tested-by: Johannes Kimmel <fff@bareminimum.eu>
+Signed-off-by: Roman Kuzmitskii <damex.pp@icloud.com>
+--- a/drivers/staging/octeon/ethernet.c
++++ b/drivers/staging/octeon/ethernet.c
+@@ -877,8 +877,10 @@ static int cvm_oct_probe(struct platform
+                       case CVMX_HELPER_INTERFACE_MODE_SGMII:
+                               priv->phy_mode = PHY_INTERFACE_MODE_SGMII;
+-                              dev->netdev_ops = &cvm_oct_sgmii_netdev_ops;
+-                              strscpy(dev->name, "eth%d", sizeof(dev->name));
++                              if (of_device_is_available(priv->of_node)) {
++                                      dev->netdev_ops = &cvm_oct_sgmii_netdev_ops;
++                                      strscpy(dev->name, "eth%d", sizeof(dev->name));
++                              }
+                               break;
+                       case CVMX_HELPER_INTERFACE_MODE_SPI: