Lines Matching refs:swnode
16 struct swnode { struct
26 struct swnode *parent; argument
35 #define kobj_to_swnode(_kobj_) container_of(_kobj_, struct swnode, kobj) argument
51 struct swnode, fwnode) : NULL; \
54 static inline struct swnode *dev_to_swnode(struct device *dev) in dev_to_swnode()
67 static struct swnode *
70 struct swnode *swnode = NULL; in software_node_to_swnode() local
79 swnode = kobj_to_swnode(k); in software_node_to_swnode()
80 if (swnode->node == node) in software_node_to_swnode()
82 swnode = NULL; in software_node_to_swnode()
87 return swnode; in software_node_to_swnode()
92 const struct swnode *swnode = to_swnode(fwnode); in to_software_node() local
94 return swnode ? swnode->node : NULL; in to_software_node()
100 struct swnode *swnode = software_node_to_swnode(node); in software_node_fwnode() local
102 return swnode ? &swnode->fwnode : NULL; in software_node_fwnode()
368 struct swnode *swnode = to_swnode(fwnode); in software_node_get() local
370 kobject_get(&swnode->kobj); in software_node_get()
372 return &swnode->fwnode; in software_node_get()
377 struct swnode *swnode = to_swnode(fwnode); in software_node_put() local
379 kobject_put(&swnode->kobj); in software_node_put()
385 struct swnode *swnode = to_swnode(fwnode); in software_node_property_present() local
387 return !!property_entry_get(swnode->node->properties, propname); in software_node_property_present()
395 struct swnode *swnode = to_swnode(fwnode); in software_node_read_int_array() local
397 return property_entry_read_int_array(swnode->node->properties, propname, in software_node_read_int_array()
405 struct swnode *swnode = to_swnode(fwnode); in software_node_read_string_array() local
407 return property_entry_read_string_array(swnode->node->properties, in software_node_read_string_array()
414 const struct swnode *swnode = to_swnode(fwnode); in software_node_get_name() local
416 if (!swnode) in software_node_get_name()
419 return kobject_name(&swnode->kobj); in software_node_get_name()
446 struct swnode *swnode = to_swnode(fwnode); in software_node_get_parent() local
448 if (!swnode || !swnode->parent) in software_node_get_parent()
451 return fwnode_handle_get(&swnode->parent->fwnode); in software_node_get_parent()
458 struct swnode *p = to_swnode(fwnode); in software_node_get_next_child()
459 struct swnode *c = to_swnode(child); in software_node_get_next_child()
470 c = list_first_entry(&p->children, struct swnode, entry); in software_node_get_next_child()
480 struct swnode *swnode = to_swnode(fwnode); in software_node_get_named_child_node() local
481 struct swnode *child; in software_node_get_named_child_node()
483 if (!swnode || list_empty(&swnode->children)) in software_node_get_named_child_node()
486 list_for_each_entry(child, &swnode->children, entry) { in software_node_get_named_child_node()
501 struct swnode *swnode = to_swnode(fwnode); in software_node_get_reference_args() local
510 if (!swnode) in software_node_get_reference_args()
513 prop = property_entry_get(swnode->node->properties, propname); in software_node_get_reference_args()
538 error = property_entry_read_int_array(swnode->node->properties, in software_node_get_reference_args()
583 struct swnode *swnode = to_swnode(fwnode); in software_node_graph_get_next_endpoint() local
587 if (!swnode) in software_node_graph_get_next_endpoint()
596 parent = software_node_get(&swnode->fwnode); in software_node_graph_get_next_endpoint()
617 struct swnode *swnode = to_swnode(fwnode); in software_node_graph_get_remote_endpoint() local
621 if (!swnode) in software_node_graph_get_remote_endpoint()
624 prop = property_entry_get(swnode->node->properties, "remote-endpoint"); in software_node_graph_get_remote_endpoint()
636 struct swnode *swnode = to_swnode(fwnode); in software_node_graph_get_port_parent() local
638 swnode = swnode->parent; in software_node_graph_get_port_parent()
639 if (swnode && !strcmp(swnode->node->name, "ports")) in software_node_graph_get_port_parent()
640 swnode = swnode->parent; in software_node_graph_get_port_parent()
642 return swnode ? software_node_get(&swnode->fwnode) : NULL; in software_node_graph_get_port_parent()
649 struct swnode *swnode = to_swnode(fwnode); in software_node_graph_parse_endpoint() local
650 const char *parent_name = swnode->parent->node->name; in software_node_graph_parse_endpoint()
662 endpoint->id = swnode->id; in software_node_graph_parse_endpoint()
701 struct swnode *swnode = NULL; in software_node_find_by_name() local
710 swnode = kobj_to_swnode(k); in software_node_find_by_name()
711 if (parent == swnode->node->parent && swnode->node->name && in software_node_find_by_name()
712 !strcmp(name, swnode->node->name)) { in software_node_find_by_name()
713 kobject_get(&swnode->kobj); in software_node_find_by_name()
716 swnode = NULL; in software_node_find_by_name()
721 return swnode ? swnode->node : NULL; in software_node_find_by_name()
753 struct swnode *swnode = kobj_to_swnode(kobj); in software_node_release() local
755 if (swnode->parent) { in software_node_release()
756 ida_simple_remove(&swnode->parent->child_ids, swnode->id); in software_node_release()
757 list_del(&swnode->entry); in software_node_release()
759 ida_simple_remove(&swnode_root_ids, swnode->id); in software_node_release()
762 if (swnode->allocated) in software_node_release()
763 software_node_free(swnode->node); in software_node_release()
765 ida_destroy(&swnode->child_ids); in software_node_release()
766 kfree(swnode); in software_node_release()
775 swnode_register(const struct software_node *node, struct swnode *parent, in swnode_register()
778 struct swnode *swnode; in swnode_register() local
781 swnode = kzalloc(sizeof(*swnode), GFP_KERNEL); in swnode_register()
782 if (!swnode) in swnode_register()
788 kfree(swnode); in swnode_register()
792 swnode->id = ret; in swnode_register()
793 swnode->node = node; in swnode_register()
794 swnode->parent = parent; in swnode_register()
795 swnode->kobj.kset = swnode_kset; in swnode_register()
796 fwnode_init(&swnode->fwnode, &software_node_ops); in swnode_register()
798 ida_init(&swnode->child_ids); in swnode_register()
799 INIT_LIST_HEAD(&swnode->entry); in swnode_register()
800 INIT_LIST_HEAD(&swnode->children); in swnode_register()
803 ret = kobject_init_and_add(&swnode->kobj, &software_node_type, in swnode_register()
807 ret = kobject_init_and_add(&swnode->kobj, &software_node_type, in swnode_register()
809 "node%d", swnode->id); in swnode_register()
811 kobject_put(&swnode->kobj); in swnode_register()
819 swnode->allocated = allocated; in swnode_register()
822 list_add_tail(&swnode->entry, &parent->children); in swnode_register()
824 kobject_uevent(&swnode->kobj, KOBJ_ADD); in swnode_register()
825 return &swnode->fwnode; in swnode_register()
954 struct swnode *parent = software_node_to_swnode(node->parent); in software_node_register()
972 struct swnode *swnode; in software_node_unregister() local
974 swnode = software_node_to_swnode(node); in software_node_unregister()
975 if (swnode) in software_node_unregister()
976 fwnode_remove_software_node(&swnode->fwnode); in software_node_unregister()
986 struct swnode *p; in fwnode_create_software_node()
1011 struct swnode *swnode = to_swnode(fwnode); in fwnode_remove_software_node() local
1013 if (!swnode) in fwnode_remove_software_node()
1016 kobject_put(&swnode->kobj); in fwnode_remove_software_node()
1031 struct swnode *swnode; in device_add_software_node() local
1038 swnode = software_node_to_swnode(node); in device_add_software_node()
1039 if (swnode) { in device_add_software_node()
1040 kobject_get(&swnode->kobj); in device_add_software_node()
1046 swnode = software_node_to_swnode(node); in device_add_software_node()
1049 set_secondary_fwnode(dev, &swnode->fwnode); in device_add_software_node()
1072 struct swnode *swnode; in device_remove_software_node() local
1074 swnode = dev_to_swnode(dev); in device_remove_software_node()
1075 if (!swnode) in device_remove_software_node()
1082 kobject_put(&swnode->kobj); in device_remove_software_node()
1128 struct swnode *swnode; in software_node_notify() local
1131 swnode = dev_to_swnode(dev); in software_node_notify()
1132 if (!swnode) in software_node_notify()
1135 ret = sysfs_create_link(&dev->kobj, &swnode->kobj, "software_node"); in software_node_notify()
1139 ret = sysfs_create_link(&swnode->kobj, &dev->kobj, dev_name(dev)); in software_node_notify()
1145 kobject_get(&swnode->kobj); in software_node_notify()
1150 struct swnode *swnode; in software_node_notify_remove() local
1152 swnode = dev_to_swnode(dev); in software_node_notify_remove()
1153 if (!swnode) in software_node_notify_remove()
1156 sysfs_remove_link(&swnode->kobj, dev_name(dev)); in software_node_notify_remove()
1158 kobject_put(&swnode->kobj); in software_node_notify_remove()
1160 if (swnode->managed) { in software_node_notify_remove()
1162 kobject_put(&swnode->kobj); in software_node_notify_remove()