1c349dbc7Sjsg /* Public domain. */ 2c349dbc7Sjsg 3c349dbc7Sjsg #ifndef _LINUX_COMPONENT_H 4c349dbc7Sjsg #define _LINUX_COMPONENT_H 5c349dbc7Sjsg 6667382c7Skettenis #include <sys/_null.h> 7667382c7Skettenis 8667382c7Skettenis struct component_match; 9667382c7Skettenis struct device; 10667382c7Skettenis 11667382c7Skettenis struct component_ops { 12667382c7Skettenis int (*bind)(struct device *, struct device *, void *); 13667382c7Skettenis void (*unbind)(struct device *, struct device *, void *); 14667382c7Skettenis }; 15667382c7Skettenis 16667382c7Skettenis struct component_master_ops { 17667382c7Skettenis int (*bind)(struct device *); 18667382c7Skettenis void (*unbind)(struct device *); 19667382c7Skettenis }; 20667382c7Skettenis 21cefff6e5Skettenis int component_add(struct device *, const struct component_ops *); 22*f005ef32Sjsg int component_add_typed(struct device *, const struct component_ops *, int); 23c349dbc7Sjsg #define component_del(a, b) 24667382c7Skettenis 25cefff6e5Skettenis int component_bind_all(struct device *, void *); 26667382c7Skettenis #define component_unbind_all(a, b) 27667382c7Skettenis 28667382c7Skettenis int component_compare_of(struct device *, void *); 29667382c7Skettenis int component_master_add_with_match(struct device *, 30667382c7Skettenis const struct component_master_ops *, struct component_match *); 31c349dbc7Sjsg 32c349dbc7Sjsg #endif 33