• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/w1/

Lines Matching refs:sl

84 	struct w1_slave *sl = dev_to_w1_slave(dev);
86 printk("%s: Releasing %s.\n", __func__, sl->name);
88 while (atomic_read(&sl->refcnt)) {
90 sl->name, atomic_read(&sl->refcnt));
95 w1_family_put(sl->family);
96 sl->master->slave_count--;
98 complete(&sl->released);
103 struct w1_slave *sl = dev_to_w1_slave(dev);
105 return sprintf(buf, "%s\n", sl->name);
110 struct w1_slave *sl = kobj_to_w1_slave(kobj);
118 memcpy(buf, (u8 *)&sl->reg_num, count);
141 struct w1_slave *sl = kobj_to_w1_slave(kobj);
143 mutex_lock(&sl->master->mutex);
144 if (w1_reset_select_slave(sl)) {
149 w1_write_block(sl->master, buf, count);
152 mutex_unlock(&sl->master->mutex);
158 struct w1_slave *sl = kobj_to_w1_slave(kobj);
160 mutex_lock(&sl->master->mutex);
161 w1_read_block(sl->master, buf, count);
162 mutex_unlock(&sl->master->mutex);
177 static int w1_default_add_slave(struct w1_slave *sl)
179 return sysfs_create_bin_file(&sl->dev.kobj, &w1_default_attr);
182 static void w1_default_remove_slave(struct w1_slave *sl)
184 sysfs_remove_bin_file(&sl->dev.kobj, &w1_default_attr);
325 struct w1_slave *sl;
328 sl = list_entry(ent, struct w1_slave, w1_slave_entry);
330 c -= snprintf(buf + PAGE_SIZE - c, c, "%s\n", sl->name);
390 struct w1_slave *sl = NULL;
399 sl = container_of(dev, struct w1_slave, dev);
401 name = sl->name;
410 if (dev->driver != &w1_slave_driver || !sl)
414 &cur_len, "W1_FID=%02X", sl->reg_num.family);
420 (unsigned long long)sl->reg_num.id);
434 static int __w1_attach_slave_device(struct w1_slave *sl)
438 sl->dev.parent = &sl->master->dev;
439 sl->dev.driver = &w1_slave_driver;
440 sl->dev.bus = &w1_bus_type;
441 sl->dev.release = &w1_slave_release;
443 snprintf(&sl->dev.bus_id[0], sizeof(sl->dev.bus_id),
445 (unsigned int) sl->reg_num.family,
446 (unsigned long long) sl->reg_num.id);
447 snprintf(&sl->name[0], sizeof(sl->name),
449 (unsigned int) sl->reg_num.family,
450 (unsigned long long) sl->reg_num.id);
452 dev_dbg(&sl->dev, "%s: registering %s as %p.\n", __func__,
453 &sl->dev.bus_id[0], sl);
455 err = device_register(&sl->dev);
457 dev_err(&sl->dev,
459 sl->dev.bus_id, err);
464 err = device_create_file(&sl->dev, &w1_slave_attr_name);
466 dev_err(&sl->dev,
468 sl->dev.bus_id, err);
473 err = sysfs_create_bin_file(&sl->dev.kobj, &w1_slave_attr_bin_id);
475 dev_err(&sl->dev,
477 sl->dev.bus_id, err);
482 if (sl->family->fops && sl->family->fops->add_slave &&
483 ((err = sl->family->fops->add_slave(sl)) < 0)) {
484 dev_err(&sl->dev,
486 sl->dev.bus_id, err);
490 list_add_tail(&sl->w1_slave_entry, &sl->master->slist);
495 sysfs_remove_bin_file(&sl->dev.kobj, &w1_slave_attr_bin_id);
497 device_remove_file(&sl->dev, &w1_slave_attr_name);
499 device_unregister(&sl->dev);
505 struct w1_slave *sl;
510 sl = kmalloc(sizeof(struct w1_slave), GFP_KERNEL);
511 if (!sl) {
518 memset(sl, 0, sizeof(*sl));
520 sl->owner = THIS_MODULE;
521 sl->master = dev;
522 set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
525 memcpy(&sl->reg_num, rn, sizeof(sl->reg_num));
526 atomic_set(&sl->refcnt, 0);
527 init_completion(&sl->released);
540 sl->family = f;
543 err = __w1_attach_slave_device(sl);
546 sl->name);
547 w1_family_put(sl->family);
548 kfree(sl);
552 sl->ttl = dev->slave_ttl;
562 static void w1_slave_detach(struct w1_slave *sl)
566 dev_dbg(&sl->dev, "%s: detaching %s [%p].\n", __func__, sl->name, sl);
568 list_del(&sl->w1_slave_entry);
570 if (sl->family->fops && sl->family->fops->remove_slave)
571 sl->family->fops->remove_slave(sl);
574 memcpy(msg.id.id, &sl->reg_num, sizeof(msg.id));
576 w1_netlink_send(sl->master, &msg);
578 sysfs_remove_bin_file(&sl->dev.kobj, &w1_slave_attr_bin_id);
579 device_remove_file(&sl->dev, &w1_slave_attr_name);
580 device_unregister(&sl->dev);
582 wait_for_completion(&sl->released);
583 kfree(sl);
625 struct w1_slave *sl = NULL;
631 list_for_each_entry(sl, &dev->slist, w1_slave_entry) {
632 if (sl->reg_num.family == id->family &&
633 sl->reg_num.id == id->id &&
634 sl->reg_num.crc == id->crc) {
637 atomic_inc(&sl->refcnt);
648 return (found)?sl:NULL;
667 struct w1_slave *sl;
686 sl = list_entry(ent, struct w1_slave, w1_slave_entry);
688 if (sl->reg_num.family == tmp->family &&
689 sl->reg_num.id == tmp->id &&
690 sl->reg_num.crc == tmp->crc) {
691 set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
693 } else if (sl->reg_num.family == tmp->family) {
791 struct w1_slave *sl, *sln;
821 list_for_each_entry_safe(sl, sln, &dev->slist, w1_slave_entry) {
822 w1_slave_detach(sl);
833 list_for_each_entry_safe(sl, sln, &dev->slist, w1_slave_entry) {
834 if (sl->family->fid == W1_FAMILY_DEFAULT) {
837 memcpy(&rn, &sl->reg_num, sizeof(rn));
838 w1_slave_detach(sl);
855 struct w1_slave *sl, *sln;
857 list_for_each_entry(sl, &dev->slist, w1_slave_entry)
858 clear_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
862 list_for_each_entry_safe(sl, sln, &dev->slist, w1_slave_entry) {
863 if (!test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags) && !--sl->ttl) {
864 w1_slave_detach(sl);
867 } else if (test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags))
868 sl->ttl = dev->slave_ttl;