| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef COMPONENT_H | |
| #define COMPONENT_H | |
| #include <linux/stddef.h> | |
| struct device; | |
| struct component_ops { | |
| int (*bind)(struct device *comp, struct device *master, | |
| void *master_data); | |
| void (*unbind)(struct device *comp, struct device *master, | |
| void *master_data); | |
| }; | |
| int component_add(struct device *, const struct component_ops *); | |
| void component_del(struct device *, const struct component_ops *); | |
| int component_bind_all(struct device *master, void *master_data); | |
| void component_unbind_all(struct device *master, void *master_data); | |
| struct master; | |
| struct component_master_ops { | |
| int (*bind)(struct device *master); | |
| void (*unbind)(struct device *master); | |
| }; | |
| void component_master_del(struct device *, | |
| const struct component_master_ops *); | |
| struct component_match; | |
| int component_master_add_with_match(struct device *, | |
| const struct component_master_ops *, struct component_match *); | |
| void component_match_add_release(struct device *master, | |
| struct component_match **matchptr, | |
| void (*release)(struct device *, void *), | |
| int (*compare)(struct device *, void *), void *compare_data); | |
| static inline void component_match_add(struct device *master, | |
| struct component_match **matchptr, | |
| int (*compare)(struct device *, void *), void *compare_data) | |
| { | |
| component_match_add_release(master, matchptr, NULL, compare, | |
| compare_data); | |
| } | |
| #endif |