]> err.no Git - linux-2.6/blobdiff - drivers/net/phy/fixed.c
PHY: remove rwsem use from phy core
[linux-2.6] / drivers / net / phy / fixed.c
index 19f7ee63276fb56a6ad4f64e0adf3200bf049a59..68c99b4c5255531d11d952fd251e14adc8cf0f55 100644 (file)
@@ -13,9 +13,7 @@
  * option) any later version.
  *
  */
-#include <linux/config.h>
 #include <linux/kernel.h>
-#include <linux/sched.h>
 #include <linux/string.h>
 #include <linux/errno.h>
 #include <linux/unistd.h>
@@ -255,7 +253,7 @@ static int fixed_mdio_register_device(int number, int speed, int duplex)
                goto device_create_fail;
        }
 
-       phydev->irq = -1;
+       phydev->irq = PHY_IGNORE_INTERRUPT;
        phydev->dev.bus = &mdio_bus_type;
 
        if(number)
@@ -278,19 +276,17 @@ static int fixed_mdio_register_device(int number, int speed, int duplex)
           artificially, we are binding the driver here by hand;
           it will be the same for all the fixed phys anyway.
         */
-       down_write(&phydev->dev.bus->subsys.rwsem);
-
        phydev->dev.driver = &fixed_mdio_driver.driver;
 
        err = phydev->dev.driver->probe(&phydev->dev);
        if(err < 0) {
                printk(KERN_ERR "Phy %s: problems with fixed driver\n",phydev->dev.bus_id);
-               up_write(&phydev->dev.bus->subsys.rwsem);
                goto probe_fail;
        }
 
-       device_bind_driver(&phydev->dev);
-       up_write(&phydev->dev.bus->subsys.rwsem);
+       err = device_bind_driver(&phydev->dev);
+       if (err)
+               goto probe_fail;
 
        return 0;
 
@@ -346,7 +342,7 @@ static int __init fixed_init(void)
        fixed_mdio_register_device(0, 100, 1);
 #endif
 
-#ifdef CONFIX_FIXED_MII_10_FDX
+#ifdef CONFIG_FIXED_MII_10_FDX
        fixed_mdio_register_device(0, 10, 1);
 #endif
        return 0;