]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/ucc_geth_mii.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm
[linux-2.6-omap-h63xx.git] / drivers / net / ucc_geth_mii.c
index df884f0ad8e5860be83668b47ef6b03ffc7fe0d8..2af490781005d63dbfe5eb1322ab7142c9c178ea 100644 (file)
@@ -109,7 +109,7 @@ int uec_mdio_reset(struct mii_bus *bus)
        struct ucc_mii_mng __iomem *regs = (void __iomem *)bus->priv;
        unsigned int timeout = PHY_INIT_TIMEOUT;
 
-       spin_lock_bh(&bus->mdio_lock);
+       mutex_lock(&bus->mdio_lock);
 
        /* Reset the management interface */
        out_be32(&regs->miimcfg, MIIMCFG_RESET_MANAGEMENT);
@@ -121,7 +121,7 @@ int uec_mdio_reset(struct mii_bus *bus)
        while ((in_be32(&regs->miimind) & MIIMIND_BUSY) && timeout--)
                cpu_relax();
 
-       spin_unlock_bh(&bus->mdio_lock);
+       mutex_unlock(&bus->mdio_lock);
 
        if (timeout <= 0) {
                printk(KERN_ERR "%s: The MII Bus is stuck!\n", bus->name);
@@ -157,7 +157,7 @@ static int uec_mdio_probe(struct of_device *ofdev, const struct of_device_id *ma
        if (err)
                goto reg_map_fail;
 
-       new_bus->id = res.start;
+       snprintf(new_bus->id, MII_BUS_ID_SIZE, "%x", res.start);
 
        new_bus->irq = kmalloc(32 * sizeof(int), GFP_KERNEL);
 
@@ -203,9 +203,14 @@ static int uec_mdio_probe(struct of_device *ofdev, const struct of_device_id *ma
                if ((res.start >= tempres.start) &&
                    (res.end <= tempres.end)) {
                        /* set this UCC to be the MII master */
-                       const u32 *id = of_get_property(tempnp, "device-id", NULL);
-                       if (id == NULL)
-                               goto bus_register_fail;
+                       const u32 *id;
+
+                       id = of_get_property(tempnp, "cell-index", NULL);
+                       if (!id) {
+                               id = of_get_property(tempnp, "device-id", NULL);
+                               if (!id)
+                                       goto bus_register_fail;
+                       }
 
                        ucc_set_qe_mux_mii_mng(*id - 1);
 
@@ -256,6 +261,9 @@ static struct of_device_id uec_mdio_match[] = {
                .type = "mdio",
                .compatible = "ucc_geth_phy",
        },
+       {
+               .compatible = "fsl,ucc-mdio",
+       },
        {},
 };