LCOV - code coverage report
Current view: top level - include/linux/gpio - consumer.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 4 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef __LINUX_GPIO_CONSUMER_H
       3             : #define __LINUX_GPIO_CONSUMER_H
       4             : 
       5             : #include <linux/bits.h>
       6             : #include <linux/bug.h>
       7             : #include <linux/compiler_types.h>
       8             : #include <linux/err.h>
       9             : 
      10             : struct device;
      11             : 
      12             : /**
      13             :  * Opaque descriptor for a GPIO. These are obtained using gpiod_get() and are
      14             :  * preferable to the old integer-based handles.
      15             :  *
      16             :  * Contrary to integers, a pointer to a gpio_desc is guaranteed to be valid
      17             :  * until the GPIO is released.
      18             :  */
      19             : struct gpio_desc;
      20             : 
      21             : /**
      22             :  * Opaque descriptor for a structure of GPIO array attributes.  This structure
      23             :  * is attached to struct gpiod_descs obtained from gpiod_get_array() and can be
      24             :  * passed back to get/set array functions in order to activate fast processing
      25             :  * path if applicable.
      26             :  */
      27             : struct gpio_array;
      28             : 
      29             : /**
      30             :  * Struct containing an array of descriptors that can be obtained using
      31             :  * gpiod_get_array().
      32             :  */
      33             : struct gpio_descs {
      34             :         struct gpio_array *info;
      35             :         unsigned int ndescs;
      36             :         struct gpio_desc *desc[];
      37             : };
      38             : 
      39             : #define GPIOD_FLAGS_BIT_DIR_SET         BIT(0)
      40             : #define GPIOD_FLAGS_BIT_DIR_OUT         BIT(1)
      41             : #define GPIOD_FLAGS_BIT_DIR_VAL         BIT(2)
      42             : #define GPIOD_FLAGS_BIT_OPEN_DRAIN      BIT(3)
      43             : #define GPIOD_FLAGS_BIT_NONEXCLUSIVE    BIT(4)
      44             : 
      45             : /**
      46             :  * Optional flags that can be passed to one of gpiod_* to configure direction
      47             :  * and output value. These values cannot be OR'd.
      48             :  */
      49             : enum gpiod_flags {
      50             :         GPIOD_ASIS      = 0,
      51             :         GPIOD_IN        = GPIOD_FLAGS_BIT_DIR_SET,
      52             :         GPIOD_OUT_LOW   = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT,
      53             :         GPIOD_OUT_HIGH  = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT |
      54             :                           GPIOD_FLAGS_BIT_DIR_VAL,
      55             :         GPIOD_OUT_LOW_OPEN_DRAIN = GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_OPEN_DRAIN,
      56             :         GPIOD_OUT_HIGH_OPEN_DRAIN = GPIOD_OUT_HIGH | GPIOD_FLAGS_BIT_OPEN_DRAIN,
      57             : };
      58             : 
      59             : #ifdef CONFIG_GPIOLIB
      60             : 
      61             : /* Return the number of GPIOs associated with a device / function */
      62             : int gpiod_count(struct device *dev, const char *con_id);
      63             : 
      64             : /* Acquire and dispose GPIOs */
      65             : struct gpio_desc *__must_check gpiod_get(struct device *dev,
      66             :                                          const char *con_id,
      67             :                                          enum gpiod_flags flags);
      68             : struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
      69             :                                                const char *con_id,
      70             :                                                unsigned int idx,
      71             :                                                enum gpiod_flags flags);
      72             : struct gpio_desc *__must_check gpiod_get_optional(struct device *dev,
      73             :                                                   const char *con_id,
      74             :                                                   enum gpiod_flags flags);
      75             : struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev,
      76             :                                                         const char *con_id,
      77             :                                                         unsigned int index,
      78             :                                                         enum gpiod_flags flags);
      79             : struct gpio_descs *__must_check gpiod_get_array(struct device *dev,
      80             :                                                 const char *con_id,
      81             :                                                 enum gpiod_flags flags);
      82             : struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev,
      83             :                                                         const char *con_id,
      84             :                                                         enum gpiod_flags flags);
      85             : void gpiod_put(struct gpio_desc *desc);
      86             : void gpiod_put_array(struct gpio_descs *descs);
      87             : 
      88             : struct gpio_desc *__must_check devm_gpiod_get(struct device *dev,
      89             :                                               const char *con_id,
      90             :                                               enum gpiod_flags flags);
      91             : struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev,
      92             :                                                     const char *con_id,
      93             :                                                     unsigned int idx,
      94             :                                                     enum gpiod_flags flags);
      95             : struct gpio_desc *__must_check devm_gpiod_get_optional(struct device *dev,
      96             :                                                        const char *con_id,
      97             :                                                        enum gpiod_flags flags);
      98             : struct gpio_desc *__must_check
      99             : devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
     100             :                               unsigned int index, enum gpiod_flags flags);
     101             : struct gpio_descs *__must_check devm_gpiod_get_array(struct device *dev,
     102             :                                                      const char *con_id,
     103             :                                                      enum gpiod_flags flags);
     104             : struct gpio_descs *__must_check
     105             : devm_gpiod_get_array_optional(struct device *dev, const char *con_id,
     106             :                               enum gpiod_flags flags);
     107             : void devm_gpiod_put(struct device *dev, struct gpio_desc *desc);
     108             : void devm_gpiod_unhinge(struct device *dev, struct gpio_desc *desc);
     109             : void devm_gpiod_put_array(struct device *dev, struct gpio_descs *descs);
     110             : 
     111             : int gpiod_get_direction(struct gpio_desc *desc);
     112             : int gpiod_direction_input(struct gpio_desc *desc);
     113             : int gpiod_direction_output(struct gpio_desc *desc, int value);
     114             : int gpiod_direction_output_raw(struct gpio_desc *desc, int value);
     115             : 
     116             : /* Value get/set from non-sleeping context */
     117             : int gpiod_get_value(const struct gpio_desc *desc);
     118             : int gpiod_get_array_value(unsigned int array_size,
     119             :                           struct gpio_desc **desc_array,
     120             :                           struct gpio_array *array_info,
     121             :                           unsigned long *value_bitmap);
     122             : void gpiod_set_value(struct gpio_desc *desc, int value);
     123             : int gpiod_set_array_value(unsigned int array_size,
     124             :                           struct gpio_desc **desc_array,
     125             :                           struct gpio_array *array_info,
     126             :                           unsigned long *value_bitmap);
     127             : int gpiod_get_raw_value(const struct gpio_desc *desc);
     128             : int gpiod_get_raw_array_value(unsigned int array_size,
     129             :                               struct gpio_desc **desc_array,
     130             :                               struct gpio_array *array_info,
     131             :                               unsigned long *value_bitmap);
     132             : void gpiod_set_raw_value(struct gpio_desc *desc, int value);
     133             : int gpiod_set_raw_array_value(unsigned int array_size,
     134             :                               struct gpio_desc **desc_array,
     135             :                               struct gpio_array *array_info,
     136             :                               unsigned long *value_bitmap);
     137             : 
     138             : /* Value get/set from sleeping context */
     139             : int gpiod_get_value_cansleep(const struct gpio_desc *desc);
     140             : int gpiod_get_array_value_cansleep(unsigned int array_size,
     141             :                                    struct gpio_desc **desc_array,
     142             :                                    struct gpio_array *array_info,
     143             :                                    unsigned long *value_bitmap);
     144             : void gpiod_set_value_cansleep(struct gpio_desc *desc, int value);
     145             : int gpiod_set_array_value_cansleep(unsigned int array_size,
     146             :                                    struct gpio_desc **desc_array,
     147             :                                    struct gpio_array *array_info,
     148             :                                    unsigned long *value_bitmap);
     149             : int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc);
     150             : int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
     151             :                                        struct gpio_desc **desc_array,
     152             :                                        struct gpio_array *array_info,
     153             :                                        unsigned long *value_bitmap);
     154             : void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value);
     155             : int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
     156             :                                        struct gpio_desc **desc_array,
     157             :                                        struct gpio_array *array_info,
     158             :                                        unsigned long *value_bitmap);
     159             : 
     160             : int gpiod_set_config(struct gpio_desc *desc, unsigned long config);
     161             : int gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce);
     162             : int gpiod_set_transitory(struct gpio_desc *desc, bool transitory);
     163             : void gpiod_toggle_active_low(struct gpio_desc *desc);
     164             : 
     165             : int gpiod_is_active_low(const struct gpio_desc *desc);
     166             : int gpiod_cansleep(const struct gpio_desc *desc);
     167             : 
     168             : int gpiod_to_irq(const struct gpio_desc *desc);
     169             : int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name);
     170             : 
     171             : /* Convert between the old gpio_ and new gpiod_ interfaces */
     172             : struct gpio_desc *gpio_to_desc(unsigned gpio);
     173             : int desc_to_gpio(const struct gpio_desc *desc);
     174             : 
     175             : /* Child properties interface */
     176             : struct fwnode_handle;
     177             : 
     178             : struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
     179             :                                          const char *propname, int index,
     180             :                                          enum gpiod_flags dflags,
     181             :                                          const char *label);
     182             : struct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode,
     183             :                                          const char *con_id, int index,
     184             :                                          enum gpiod_flags flags,
     185             :                                          const char *label);
     186             : struct gpio_desc *devm_fwnode_gpiod_get_index(struct device *dev,
     187             :                                               struct fwnode_handle *child,
     188             :                                               const char *con_id, int index,
     189             :                                               enum gpiod_flags flags,
     190             :                                               const char *label);
     191             : 
     192             : #else /* CONFIG_GPIOLIB */
     193             : 
     194             : #include <linux/kernel.h>
     195             : 
     196             : static inline int gpiod_count(struct device *dev, const char *con_id)
     197             : {
     198             :         return 0;
     199             : }
     200             : 
     201             : static inline struct gpio_desc *__must_check gpiod_get(struct device *dev,
     202             :                                                        const char *con_id,
     203             :                                                        enum gpiod_flags flags)
     204             : {
     205             :         return ERR_PTR(-ENOSYS);
     206             : }
     207             : static inline struct gpio_desc *__must_check
     208             : gpiod_get_index(struct device *dev,
     209             :                 const char *con_id,
     210             :                 unsigned int idx,
     211             :                 enum gpiod_flags flags)
     212             : {
     213             :         return ERR_PTR(-ENOSYS);
     214             : }
     215             : 
     216             : static inline struct gpio_desc *__must_check
     217             : gpiod_get_optional(struct device *dev, const char *con_id,
     218             :                    enum gpiod_flags flags)
     219             : {
     220             :         return NULL;
     221             : }
     222             : 
     223             : static inline struct gpio_desc *__must_check
     224             : gpiod_get_index_optional(struct device *dev, const char *con_id,
     225             :                          unsigned int index, enum gpiod_flags flags)
     226             : {
     227             :         return NULL;
     228             : }
     229             : 
     230             : static inline struct gpio_descs *__must_check
     231             : gpiod_get_array(struct device *dev, const char *con_id,
     232             :                 enum gpiod_flags flags)
     233             : {
     234             :         return ERR_PTR(-ENOSYS);
     235             : }
     236             : 
     237             : static inline struct gpio_descs *__must_check
     238             : gpiod_get_array_optional(struct device *dev, const char *con_id,
     239             :                          enum gpiod_flags flags)
     240             : {
     241             :         return NULL;
     242             : }
     243             : 
     244             : static inline void gpiod_put(struct gpio_desc *desc)
     245             : {
     246             :         might_sleep();
     247             : 
     248             :         /* GPIO can never have been requested */
     249             :         WARN_ON(desc);
     250             : }
     251             : 
     252             : static inline void devm_gpiod_unhinge(struct device *dev,
     253             :                                       struct gpio_desc *desc)
     254             : {
     255             :         might_sleep();
     256             : 
     257             :         /* GPIO can never have been requested */
     258             :         WARN_ON(desc);
     259             : }
     260             : 
     261             : static inline void gpiod_put_array(struct gpio_descs *descs)
     262             : {
     263             :         might_sleep();
     264             : 
     265             :         /* GPIO can never have been requested */
     266             :         WARN_ON(descs);
     267             : }
     268             : 
     269             : static inline struct gpio_desc *__must_check
     270             : devm_gpiod_get(struct device *dev,
     271             :                  const char *con_id,
     272             :                  enum gpiod_flags flags)
     273             : {
     274             :         return ERR_PTR(-ENOSYS);
     275             : }
     276             : static inline
     277             : struct gpio_desc *__must_check
     278             : devm_gpiod_get_index(struct device *dev,
     279             :                        const char *con_id,
     280             :                        unsigned int idx,
     281             :                        enum gpiod_flags flags)
     282             : {
     283             :         return ERR_PTR(-ENOSYS);
     284             : }
     285             : 
     286             : static inline struct gpio_desc *__must_check
     287           0 : devm_gpiod_get_optional(struct device *dev, const char *con_id,
     288             :                           enum gpiod_flags flags)
     289             : {
     290           0 :         return NULL;
     291             : }
     292             : 
     293             : static inline struct gpio_desc *__must_check
     294             : devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
     295             :                                 unsigned int index, enum gpiod_flags flags)
     296             : {
     297             :         return NULL;
     298             : }
     299             : 
     300             : static inline struct gpio_descs *__must_check
     301             : devm_gpiod_get_array(struct device *dev, const char *con_id,
     302             :                      enum gpiod_flags flags)
     303             : {
     304             :         return ERR_PTR(-ENOSYS);
     305             : }
     306             : 
     307             : static inline struct gpio_descs *__must_check
     308             : devm_gpiod_get_array_optional(struct device *dev, const char *con_id,
     309             :                               enum gpiod_flags flags)
     310             : {
     311             :         return NULL;
     312             : }
     313             : 
     314             : static inline void devm_gpiod_put(struct device *dev, struct gpio_desc *desc)
     315             : {
     316             :         might_sleep();
     317             : 
     318             :         /* GPIO can never have been requested */
     319             :         WARN_ON(desc);
     320             : }
     321             : 
     322             : static inline void devm_gpiod_put_array(struct device *dev,
     323             :                                         struct gpio_descs *descs)
     324             : {
     325             :         might_sleep();
     326             : 
     327             :         /* GPIO can never have been requested */
     328             :         WARN_ON(descs);
     329             : }
     330             : 
     331             : 
     332             : static inline int gpiod_get_direction(const struct gpio_desc *desc)
     333             : {
     334             :         /* GPIO can never have been requested */
     335             :         WARN_ON(desc);
     336             :         return -ENOSYS;
     337             : }
     338             : static inline int gpiod_direction_input(struct gpio_desc *desc)
     339             : {
     340             :         /* GPIO can never have been requested */
     341             :         WARN_ON(desc);
     342             :         return -ENOSYS;
     343             : }
     344             : static inline int gpiod_direction_output(struct gpio_desc *desc, int value)
     345             : {
     346             :         /* GPIO can never have been requested */
     347             :         WARN_ON(desc);
     348             :         return -ENOSYS;
     349             : }
     350             : static inline int gpiod_direction_output_raw(struct gpio_desc *desc, int value)
     351             : {
     352             :         /* GPIO can never have been requested */
     353             :         WARN_ON(desc);
     354             :         return -ENOSYS;
     355             : }
     356             : 
     357             : 
     358             : static inline int gpiod_get_value(const struct gpio_desc *desc)
     359             : {
     360             :         /* GPIO can never have been requested */
     361             :         WARN_ON(desc);
     362             :         return 0;
     363             : }
     364             : static inline int gpiod_get_array_value(unsigned int array_size,
     365             :                                         struct gpio_desc **desc_array,
     366             :                                         struct gpio_array *array_info,
     367             :                                         unsigned long *value_bitmap)
     368             : {
     369             :         /* GPIO can never have been requested */
     370             :         WARN_ON(desc_array);
     371             :         return 0;
     372             : }
     373           0 : static inline void gpiod_set_value(struct gpio_desc *desc, int value)
     374             : {
     375             :         /* GPIO can never have been requested */
     376           0 :         WARN_ON(desc);
     377             : }
     378             : static inline int gpiod_set_array_value(unsigned int array_size,
     379             :                                         struct gpio_desc **desc_array,
     380             :                                         struct gpio_array *array_info,
     381             :                                         unsigned long *value_bitmap)
     382             : {
     383             :         /* GPIO can never have been requested */
     384             :         WARN_ON(desc_array);
     385             :         return 0;
     386             : }
     387             : static inline int gpiod_get_raw_value(const struct gpio_desc *desc)
     388             : {
     389             :         /* GPIO can never have been requested */
     390             :         WARN_ON(desc);
     391             :         return 0;
     392             : }
     393             : static inline int gpiod_get_raw_array_value(unsigned int array_size,
     394             :                                             struct gpio_desc **desc_array,
     395             :                                             struct gpio_array *array_info,
     396             :                                             unsigned long *value_bitmap)
     397             : {
     398             :         /* GPIO can never have been requested */
     399             :         WARN_ON(desc_array);
     400             :         return 0;
     401             : }
     402             : static inline void gpiod_set_raw_value(struct gpio_desc *desc, int value)
     403             : {
     404             :         /* GPIO can never have been requested */
     405             :         WARN_ON(desc);
     406             : }
     407             : static inline int gpiod_set_raw_array_value(unsigned int array_size,
     408             :                                             struct gpio_desc **desc_array,
     409             :                                             struct gpio_array *array_info,
     410             :                                             unsigned long *value_bitmap)
     411             : {
     412             :         /* GPIO can never have been requested */
     413             :         WARN_ON(desc_array);
     414             :         return 0;
     415             : }
     416             : 
     417             : static inline int gpiod_get_value_cansleep(const struct gpio_desc *desc)
     418             : {
     419             :         /* GPIO can never have been requested */
     420             :         WARN_ON(desc);
     421             :         return 0;
     422             : }
     423             : static inline int gpiod_get_array_value_cansleep(unsigned int array_size,
     424             :                                      struct gpio_desc **desc_array,
     425             :                                      struct gpio_array *array_info,
     426             :                                      unsigned long *value_bitmap)
     427             : {
     428             :         /* GPIO can never have been requested */
     429             :         WARN_ON(desc_array);
     430             :         return 0;
     431             : }
     432             : static inline void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
     433             : {
     434             :         /* GPIO can never have been requested */
     435             :         WARN_ON(desc);
     436             : }
     437             : static inline int gpiod_set_array_value_cansleep(unsigned int array_size,
     438             :                                             struct gpio_desc **desc_array,
     439             :                                             struct gpio_array *array_info,
     440             :                                             unsigned long *value_bitmap)
     441             : {
     442             :         /* GPIO can never have been requested */
     443             :         WARN_ON(desc_array);
     444             :         return 0;
     445             : }
     446             : static inline int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)
     447             : {
     448             :         /* GPIO can never have been requested */
     449             :         WARN_ON(desc);
     450             :         return 0;
     451             : }
     452             : static inline int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
     453             :                                                struct gpio_desc **desc_array,
     454             :                                                struct gpio_array *array_info,
     455             :                                                unsigned long *value_bitmap)
     456             : {
     457             :         /* GPIO can never have been requested */
     458             :         WARN_ON(desc_array);
     459             :         return 0;
     460             : }
     461             : static inline void gpiod_set_raw_value_cansleep(struct gpio_desc *desc,
     462             :                                                 int value)
     463             : {
     464             :         /* GPIO can never have been requested */
     465             :         WARN_ON(desc);
     466             : }
     467             : static inline int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
     468             :                                                 struct gpio_desc **desc_array,
     469             :                                                 struct gpio_array *array_info,
     470             :                                                 unsigned long *value_bitmap)
     471             : {
     472             :         /* GPIO can never have been requested */
     473             :         WARN_ON(desc_array);
     474             :         return 0;
     475             : }
     476             : 
     477             : static inline int gpiod_set_config(struct gpio_desc *desc, unsigned long config)
     478             : {
     479             :         /* GPIO can never have been requested */
     480             :         WARN_ON(desc);
     481             :         return -ENOSYS;
     482             : }
     483             : 
     484             : static inline int gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce)
     485             : {
     486             :         /* GPIO can never have been requested */
     487             :         WARN_ON(desc);
     488             :         return -ENOSYS;
     489             : }
     490             : 
     491             : static inline int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
     492             : {
     493             :         /* GPIO can never have been requested */
     494             :         WARN_ON(desc);
     495             :         return -ENOSYS;
     496             : }
     497             : 
     498             : static inline void gpiod_toggle_active_low(struct gpio_desc *desc)
     499             : {
     500             :         /* GPIO can never have been requested */
     501             :         WARN_ON(desc);
     502             : }
     503             : 
     504             : static inline int gpiod_is_active_low(const struct gpio_desc *desc)
     505             : {
     506             :         /* GPIO can never have been requested */
     507             :         WARN_ON(desc);
     508             :         return 0;
     509             : }
     510             : static inline int gpiod_cansleep(const struct gpio_desc *desc)
     511             : {
     512             :         /* GPIO can never have been requested */
     513             :         WARN_ON(desc);
     514             :         return 0;
     515             : }
     516             : 
     517             : static inline int gpiod_to_irq(const struct gpio_desc *desc)
     518             : {
     519             :         /* GPIO can never have been requested */
     520             :         WARN_ON(desc);
     521             :         return -EINVAL;
     522             : }
     523             : 
     524             : static inline int gpiod_set_consumer_name(struct gpio_desc *desc,
     525             :                                           const char *name)
     526             : {
     527             :         /* GPIO can never have been requested */
     528             :         WARN_ON(desc);
     529             :         return -EINVAL;
     530             : }
     531             : 
     532             : static inline struct gpio_desc *gpio_to_desc(unsigned gpio)
     533             : {
     534             :         return NULL;
     535             : }
     536             : 
     537             : static inline int desc_to_gpio(const struct gpio_desc *desc)
     538             : {
     539             :         /* GPIO can never have been requested */
     540             :         WARN_ON(desc);
     541             :         return -EINVAL;
     542             : }
     543             : 
     544             : /* Child properties interface */
     545             : struct fwnode_handle;
     546             : 
     547             : static inline
     548             : struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
     549             :                                          const char *propname, int index,
     550             :                                          enum gpiod_flags dflags,
     551             :                                          const char *label)
     552             : {
     553             :         return ERR_PTR(-ENOSYS);
     554             : }
     555             : 
     556             : static inline
     557             : struct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode,
     558             :                                          const char *con_id, int index,
     559             :                                          enum gpiod_flags flags,
     560             :                                          const char *label)
     561             : {
     562             :         return ERR_PTR(-ENOSYS);
     563             : }
     564             : 
     565             : static inline
     566             : struct gpio_desc *devm_fwnode_gpiod_get_index(struct device *dev,
     567             :                                               struct fwnode_handle *fwnode,
     568             :                                               const char *con_id, int index,
     569             :                                               enum gpiod_flags flags,
     570             :                                               const char *label)
     571             : {
     572             :         return ERR_PTR(-ENOSYS);
     573             : }
     574             : 
     575             : #endif /* CONFIG_GPIOLIB */
     576             : 
     577             : static inline
     578             : struct gpio_desc *devm_fwnode_gpiod_get(struct device *dev,
     579             :                                         struct fwnode_handle *fwnode,
     580             :                                         const char *con_id,
     581             :                                         enum gpiod_flags flags,
     582             :                                         const char *label)
     583             : {
     584             :         return devm_fwnode_gpiod_get_index(dev, fwnode, con_id, 0,
     585             :                                            flags, label);
     586             : }
     587             : 
     588             : static inline
     589             : struct gpio_desc *devm_fwnode_get_index_gpiod_from_child(struct device *dev,
     590             :                                                 const char *con_id, int index,
     591             :                                                 struct fwnode_handle *child,
     592             :                                                 enum gpiod_flags flags,
     593             :                                                 const char *label)
     594             : {
     595             :         return devm_fwnode_gpiod_get_index(dev, child, con_id, index,
     596             :                                            flags, label);
     597             : }
     598             : 
     599             : static inline
     600             : struct gpio_desc *devm_fwnode_get_gpiod_from_child(struct device *dev,
     601             :                                                    const char *con_id,
     602             :                                                    struct fwnode_handle *child,
     603             :                                                    enum gpiod_flags flags,
     604             :                                                    const char *label)
     605             : {
     606             :         return devm_fwnode_gpiod_get_index(dev, child, con_id, 0, flags, label);
     607             : }
     608             : 
     609             : #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_OF_GPIO)
     610             : struct device_node;
     611             : 
     612             : struct gpio_desc *gpiod_get_from_of_node(struct device_node *node,
     613             :                                          const char *propname, int index,
     614             :                                          enum gpiod_flags dflags,
     615             :                                          const char *label);
     616             : 
     617             : #else  /* CONFIG_GPIOLIB && CONFIG_OF_GPIO */
     618             : 
     619             : struct device_node;
     620             : 
     621             : static inline
     622             : struct gpio_desc *gpiod_get_from_of_node(struct device_node *node,
     623             :                                          const char *propname, int index,
     624             :                                          enum gpiod_flags dflags,
     625             :                                          const char *label)
     626             : {
     627             :         return ERR_PTR(-ENOSYS);
     628             : }
     629             : 
     630             : #endif /* CONFIG_GPIOLIB && CONFIG_OF_GPIO */
     631             : 
     632             : #ifdef CONFIG_GPIOLIB
     633             : struct device_node;
     634             : 
     635             : struct gpio_desc *devm_gpiod_get_from_of_node(struct device *dev,
     636             :                                               struct device_node *node,
     637             :                                               const char *propname, int index,
     638             :                                               enum gpiod_flags dflags,
     639             :                                               const char *label);
     640             : 
     641             : #else  /* CONFIG_GPIOLIB */
     642             : 
     643             : struct device_node;
     644             : 
     645             : static inline
     646             : struct gpio_desc *devm_gpiod_get_from_of_node(struct device *dev,
     647             :                                               struct device_node *node,
     648             :                                               const char *propname, int index,
     649             :                                               enum gpiod_flags dflags,
     650             :                                               const char *label)
     651             : {
     652             :         return ERR_PTR(-ENOSYS);
     653             : }
     654             : 
     655             : #endif /* CONFIG_GPIOLIB */
     656             : 
     657             : struct acpi_gpio_params {
     658             :         unsigned int crs_entry_index;
     659             :         unsigned int line_index;
     660             :         bool active_low;
     661             : };
     662             : 
     663             : struct acpi_gpio_mapping {
     664             :         const char *name;
     665             :         const struct acpi_gpio_params *data;
     666             :         unsigned int size;
     667             : 
     668             : /* Ignore IoRestriction field */
     669             : #define ACPI_GPIO_QUIRK_NO_IO_RESTRICTION       BIT(0)
     670             : /*
     671             :  * When ACPI GPIO mapping table is in use the index parameter inside it
     672             :  * refers to the GPIO resource in _CRS method. That index has no
     673             :  * distinction of actual type of the resource. When consumer wants to
     674             :  * get GpioIo type explicitly, this quirk may be used.
     675             :  */
     676             : #define ACPI_GPIO_QUIRK_ONLY_GPIOIO             BIT(1)
     677             : /* Use given pin as an absolute GPIO number in the system */
     678             : #define ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER         BIT(2)
     679             : 
     680             :         unsigned int quirks;
     681             : };
     682             : 
     683             : #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_ACPI)
     684             : 
     685             : struct acpi_device;
     686             : 
     687             : int acpi_dev_add_driver_gpios(struct acpi_device *adev,
     688             :                               const struct acpi_gpio_mapping *gpios);
     689             : void acpi_dev_remove_driver_gpios(struct acpi_device *adev);
     690             : 
     691             : int devm_acpi_dev_add_driver_gpios(struct device *dev,
     692             :                                    const struct acpi_gpio_mapping *gpios);
     693             : void devm_acpi_dev_remove_driver_gpios(struct device *dev);
     694             : 
     695             : #else  /* CONFIG_GPIOLIB && CONFIG_ACPI */
     696             : 
     697             : struct acpi_device;
     698             : 
     699             : static inline int acpi_dev_add_driver_gpios(struct acpi_device *adev,
     700             :                               const struct acpi_gpio_mapping *gpios)
     701             : {
     702             :         return -ENXIO;
     703             : }
     704             : static inline void acpi_dev_remove_driver_gpios(struct acpi_device *adev) {}
     705             : 
     706             : static inline int devm_acpi_dev_add_driver_gpios(struct device *dev,
     707             :                               const struct acpi_gpio_mapping *gpios)
     708             : {
     709             :         return -ENXIO;
     710             : }
     711             : static inline void devm_acpi_dev_remove_driver_gpios(struct device *dev) {}
     712             : 
     713             : #endif /* CONFIG_GPIOLIB && CONFIG_ACPI */
     714             : 
     715             : 
     716             : #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
     717             : 
     718             : int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
     719             : int gpiod_export_link(struct device *dev, const char *name,
     720             :                       struct gpio_desc *desc);
     721             : void gpiod_unexport(struct gpio_desc *desc);
     722             : 
     723             : #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
     724             : 
     725             : static inline int gpiod_export(struct gpio_desc *desc,
     726             :                                bool direction_may_change)
     727             : {
     728             :         return -ENOSYS;
     729             : }
     730             : 
     731             : static inline int gpiod_export_link(struct device *dev, const char *name,
     732             :                                     struct gpio_desc *desc)
     733             : {
     734             :         return -ENOSYS;
     735             : }
     736             : 
     737             : static inline void gpiod_unexport(struct gpio_desc *desc)
     738             : {
     739             : }
     740             : 
     741             : #endif /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
     742             : 
     743             : #endif

Generated by: LCOV version 1.14