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