eth: mtk-eth: fix incorrect read of phy-handle
authorWeijie Gao <weijie.gao@mediatek.com>
Sun, 28 Apr 2019 07:08:57 +0000 (15:08 +0800)
committerJoe Hershberger <joe.hershberger@ni.com>
Tue, 14 May 2019 19:43:33 +0000 (14:43 -0500)
In mt7629-rfb.dts, the phy-handle is a reference to the node phy0, not the
node itself:

phy-handle = <&phy0>;

phy0: ethernet-phy@0 {
reg = <0>;
}

However the driver used ofnode_find_subnode("phy-handle") to read the node.
It will always fail.

This patch replaces ofnode_find_subnode with dev_read_phandle_with_args to
make sure the node can be read correctly.

Cc: Joe Hershberger <joe.hershberger@ni.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/mtk_eth.c

index cc09404830a1455deb5a940851a8500c7fdb9229..0ef814c78b99283aa9e006f4e83882a0487bdef3 100644 (file)
@@ -1130,13 +1130,14 @@ static int mtk_eth_ofdata_to_platdata(struct udevice *dev)
                                             &priv->rst_gpio, GPIOD_IS_OUT);
                }
        } else {
-               subnode = ofnode_find_subnode(dev_ofnode(dev), "phy-handle");
-               if (!ofnode_valid(subnode)) {
+               ret = dev_read_phandle_with_args(dev, "phy-handle", NULL, 0,
+                                                0, &args);
+               if (ret) {
                        printf("error: phy-handle is not specified\n");
                        return ret;
                }
 
-               priv->phy_addr = ofnode_read_s32_default(subnode, "reg", -1);
+               priv->phy_addr = ofnode_read_s32_default(args.node, "reg", -1);
                if (priv->phy_addr < 0) {
                        printf("error: phy address is not specified\n");
                        return ret;