From 711213010514647ce1652ac40aff849f8c4a2593 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Wed, 7 Mar 2012 16:32:30 +0000
Subject: [PATCH] generic: ar8216: use bus->mdio_lock directly in
 ar8216_mii_{read,write}

SVN-Revision: 30837
---
 .../generic/files/drivers/net/phy/ar8216.c    | 27 +++++++++++++------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c
index 12cba977ea..fe329d8f1d 100644
--- a/target/linux/generic/files/drivers/net/phy/ar8216.c
+++ b/target/linux/generic/files/drivers/net/phy/ar8216.c
@@ -77,14 +77,20 @@ static u32
 ar8216_mii_read(struct ar8216_priv *priv, int reg)
 {
 	struct phy_device *phy = priv->phy;
+	struct mii_bus *bus = phy->bus;
 	u16 r1, r2, page;
 	u16 lo, hi;
 
 	split_addr((u32) reg, &r1, &r2, &page);
-	mdiobus_write(phy->bus, 0x18, 0, page);
+
+	mutex_lock(&bus->mdio_lock);
+
+	bus->write(bus, 0x18, 0, page);
 	msleep(1); /* wait for the page switch to propagate */
-	lo = mdiobus_read(phy->bus, 0x10 | r2, r1);
-	hi = mdiobus_read(phy->bus, 0x10 | r2, r1 + 1);
+	lo = bus->read(bus, 0x10 | r2, r1);
+	hi = bus->read(bus, 0x10 | r2, r1 + 1);
+
+	mutex_unlock(&bus->mdio_lock);
 
 	return (hi << 16) | lo;
 }
@@ -93,17 +99,22 @@ static void
 ar8216_mii_write(struct ar8216_priv *priv, int reg, u32 val)
 {
 	struct phy_device *phy = priv->phy;
+	struct mii_bus *bus = phy->bus;
 	u16 r1, r2, r3;
 	u16 lo, hi;
 
 	split_addr((u32) reg, &r1, &r2, &r3);
-	mdiobus_write(phy->bus, 0x18, 0, r3);
-	msleep(1); /* wait for the page switch to propagate */
-
 	lo = val & 0xffff;
 	hi = (u16) (val >> 16);
-	mdiobus_write(phy->bus, 0x10 | r2, r1 + 1, hi);
-	mdiobus_write(phy->bus, 0x10 | r2, r1, lo);
+
+	mutex_lock(&bus->mdio_lock);
+
+	bus->write(bus, 0x18, 0, r3);
+	msleep(1); /* wait for the page switch to propagate */
+	bus->write(bus, 0x10 | r2, r1 + 1, hi);
+	bus->write(bus, 0x10 | r2, r1, lo);
+
+	mutex_unlock(&bus->mdio_lock);
 }
 
 static u32
-- 
2.25.1