#include <linux/pinctrl/consumer.h>
 #include <linux/phy.h>
 #include <linux/regmap.h>
+#include <linux/of.h>
 
 #include "../phylib.h"
 #include "mtk.h"
 {
        struct device_node *np = dev_of_node(&phydev->mdio.bus->dev);
        struct mtk_socphy_shared *shared = phy_package_get_priv(phydev);
+       struct device_node *pio_np;
        struct regmap *regmap;
        u32 reg;
        int ret;
         * The 4 bits in TPBANK0 are kept as package shared data and are used to
         * set LED polarity for each of the LED0.
         */
-       regmap = syscon_regmap_lookup_by_phandle(np, "mediatek,pio");
+       pio_np = of_parse_phandle(np, "mediatek,pio", 0);
+       if (!pio_np)
+               return -ENODEV;
+
+       regmap = device_node_to_regmap(pio_np);
+       of_node_put(pio_np);
+
        if (IS_ERR(regmap))
                return PTR_ERR(regmap);