linux/include/linux/component.h
<<
>>
Prefs
   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
  50