ath79: ag71xx: make kernel 5.10 compatible
[openwrt/openwrt.git] / target / linux / ath79 / files / drivers / net / ethernet / atheros / ag71xx / ag71xx_main.c
index 07d9992ca7c91a8a6ebeb957284ebb94c89183cb..2767ad76421244c3eb7afa48b824325a68ff249c 100644 (file)
@@ -936,7 +936,11 @@ __ag71xx_link_adjust(struct ag71xx *ag, bool update)
                 * The wr, rr functions cannot be used since this hidden register
                 * is outside of the normal ag71xx register block.
                 */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
+               void __iomem *dam = ioremap(0xb90001bc, 0x4);
+#else
                void __iomem *dam = ioremap_nocache(0xb90001bc, 0x4);
+#endif
                if (dam) {
                        __raw_writel(__raw_readl(dam) & ~BIT(27), dam);
                        (void)__raw_readl(dam);
@@ -1193,7 +1197,11 @@ static void ag71xx_oom_timer_handler(struct timer_list *t)
        napi_schedule(&ag->napi);
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
+static void ag71xx_tx_timeout(struct net_device *dev, unsigned int txqueue)
+#else
 static void ag71xx_tx_timeout(struct net_device *dev)
+#endif
 {
        struct ag71xx *ag = netdev_priv(dev);
 
@@ -1579,15 +1587,25 @@ static int ag71xx_probe(struct platform_device *pdev)
                ag->pllregmap = NULL;
        }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
+       ag->mac_base = devm_ioremap(&pdev->dev, res->start,
+                                   res->end - res->start + 1);
+#else
        ag->mac_base = devm_ioremap_nocache(&pdev->dev, res->start,
                                            res->end - res->start + 1);
+#endif
        if (!ag->mac_base)
                return -ENOMEM;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
        if (res) {
-               ag->mii_base = devm_ioremap_nocache(&pdev->dev, res->start,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
+               ag->mii_base = devm_ioremap(&pdev->dev, res->start,
                                            res->end - res->start + 1);
+#else
+               ag->mii_base = devm_ioremap_nocache(&pdev->dev, res->start,
+                                                   res->end - res->start + 1);
+#endif
                if (!ag->mii_base)
                        return -ENOMEM;
        }
@@ -1667,7 +1685,12 @@ static int ag71xx_probe(struct platform_device *pdev)
                memcpy(dev->dev_addr, mac_addr, ETH_ALEN);
        }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)
+       of_get_phy_mode(np, &ag->phy_if_mode);
+#else
        ag->phy_if_mode = of_get_phy_mode(np);
+#endif
+
        if (ag->phy_if_mode < 0) {
                dev_err(&pdev->dev, "missing phy-mode property in DT\n");
                return ag->phy_if_mode;