root/include/linux/extcon-provider.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. extcon_dev_register
  2. extcon_dev_unregister
  3. devm_extcon_dev_register
  4. devm_extcon_dev_unregister
  5. extcon_dev_allocate
  6. extcon_dev_free
  7. devm_extcon_dev_allocate
  8. devm_extcon_dev_free
  9. extcon_set_state
  10. extcon_set_state_sync
  11. extcon_sync
  12. extcon_set_property
  13. extcon_set_property_sync
  14. extcon_set_property_capability

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * External Connector (extcon) framework
   4  * - linux/include/linux/extcon-provider.h for extcon provider device driver.
   5  *
   6  * Copyright (C) 2017 Samsung Electronics
   7  * Author: Chanwoo Choi <cw00.choi@samsung.com>
   8  */
   9 
  10 #ifndef __LINUX_EXTCON_PROVIDER_H__
  11 #define __LINUX_EXTCON_PROVIDER_H__
  12 
  13 #include <linux/extcon.h>
  14 
  15 struct extcon_dev;
  16 
  17 #if IS_ENABLED(CONFIG_EXTCON)
  18 
  19 /* Following APIs register/unregister the extcon device. */
  20 extern int extcon_dev_register(struct extcon_dev *edev);
  21 extern void extcon_dev_unregister(struct extcon_dev *edev);
  22 extern int devm_extcon_dev_register(struct device *dev,
  23                                 struct extcon_dev *edev);
  24 extern void devm_extcon_dev_unregister(struct device *dev,
  25                                 struct extcon_dev *edev);
  26 
  27 /* Following APIs allocate/free the memory of the extcon device. */
  28 extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable);
  29 extern void extcon_dev_free(struct extcon_dev *edev);
  30 extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
  31                                 const unsigned int *cable);
  32 extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev);
  33 
  34 /* Synchronize the state and property value for each external connector. */
  35 extern int extcon_sync(struct extcon_dev *edev, unsigned int id);
  36 
  37 /*
  38  * Following APIs set the connected state of each external connector.
  39  * The 'id' argument indicates the defined external connector.
  40  */
  41 extern int extcon_set_state(struct extcon_dev *edev, unsigned int id,
  42                                 bool state);
  43 extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
  44                                 bool state);
  45 
  46 /*
  47  * Following APIs set the property of each external connector.
  48  * The 'id' argument indicates the defined external connector
  49  * and the 'prop' indicates the extcon property.
  50  *
  51  * And extcon_set_property_capability() set the capability of the property
  52  * for each external connector. They are used to set the capability of the
  53  * property of each external connector based on the id and property.
  54  */
  55 extern int extcon_set_property(struct extcon_dev *edev, unsigned int id,
  56                                 unsigned int prop,
  57                                 union extcon_property_value prop_val);
  58 extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id,
  59                                 unsigned int prop,
  60                                 union extcon_property_value prop_val);
  61 extern int extcon_set_property_capability(struct extcon_dev *edev,
  62                                 unsigned int id, unsigned int prop);
  63 
  64 #else /* CONFIG_EXTCON */
  65 static inline int extcon_dev_register(struct extcon_dev *edev)
  66 {
  67         return 0;
  68 }
  69 
  70 static inline void extcon_dev_unregister(struct extcon_dev *edev) { }
  71 
  72 static inline int devm_extcon_dev_register(struct device *dev,
  73                                 struct extcon_dev *edev)
  74 {
  75         return -EINVAL;
  76 }
  77 
  78 static inline void devm_extcon_dev_unregister(struct device *dev,
  79                                 struct extcon_dev *edev) { }
  80 
  81 static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable)
  82 {
  83         return ERR_PTR(-ENOSYS);
  84 }
  85 
  86 static inline void extcon_dev_free(struct extcon_dev *edev) { }
  87 
  88 static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
  89                                 const unsigned int *cable)
  90 {
  91         return ERR_PTR(-ENOSYS);
  92 }
  93 
  94 static inline void devm_extcon_dev_free(struct extcon_dev *edev) { }
  95 
  96 
  97 static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id,
  98                                 bool state)
  99 {
 100         return 0;
 101 }
 102 
 103 static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
 104                                 bool state)
 105 {
 106         return 0;
 107 }
 108 
 109 static inline int extcon_sync(struct extcon_dev *edev, unsigned int id)
 110 {
 111         return 0;
 112 }
 113 
 114 static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id,
 115                                 unsigned int prop,
 116                                 union extcon_property_value prop_val)
 117 {
 118         return 0;
 119 }
 120 
 121 static inline int extcon_set_property_sync(struct extcon_dev *edev,
 122                                 unsigned int id, unsigned int prop,
 123                                 union extcon_property_value prop_val)
 124 {
 125         return 0;
 126 }
 127 
 128 static inline int extcon_set_property_capability(struct extcon_dev *edev,
 129                                 unsigned int id, unsigned int prop)
 130 {
 131         return 0;
 132 }
 133 #endif /* CONFIG_EXTCON */
 134 #endif /* __LINUX_EXTCON_PROVIDER_H__ */

/* [<][>][^][v][top][bottom][index][help] */