at v4.15-rc9 1.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef COMPONENT_H 3#define COMPONENT_H 4 5#include <linux/stddef.h> 6 7struct device; 8 9struct component_ops { 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); 14}; 15 16int component_add(struct device *, const struct component_ops *); 17void component_del(struct device *, const struct component_ops *); 18 19int component_bind_all(struct device *master, void *master_data); 20void component_unbind_all(struct device *master, void *master_data); 21 22struct master; 23 24struct component_master_ops { 25 int (*bind)(struct device *master); 26 void (*unbind)(struct device *master); 27}; 28 29void component_master_del(struct device *, 30 const struct component_master_ops *); 31 32struct component_match; 33 34int component_master_add_with_match(struct device *, 35 const struct component_master_ops *, struct component_match *); 36void component_match_add_release(struct device *master, 37 struct component_match **matchptr, 38 void (*release)(struct device *, void *), 39 int (*compare)(struct device *, void *), void *compare_data); 40 41static 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 49#endif