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