--- /dev/null
+From foo@baz Thu Dec 5 16:16:37 PST 2013
+From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
+Date: Mon, 4 Nov 2013 17:27:19 -0700
+Subject: net: mv643xx_eth: Add missing phy_addr_set in DT mode
+
+From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
+
+Commit cc9d4598 'net: mv643xx_eth: use of_phy_connect if phy_node
+present' made the call to phy_scan optional, if the DT has a link to
+the phy node.
+
+However phy_scan has the side effect of calling phy_addr_set, which
+writes the phy MDIO address to the ethernet controller. If phy_addr_set
+is not called, and the bootloader has not set the correct address then
+the driver will fail to function.
+
+Tested on Kirkwood.
+
+Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
+Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+Tested-by: Arnaud Ebalard <arno@natisbad.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/marvell/mv643xx_eth.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
+index 2c210ec..00e43b5 100644
+--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
++++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
+@@ -2890,6 +2890,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
+ PHY_INTERFACE_MODE_GMII);
+ if (!mp->phy)
+ err = -ENODEV;
++ phy_addr_set(mp, mp->phy->addr);
+ } else if (pd->phy_addr != MV643XX_ETH_PHY_NONE) {
+ mp->phy = phy_scan(mp, pd->phy_addr);
+
+--
+1.7.11.7
+
+