Lines Matching refs:swnode
14 struct swnode { struct
24 struct swnode *parent; argument
32 #define kobj_to_swnode(_kobj_) container_of(_kobj_, struct swnode, kobj) argument
48 struct swnode, fwnode) : NULL; \
51 static inline struct swnode *dev_to_swnode(struct device *dev) in dev_to_swnode()
64 static struct swnode *
67 struct swnode *swnode = NULL; in software_node_to_swnode() local
76 swnode = kobj_to_swnode(k); in software_node_to_swnode()
77 if (swnode->node == node) in software_node_to_swnode()
79 swnode = NULL; in software_node_to_swnode()
84 return swnode; in software_node_to_swnode()
89 const struct swnode *swnode = to_swnode(fwnode); in to_software_node() local
91 return swnode ? swnode->node : NULL; in to_software_node()
97 struct swnode *swnode = software_node_to_swnode(node); in software_node_fwnode() local
99 return swnode ? &swnode->fwnode : NULL; in software_node_fwnode()
365 struct swnode *swnode = to_swnode(fwnode); in software_node_get() local
367 kobject_get(&swnode->kobj); in software_node_get()
369 return &swnode->fwnode; in software_node_get()
374 struct swnode *swnode = to_swnode(fwnode); in software_node_put() local
376 kobject_put(&swnode->kobj); in software_node_put()
382 struct swnode *swnode = to_swnode(fwnode); in software_node_property_present() local
384 return !!property_entry_get(swnode->node->properties, propname); in software_node_property_present()
392 struct swnode *swnode = to_swnode(fwnode); in software_node_read_int_array() local
394 return property_entry_read_int_array(swnode->node->properties, propname, in software_node_read_int_array()
402 struct swnode *swnode = to_swnode(fwnode); in software_node_read_string_array() local
404 return property_entry_read_string_array(swnode->node->properties, in software_node_read_string_array()
411 const struct swnode *swnode = to_swnode(fwnode); in software_node_get_name() local
413 if (!swnode) in software_node_get_name()
416 return kobject_name(&swnode->kobj); in software_node_get_name()
443 struct swnode *swnode = to_swnode(fwnode); in software_node_get_parent() local
445 if (!swnode || !swnode->parent) in software_node_get_parent()
448 return fwnode_handle_get(&swnode->parent->fwnode); in software_node_get_parent()
455 struct swnode *p = to_swnode(fwnode); in software_node_get_next_child()
456 struct swnode *c = to_swnode(child); in software_node_get_next_child()
467 c = list_first_entry(&p->children, struct swnode, entry); in software_node_get_next_child()
477 struct swnode *swnode = to_swnode(fwnode); in software_node_get_named_child_node() local
478 struct swnode *child; in software_node_get_named_child_node()
480 if (!swnode || list_empty(&swnode->children)) in software_node_get_named_child_node()
483 list_for_each_entry(child, &swnode->children, entry) { in software_node_get_named_child_node()
498 struct swnode *swnode = to_swnode(fwnode); in software_node_get_reference_args() local
507 if (!swnode) in software_node_get_reference_args()
510 prop = property_entry_get(swnode->node->properties, propname); in software_node_get_reference_args()
585 struct swnode *swnode = NULL; in software_node_find_by_name() local
594 swnode = kobj_to_swnode(k); in software_node_find_by_name()
595 if (parent == swnode->node->parent && swnode->node->name && in software_node_find_by_name()
596 !strcmp(name, swnode->node->name)) { in software_node_find_by_name()
597 kobject_get(&swnode->kobj); in software_node_find_by_name()
600 swnode = NULL; in software_node_find_by_name()
605 return swnode ? swnode->node : NULL; in software_node_find_by_name()
626 struct swnode *swnode = kobj_to_swnode(kobj); in software_node_release() local
628 if (swnode->parent) { in software_node_release()
629 ida_simple_remove(&swnode->parent->child_ids, swnode->id); in software_node_release()
630 list_del(&swnode->entry); in software_node_release()
632 ida_simple_remove(&swnode_root_ids, swnode->id); in software_node_release()
635 if (swnode->allocated) { in software_node_release()
636 property_entries_free(swnode->node->properties); in software_node_release()
637 kfree(swnode->node); in software_node_release()
639 ida_destroy(&swnode->child_ids); in software_node_release()
640 kfree(swnode); in software_node_release()
649 swnode_register(const struct software_node *node, struct swnode *parent, in swnode_register()
652 struct swnode *swnode; in swnode_register() local
655 swnode = kzalloc(sizeof(*swnode), GFP_KERNEL); in swnode_register()
656 if (!swnode) { in swnode_register()
664 kfree(swnode); in swnode_register()
668 swnode->id = ret; in swnode_register()
669 swnode->node = node; in swnode_register()
670 swnode->parent = parent; in swnode_register()
671 swnode->allocated = allocated; in swnode_register()
672 swnode->kobj.kset = swnode_kset; in swnode_register()
673 fwnode_init(&swnode->fwnode, &software_node_ops); in swnode_register()
675 ida_init(&swnode->child_ids); in swnode_register()
676 INIT_LIST_HEAD(&swnode->entry); in swnode_register()
677 INIT_LIST_HEAD(&swnode->children); in swnode_register()
680 ret = kobject_init_and_add(&swnode->kobj, &software_node_type, in swnode_register()
684 ret = kobject_init_and_add(&swnode->kobj, &software_node_type, in swnode_register()
686 "node%d", swnode->id); in swnode_register()
688 kobject_put(&swnode->kobj); in swnode_register()
693 list_add_tail(&swnode->entry, &parent->children); in swnode_register()
695 kobject_uevent(&swnode->kobj, KOBJ_ADD); in swnode_register()
696 return &swnode->fwnode; in swnode_register()
797 struct swnode *parent = software_node_to_swnode(node->parent); in software_node_register()
815 struct swnode *swnode; in software_node_unregister() local
817 swnode = software_node_to_swnode(node); in software_node_unregister()
818 if (swnode) in software_node_unregister()
819 fwnode_remove_software_node(&swnode->fwnode); in software_node_unregister()
828 struct swnode *p = NULL; in fwnode_create_software_node()
857 struct swnode *swnode = to_swnode(fwnode); in fwnode_remove_software_node() local
859 if (!swnode) in fwnode_remove_software_node()
862 kobject_put(&swnode->kobj); in fwnode_remove_software_node()
877 struct swnode *swnode; in device_add_software_node() local
884 swnode = software_node_to_swnode(node); in device_add_software_node()
885 if (swnode) { in device_add_software_node()
886 kobject_get(&swnode->kobj); in device_add_software_node()
892 swnode = software_node_to_swnode(node); in device_add_software_node()
895 set_secondary_fwnode(dev, &swnode->fwnode); in device_add_software_node()
918 struct swnode *swnode; in device_remove_software_node() local
920 swnode = dev_to_swnode(dev); in device_remove_software_node()
921 if (!swnode) in device_remove_software_node()
927 kobject_put(&swnode->kobj); in device_remove_software_node()
933 struct swnode *swnode; in software_node_notify() local
936 swnode = dev_to_swnode(dev); in software_node_notify()
937 if (!swnode) in software_node_notify()
942 ret = sysfs_create_link(&dev->kobj, &swnode->kobj, "software_node"); in software_node_notify()
946 ret = sysfs_create_link(&swnode->kobj, &dev->kobj, in software_node_notify()
952 kobject_get(&swnode->kobj); in software_node_notify()
955 sysfs_remove_link(&swnode->kobj, dev_name(dev)); in software_node_notify()
957 kobject_put(&swnode->kobj); in software_node_notify()