]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/w1/w1_family.c
Merge branch 'genirq-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-omap-h63xx.git] / drivers / w1 / w1_family.c
index 0e32c114f906ecd7688e8f7118becda7f2997233..4a099041f28a8a80a73b0d4d63da6be496efbdc8 100644 (file)
@@ -48,12 +48,12 @@ int w1_register_family(struct w1_family *newf)
 
        if (!ret) {
                atomic_set(&newf->refcnt, 0);
-               newf->need_exit = 0;
                list_add_tail(&newf->family_entry, &w1_families);
        }
        spin_unlock(&w1_flock);
 
-       w1_reconnect_slaves(newf);
+       /* check default devices against the new set of drivers */
+       w1_reconnect_slaves(newf, 1);
 
        return ret;
 }
@@ -72,11 +72,11 @@ void w1_unregister_family(struct w1_family *fent)
                        break;
                }
        }
-
-       fent->need_exit = 1;
-
        spin_unlock(&w1_flock);
 
+       /* deatch devices using this family code */
+       w1_reconnect_slaves(fent, 0);
+
        while (atomic_read(&fent->refcnt)) {
                printk(KERN_INFO "Waiting for family %u to become free: refcnt=%d.\n",
                                fent->fid, atomic_read(&fent->refcnt));
@@ -107,6 +107,11 @@ struct w1_family * w1_family_registered(u8 fid)
        return (ret) ? f : NULL;
 }
 
+static void __w1_family_put(struct w1_family *f)
+{
+       atomic_dec(&f->refcnt);
+}
+
 void w1_family_put(struct w1_family *f)
 {
        spin_lock(&w1_flock);
@@ -114,19 +119,14 @@ void w1_family_put(struct w1_family *f)
        spin_unlock(&w1_flock);
 }
 
-void __w1_family_put(struct w1_family *f)
-{
-       if (atomic_dec_and_test(&f->refcnt))
-               f->need_exit = 1;
-}
-
+#if 0
 void w1_family_get(struct w1_family *f)
 {
        spin_lock(&w1_flock);
        __w1_family_get(f);
        spin_unlock(&w1_flock);
-
 }
+#endif  /*  0  */
 
 void __w1_family_get(struct w1_family *f)
 {
@@ -135,8 +135,5 @@ void __w1_family_get(struct w1_family *f)
        smp_mb__after_atomic_inc();
 }
 
-EXPORT_SYMBOL(w1_family_get);
-EXPORT_SYMBOL(w1_family_put);
-EXPORT_SYMBOL(w1_family_registered);
 EXPORT_SYMBOL(w1_unregister_family);
 EXPORT_SYMBOL(w1_register_family);