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 struct swnode *
54 struct swnode *swnode = NULL; in software_node_to_swnode() local
63 swnode = kobj_to_swnode(k); in software_node_to_swnode()
64 if (swnode->node == node) in software_node_to_swnode()
66 swnode = NULL; in software_node_to_swnode()
71 return swnode; in software_node_to_swnode()
76 const struct swnode *swnode = to_swnode(fwnode); in to_software_node() local
78 return swnode ? swnode->node : NULL; in to_software_node()
84 struct swnode *swnode = software_node_to_swnode(node); in software_node_fwnode() local
86 return swnode ? &swnode->fwnode : NULL; in software_node_fwnode()
352 struct swnode *swnode = to_swnode(fwnode); in software_node_get() local
354 kobject_get(&swnode->kobj); in software_node_get()
356 return &swnode->fwnode; in software_node_get()
361 struct swnode *swnode = to_swnode(fwnode); in software_node_put() local
363 kobject_put(&swnode->kobj); in software_node_put()
369 struct swnode *swnode = to_swnode(fwnode); in software_node_property_present() local
371 return !!property_entry_get(swnode->node->properties, propname); in software_node_property_present()
379 struct swnode *swnode = to_swnode(fwnode); in software_node_read_int_array() local
381 return property_entry_read_int_array(swnode->node->properties, propname, in software_node_read_int_array()
389 struct swnode *swnode = to_swnode(fwnode); in software_node_read_string_array() local
391 return property_entry_read_string_array(swnode->node->properties, in software_node_read_string_array()
398 const struct swnode *swnode = to_swnode(fwnode); in software_node_get_name() local
400 if (!swnode) in software_node_get_name()
403 return kobject_name(&swnode->kobj); in software_node_get_name()
430 struct swnode *swnode = to_swnode(fwnode); in software_node_get_parent() local
432 if (!swnode || !swnode->parent) in software_node_get_parent()
435 return fwnode_handle_get(&swnode->parent->fwnode); in software_node_get_parent()
442 struct swnode *p = to_swnode(fwnode); in software_node_get_next_child()
443 struct swnode *c = to_swnode(child); in software_node_get_next_child()
452 c = list_first_entry(&p->children, struct swnode, entry); in software_node_get_next_child()
460 struct swnode *swnode = to_swnode(fwnode); in software_node_get_named_child_node() local
461 struct swnode *child; in software_node_get_named_child_node()
463 if (!swnode || list_empty(&swnode->children)) in software_node_get_named_child_node()
466 list_for_each_entry(child, &swnode->children, entry) { in software_node_get_named_child_node()
481 struct swnode *swnode = to_swnode(fwnode); in software_node_get_reference_args() local
490 if (!swnode) in software_node_get_reference_args()
493 prop = property_entry_get(swnode->node->properties, propname); in software_node_get_reference_args()
518 error = property_entry_read_int_array(swnode->node->properties, in software_node_get_reference_args()
568 struct swnode *swnode = NULL; in software_node_find_by_name() local
577 swnode = kobj_to_swnode(k); in software_node_find_by_name()
578 if (parent == swnode->node->parent && swnode->node->name && in software_node_find_by_name()
579 !strcmp(name, swnode->node->name)) { in software_node_find_by_name()
580 kobject_get(&swnode->kobj); in software_node_find_by_name()
583 swnode = NULL; in software_node_find_by_name()
588 return swnode ? swnode->node : NULL; in software_node_find_by_name()
609 struct swnode *swnode = kobj_to_swnode(kobj); in software_node_release() local
611 if (swnode->parent) { in software_node_release()
612 ida_simple_remove(&swnode->parent->child_ids, swnode->id); in software_node_release()
613 list_del(&swnode->entry); in software_node_release()
615 ida_simple_remove(&swnode_root_ids, swnode->id); in software_node_release()
618 if (swnode->allocated) { in software_node_release()
619 property_entries_free(swnode->node->properties); in software_node_release()
620 kfree(swnode->node); in software_node_release()
622 ida_destroy(&swnode->child_ids); in software_node_release()
623 kfree(swnode); in software_node_release()
632 swnode_register(const struct software_node *node, struct swnode *parent, in swnode_register()
635 struct swnode *swnode; in swnode_register() local
638 swnode = kzalloc(sizeof(*swnode), GFP_KERNEL); in swnode_register()
639 if (!swnode) { in swnode_register()
647 kfree(swnode); in swnode_register()
651 swnode->id = ret; in swnode_register()
652 swnode->node = node; in swnode_register()
653 swnode->parent = parent; in swnode_register()
654 swnode->allocated = allocated; in swnode_register()
655 swnode->kobj.kset = swnode_kset; in swnode_register()
656 swnode->fwnode.ops = &software_node_ops; in swnode_register()
658 ida_init(&swnode->child_ids); in swnode_register()
659 INIT_LIST_HEAD(&swnode->entry); in swnode_register()
660 INIT_LIST_HEAD(&swnode->children); in swnode_register()
663 ret = kobject_init_and_add(&swnode->kobj, &software_node_type, in swnode_register()
667 ret = kobject_init_and_add(&swnode->kobj, &software_node_type, in swnode_register()
669 "node%d", swnode->id); in swnode_register()
671 kobject_put(&swnode->kobj); in swnode_register()
676 list_add_tail(&swnode->entry, &parent->children); in swnode_register()
678 kobject_uevent(&swnode->kobj, KOBJ_ADD); in swnode_register()
679 return &swnode->fwnode; in swnode_register()
780 struct swnode *parent = software_node_to_swnode(node->parent); in software_node_register()
795 struct swnode *swnode; in software_node_unregister() local
797 swnode = software_node_to_swnode(node); in software_node_unregister()
798 if (swnode) in software_node_unregister()
799 fwnode_remove_software_node(&swnode->fwnode); in software_node_unregister()
808 struct swnode *p = NULL; in fwnode_create_software_node()
837 struct swnode *swnode = to_swnode(fwnode); in fwnode_remove_software_node() local
839 if (!swnode) in fwnode_remove_software_node()
842 kobject_put(&swnode->kobj); in fwnode_remove_software_node()
849 struct swnode *swnode; in software_node_notify() local
860 swnode = to_swnode(fwnode); in software_node_notify()
864 ret = sysfs_create_link(&dev->kobj, &swnode->kobj, in software_node_notify()
869 ret = sysfs_create_link(&swnode->kobj, &dev->kobj, in software_node_notify()
875 kobject_get(&swnode->kobj); in software_node_notify()
878 sysfs_remove_link(&swnode->kobj, dev_name(dev)); in software_node_notify()
880 kobject_put(&swnode->kobj); in software_node_notify()