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

Generated by: LCOV version 1.14