Lines Matching refs:swnode

16 struct swnode {
26 struct swnode *parent;
35 #define kobj_to_swnode(_kobj_) container_of(_kobj_, struct swnode, kobj)
51 struct swnode, fwnode) : NULL; \
54 static inline struct swnode *dev_to_swnode(struct device *dev)
67 static struct swnode *
70 struct swnode *swnode = NULL;
79 swnode = kobj_to_swnode(k);
80 if (swnode->node == node)
82 swnode = NULL;
87 return swnode;
92 const struct swnode *swnode = to_swnode(fwnode);
94 return swnode ? swnode->node : NULL;
100 struct swnode *swnode = software_node_to_swnode(node);
102 return swnode ? &swnode->fwnode : NULL;
368 struct swnode *swnode = to_swnode(fwnode);
370 kobject_get(&swnode->kobj);
372 return &swnode->fwnode;
377 struct swnode *swnode = to_swnode(fwnode);
379 kobject_put(&swnode->kobj);
385 struct swnode *swnode = to_swnode(fwnode);
387 return !!property_entry_get(swnode->node->properties, propname);
395 struct swnode *swnode = to_swnode(fwnode);
397 return property_entry_read_int_array(swnode->node->properties, propname,
405 struct swnode *swnode = to_swnode(fwnode);
407 return property_entry_read_string_array(swnode->node->properties,
414 const struct swnode *swnode = to_swnode(fwnode);
416 return kobject_name(&swnode->kobj);
443 struct swnode *swnode = to_swnode(fwnode);
445 if (!swnode || !swnode->parent)
448 return fwnode_handle_get(&swnode->parent->fwnode);
455 struct swnode *p = to_swnode(fwnode);
456 struct swnode *c = to_swnode(child);
467 c = list_first_entry(&p->children, struct swnode, entry);
477 struct swnode *swnode = to_swnode(fwnode);
478 struct swnode *child;
480 if (!swnode || list_empty(&swnode->children))
483 list_for_each_entry(child, &swnode->children, entry) {
498 struct swnode *swnode = to_swnode(fwnode);
507 prop = property_entry_get(swnode->node->properties, propname);
580 struct swnode *swnode = to_swnode(fwnode);
584 if (!swnode)
593 parent = software_node_get(&swnode->fwnode);
614 struct swnode *swnode = to_swnode(fwnode);
618 if (!swnode)
621 prop = property_entry_get(swnode->node->properties, "remote-endpoint");
633 struct swnode *swnode = to_swnode(fwnode);
635 swnode = swnode->parent;
636 if (swnode && !strcmp(swnode->node->name, "ports"))
637 swnode = swnode->parent;
639 return swnode ? software_node_get(&swnode->fwnode) : NULL;
646 struct swnode *swnode = to_swnode(fwnode);
647 const char *parent_name = swnode->parent->node->name;
659 endpoint->id = swnode->id;
698 struct swnode *swnode = NULL;
707 swnode = kobj_to_swnode(k);
708 if (parent == swnode->node->parent && swnode->node->name &&
709 !strcmp(name, swnode->node->name)) {
710 kobject_get(&swnode->kobj);
713 swnode = NULL;
718 return swnode ? swnode->node : NULL;
750 struct swnode *swnode = kobj_to_swnode(kobj);
752 if (swnode->parent) {
753 ida_simple_remove(&swnode->parent->child_ids, swnode->id);
754 list_del(&swnode->entry);
756 ida_simple_remove(&swnode_root_ids, swnode->id);
759 if (swnode->allocated)
760 software_node_free(swnode->node);
762 ida_destroy(&swnode->child_ids);
763 kfree(swnode);
772 swnode_register(const struct software_node *node, struct swnode *parent,
775 struct swnode *swnode;
778 swnode = kzalloc(sizeof(*swnode), GFP_KERNEL);
779 if (!swnode)
785 kfree(swnode);
789 swnode->id = ret;
790 swnode->node = node;
791 swnode->parent = parent;
792 swnode->kobj.kset = swnode_kset;
793 fwnode_init(&swnode->fwnode, &software_node_ops);
795 ida_init(&swnode->child_ids);
796 INIT_LIST_HEAD(&swnode->entry);
797 INIT_LIST_HEAD(&swnode->children);
800 ret = kobject_init_and_add(&swnode->kobj, &software_node_type,
804 ret = kobject_init_and_add(&swnode->kobj, &software_node_type,
806 "node%d", swnode->id);
808 kobject_put(&swnode->kobj);
816 swnode->allocated = allocated;
819 list_add_tail(&swnode->entry, &parent->children);
821 kobject_uevent(&swnode->kobj, KOBJ_ADD);
822 return &swnode->fwnode;
890 struct swnode *parent = software_node_to_swnode(node->parent);
908 struct swnode *swnode;
910 swnode = software_node_to_swnode(node);
911 if (swnode)
912 fwnode_remove_software_node(&swnode->fwnode);
922 struct swnode *p;
947 struct swnode *swnode = to_swnode(fwnode);
949 if (!swnode)
952 kobject_put(&swnode->kobj);
967 struct swnode *swnode;
974 swnode = software_node_to_swnode(node);
975 if (swnode) {
976 kobject_get(&swnode->kobj);
982 swnode = software_node_to_swnode(node);
985 set_secondary_fwnode(dev, &swnode->fwnode);
1008 struct swnode *swnode;
1010 swnode = dev_to_swnode(dev);
1011 if (!swnode)
1018 kobject_put(&swnode->kobj);
1064 struct swnode *swnode;
1067 swnode = dev_to_swnode(dev);
1068 if (!swnode)
1071 ret = sysfs_create_link(&dev->kobj, &swnode->kobj, "software_node");
1075 ret = sysfs_create_link(&swnode->kobj, &dev->kobj, dev_name(dev));
1081 kobject_get(&swnode->kobj);
1086 struct swnode *swnode;
1088 swnode = dev_to_swnode(dev);
1089 if (!swnode)
1092 sysfs_remove_link(&swnode->kobj, dev_name(dev));
1094 kobject_put(&swnode->kobj);
1096 if (swnode->managed) {
1098 kobject_put(&swnode->kobj);