ipq40xx: net: ethernet: edma: update of_get_phy_mode() for 5.10
authorRobert Marko <robert.marko@sartura.hr>
Sun, 12 Sep 2021 21:00:51 +0000 (23:00 +0200)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Sat, 25 Sep 2021 17:28:54 +0000 (19:28 +0200)
In kernel v5.5 of_get_phy_mode had its API changed, so its now returning 0
or errors instead of phymode.

Phymode is now returning by passing a pointer to phy_interface_t where it
will be stored.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma_axi.c

index b5ca99598d1f480f86c4413d9b2001fe5a43c1f6..e6739261c3bf11dd0ee2cb03a4638d05705435bd 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/clk.h>
 #include <linux/string.h>
 #include <linux/reset.h>
+#include <linux/version.h>
 #include "edma.h"
 #include "ess_edma.h"
 
@@ -1184,10 +1185,17 @@ static int edma_axi_probe(struct platform_device *pdev)
 
        for (i = 0; i < edma_cinfo->num_gmac; i++) {
                if (adapter[i]->poll_required) {
-                       int phy_mode = of_get_phy_mode(np);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0)
+                       phy_interface_t phy_mode;
 
+                       err = of_get_phy_mode(np, &phy_mode);
+                       if (err)
+                               phy_mode = PHY_INTERFACE_MODE_SGMII;
+#else
+                       int phy_mode = of_get_phy_mode(np);
                        if (phy_mode < 0)
                                phy_mode = PHY_INTERFACE_MODE_SGMII;
+#endif
                        adapter[i]->phydev =
                                phy_connect(edma_netdev[i],
                                            (const char *)adapter[i]->phy_id,