Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2a41e607 RK |
2 | #ifndef COMPONENT_H |
3 | #define COMPONENT_H | |
4 | ||
ce657b1c RK |
5 | #include <linux/stddef.h> |
6 | ||
2a41e607 RK |
7 | struct device; |
8 | ||
9 | struct component_ops { | |
ce657b1c RK |
10 | int (*bind)(struct device *comp, struct device *master, |
11 | void *master_data); | |
12 | void (*unbind)(struct device *comp, struct device *master, | |
13 | void *master_data); | |
2a41e607 RK |
14 | }; |
15 | ||
16 | int component_add(struct device *, const struct component_ops *); | |
17 | void component_del(struct device *, const struct component_ops *); | |
18 | ||
ce657b1c RK |
19 | int component_bind_all(struct device *master, void *master_data); |
20 | void component_unbind_all(struct device *master, void *master_data); | |
2a41e607 RK |
21 | |
22 | struct master; | |
23 | ||
24 | struct component_master_ops { | |
ce657b1c RK |
25 | int (*bind)(struct device *master); |
26 | void (*unbind)(struct device *master); | |
2a41e607 RK |
27 | }; |
28 | ||
2a41e607 RK |
29 | void component_master_del(struct device *, |
30 | const struct component_master_ops *); | |
31 | ||
6955b582 RK |
32 | struct component_match; |
33 | ||
34 | int component_master_add_with_match(struct device *, | |
35 | const struct component_master_ops *, struct component_match *); | |
ce657b1c RK |
36 | void component_match_add_release(struct device *master, |
37 | struct component_match **matchptr, | |
38 | void (*release)(struct device *, void *), | |
6955b582 RK |
39 | int (*compare)(struct device *, void *), void *compare_data); |
40 | ||
ce657b1c RK |
41 | static inline void component_match_add(struct device *master, |
42 | struct component_match **matchptr, | |
43 | int (*compare)(struct device *, void *), void *compare_data) | |
44 | { | |
45 | component_match_add_release(master, matchptr, NULL, compare, | |
46 | compare_data); | |
47 | } | |
48 | ||
2a41e607 | 49 | #endif |