sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/driver-api/gpio/indexmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/driver-api/gpio/indexmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/driver-api/gpio/indexmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/driver-api/gpio/indexmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/driver-api/gpio/indexmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/pt_BR/driver-api/gpio/indexmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/driver-api/gpio/indexmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h#General Purpose Input/Output (GPIO)h]h#General Purpose Input/Output (GPIO)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index.rsthKubh paragraph)}(h Contents:h]h Contents:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhcompound)}(hhh]htoctree)}(hhh]h}(h]h ]h"]h$]h&]hdriver-api/gpio/indexentries](Ndriver-api/gpio/introNdriver-api/gpio/using-gpioNdriver-api/gpio/driverNdriver-api/gpio/consumerNdriver-api/gpio/boardNdriver-api/gpio/legacy-boardsNdriver-api/gpio/drivers-on-gpioNdriver-api/gpio/bt8xxgpioNdriver-api/gpio/pca953xe includefiles](hhhhhhhhhemaxdepthKcaptionNglobhidden includehiddennumberedK titlesonly rawentries]uh1hhhhKhhubah}(h]h ]toctree-wrapperah"]h$]h&]uh1hhhhhhhhNubh)}(hhh](h)}(hCoreh]hCore}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlegpio_irq_chip (C struct)c.gpio_irq_chiphNtauh1j#hjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h gpio_irq_chiph]hdesc_signature_line)}(hstruct gpio_irq_chiph](hdesc_sig_keyword)}(hstructh]hstruct}(hjGhhhNhNubah}(h]h ]kah"]h$]h&]uh1jEhjAhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhKubhdesc_sig_space)}(h h]h }(hjYhhhNhNubah}(h]h ]wah"]h$]h&]uh1jWhjAhhhjVhKubh desc_name)}(h gpio_irq_chiph]h desc_sig_name)}(hj=h]h gpio_irq_chip}(hjphhhNhNubah}(h]h ]nah"]h$]h&]uh1jnhjjubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jhhjAhhhjVhKubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1j?sphinx_line_type declaratorhj;hhhjVhKubah}(h]j2ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j9hjVhKhj6hhubh desc_content)}(hhh]h)}(hGPIO interrupt controllerh]hGPIO interrupt controller}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK0hjhhubah}(h]h ]h"]h$]h&]uh1jhj6hhhjVhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j4hhhjhNhNubh container)}(hX**Definition**:: struct gpio_irq_chip { struct irq_chip *chip; struct irq_domain *domain; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct fwnode_handle *fwnode; struct irq_domain *parent_domain; int (*child_to_parent_hwirq)(struct gpio_chip *gc, unsigned int child_hwirq, unsigned int child_type, unsigned int *parent_hwirq, unsigned int *parent_type); int (*populate_parent_alloc_arg)(struct gpio_chip *gc, union gpio_irq_fwspec *fwspec, unsigned int parent_hwirq, unsigned int parent_type); unsigned int (*child_offset_to_irq)(struct gpio_chip *gc, unsigned int pin); struct irq_domain_ops child_irq_domain_ops; #endif; irq_flow_handler_t handler; unsigned int default_type; struct lock_class_key *lock_key; struct lock_class_key *request_key; irq_flow_handler_t parent_handler; union { void *parent_handler_data; void **parent_handler_data_array; }; unsigned int num_parents; unsigned int *parents; unsigned int *map; bool threaded; bool per_parent_data; bool initialized; bool domain_is_allocated_externally; int (*init_hw)(struct gpio_chip *gc); void (*init_valid_mask)(struct gpio_chip *gc, unsigned long *valid_mask, unsigned int ngpios); unsigned long *valid_mask; unsigned int first; void (*irq_enable)(struct irq_data *data); void (*irq_disable)(struct irq_data *data); void (*irq_unmask)(struct irq_data *data); void (*irq_mask)(struct irq_data *data); }; **Members** ``chip`` GPIO IRQ chip implementation, provided by GPIO driver. ``domain`` Interrupt translation domain; responsible for mapping between GPIO hwirq number and Linux IRQ number. ``fwnode`` Firmware node corresponding to this gpiochip/irqchip, necessary for hierarchical irqdomain support. ``parent_domain`` If non-NULL, will be set as the parent of this GPIO interrupt controller's IRQ domain to establish a hierarchical interrupt domain. The presence of this will activate the hierarchical interrupt support. ``child_to_parent_hwirq`` This callback translates a child hardware IRQ offset to a parent hardware IRQ offset on a hierarchical interrupt chip. The child hardware IRQs correspond to the GPIO index 0..ngpio-1 (see the ngpio field of struct gpio_chip) and the corresponding parent hardware IRQ and type (such as IRQ_TYPE_*) shall be returned by the driver. The driver can calculate this from an offset or using a lookup table or whatever method is best for this chip. Return 0 on successful translation in the driver. If some ranges of hardware IRQs do not have a corresponding parent HWIRQ, return -EINVAL, but also make sure to fill in **valid_mask** and **need_valid_mask** to make these GPIO lines unavailable for translation. ``populate_parent_alloc_arg`` This optional callback allocates and populates the specific struct for the parent's IRQ domain. If this is not specified, then :c:type:`gpiochip_populate_parent_fwspec_twocell` will be used. A four-cell variant named :c:type:`gpiochip_populate_parent_fwspec_fourcell` is also available. ``child_offset_to_irq`` This optional callback is used to translate the child's GPIO line offset on the GPIO chip to an IRQ number for the GPIO to_irq() callback. If this is not specified, then a default callback will be provided that returns the line offset. ``child_irq_domain_ops`` The IRQ domain operations that will be used for this GPIO IRQ chip. If no operations are provided, then default callbacks will be populated to setup the IRQ hierarchy. Some drivers need to supply their own translate function. ``handler`` The IRQ handler to use (often a predefined IRQ core function) for GPIO IRQs, provided by GPIO driver. ``default_type`` Default IRQ triggering type applied during GPIO driver initialization, provided by GPIO driver. ``lock_key`` Per GPIO IRQ chip lockdep class for IRQ lock. ``request_key`` Per GPIO IRQ chip lockdep class for IRQ request. ``parent_handler`` The interrupt handler for the GPIO chip's parent interrupts, may be NULL if the parent interrupts are nested rather than cascaded. ``{unnamed_union}`` anonymous ``parent_handler_data`` If **per_parent_data** is false, **parent_handler_data** is a single pointer used as the data associated with every parent interrupt. ``parent_handler_data_array`` If **per_parent_data** is true, **parent_handler_data_array** is an array of **num_parents** pointers, and is used to associate different data for each parent. This cannot be NULL if **per_parent_data** is true. ``num_parents`` The number of interrupt parents of a GPIO chip. ``parents`` A list of interrupt parents of a GPIO chip. This is owned by the driver, so the core will only reference this list, not modify it. ``map`` A list of interrupt parents for each line of a GPIO chip. ``threaded`` True if set the interrupt handling uses nested threads. ``per_parent_data`` True if parent_handler_data_array describes a **num_parents** sized array to be used as parent data. ``initialized`` Flag to track GPIO chip irq member's initialization. This flag will make sure GPIO chip irq members are not used before they are initialized. ``domain_is_allocated_externally`` True it the irq_domain was allocated outside of gpiolib, in which case gpiolib won't free the irq_domain itself. ``init_hw`` optional routine to initialize hardware before an IRQ chip will be added. This is quite useful when a particular driver wants to clear IRQ related registers in order to avoid undesired events. ``init_valid_mask`` optional routine to initialize **valid_mask**, to be used if not all GPIO lines are valid interrupts. Sometimes some lines just cannot fire interrupts, and this routine, when defined, is passed a bitmap in "valid_mask" and it will have ngpios bits from 0..(ngpios-1) set to "1" as in valid. The callback can then directly set some bits to "0" if they cannot be used for interrupts. ``valid_mask`` If not ``NULL``, holds bitmask of GPIOs which are valid to be included in IRQ domain of the chip. ``first`` Required for static IRQ allocation. If set, irq_domain_create_simple() will allocate and map all IRQs during initialization. ``irq_enable`` Store old irq_chip irq_enable callback ``irq_disable`` Store old irq_chip irq_disable callback ``irq_unmask`` Store old irq_chip irq_unmask callback ``irq_mask`` Store old irq_chip irq_mask callbackh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK4hjubh literal_block)}(hXstruct gpio_irq_chip { struct irq_chip *chip; struct irq_domain *domain; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct fwnode_handle *fwnode; struct irq_domain *parent_domain; int (*child_to_parent_hwirq)(struct gpio_chip *gc, unsigned int child_hwirq, unsigned int child_type, unsigned int *parent_hwirq, unsigned int *parent_type); int (*populate_parent_alloc_arg)(struct gpio_chip *gc, union gpio_irq_fwspec *fwspec, unsigned int parent_hwirq, unsigned int parent_type); unsigned int (*child_offset_to_irq)(struct gpio_chip *gc, unsigned int pin); struct irq_domain_ops child_irq_domain_ops; #endif; irq_flow_handler_t handler; unsigned int default_type; struct lock_class_key *lock_key; struct lock_class_key *request_key; irq_flow_handler_t parent_handler; union { void *parent_handler_data; void **parent_handler_data_array; }; unsigned int num_parents; unsigned int *parents; unsigned int *map; bool threaded; bool per_parent_data; bool initialized; bool domain_is_allocated_externally; int (*init_hw)(struct gpio_chip *gc); void (*init_valid_mask)(struct gpio_chip *gc, unsigned long *valid_mask, unsigned int ngpios); unsigned long *valid_mask; unsigned int first; void (*irq_enable)(struct irq_data *data); void (*irq_disable)(struct irq_data *data); void (*irq_unmask)(struct irq_data *data); void (*irq_mask)(struct irq_data *data); };h]hXstruct gpio_irq_chip { struct irq_chip *chip; struct irq_domain *domain; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; struct fwnode_handle *fwnode; struct irq_domain *parent_domain; int (*child_to_parent_hwirq)(struct gpio_chip *gc, unsigned int child_hwirq, unsigned int child_type, unsigned int *parent_hwirq, unsigned int *parent_type); int (*populate_parent_alloc_arg)(struct gpio_chip *gc, union gpio_irq_fwspec *fwspec, unsigned int parent_hwirq, unsigned int parent_type); unsigned int (*child_offset_to_irq)(struct gpio_chip *gc, unsigned int pin); struct irq_domain_ops child_irq_domain_ops; #endif; irq_flow_handler_t handler; unsigned int default_type; struct lock_class_key *lock_key; struct lock_class_key *request_key; irq_flow_handler_t parent_handler; union { void *parent_handler_data; void **parent_handler_data_array; }; unsigned int num_parents; unsigned int *parents; unsigned int *map; bool threaded; bool per_parent_data; bool initialized; bool domain_is_allocated_externally; int (*init_hw)(struct gpio_chip *gc); void (*init_valid_mask)(struct gpio_chip *gc, unsigned long *valid_mask, unsigned int ngpios); unsigned long *valid_mask; unsigned int first; void (*irq_enable)(struct irq_data *data); void (*irq_disable)(struct irq_data *data); void (*irq_unmask)(struct irq_data *data); void (*irq_mask)(struct irq_data *data); };}hjsbah}(h]h ]h"]h$]h&]jjuh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK6hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK[hjubhdefinition_list)}(hhh](hdefinition_list_item)}(h@``chip`` GPIO IRQ chip implementation, provided by GPIO driver. h](hterm)}(h``chip``h]hliteral)}(hj!h]hchip}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK5hjubh definition)}(hhh]h)}(h6GPIO IRQ chip implementation, provided by GPIO driver.h]h6GPIO IRQ chip implementation, provided by GPIO driver.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hK5hj;ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj8hK5hjubj)}(hq``domain`` Interrupt translation domain; responsible for mapping between GPIO hwirq number and Linux IRQ number. h](j)}(h ``domain``h]j$)}(hj^h]hdomain}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj\ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK=hjXubj:)}(hhh]h)}(heInterrupt translation domain; responsible for mapping between GPIO hwirq number and Linux IRQ number.h]heInterrupt translation domain; responsible for mapping between GPIO hwirq number and Linux IRQ number.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhK; some complex GPIO controllers instantiate more than one chip per device tree node and have 3 cells: gpios = <:c:type:`gpio` instance offset flags>; Legacy GPIO controllers may even have 1 cell: gpios = <:c:type:`gpio` offset>; ``of_node_instance_match`` Determine if a chip is the right instance. Must be implemented by any driver using more than one gpio_chip per device tree node. Returns true if gc is the instance indicated by i (which is the first cell in the phandles for GPIO lines and gpio-ranges). ``of_xlate`` Callback to translate a device tree GPIO specifier into a chip- relative GPIO number and flags.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMHhj ubj)}(hXstruct gpio_chip { const char *label; struct gpio_device *gpiodev; struct device *parent; struct fwnode_handle *fwnode; struct module *owner; int (*request)(struct gpio_chip *gc, unsigned int offset); void (*free)(struct gpio_chip *gc, unsigned int offset); int (*get_direction)(struct gpio_chip *gc, unsigned int offset); int (*direction_input)(struct gpio_chip *gc, unsigned int offset); int (*direction_output)(struct gpio_chip *gc, unsigned int offset, int value); int (*get)(struct gpio_chip *gc, unsigned int offset); int (*get_multiple)(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits); int (*set)(struct gpio_chip *gc, unsigned int offset, int value); int (*set_multiple)(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits); int (*set_config)(struct gpio_chip *gc, unsigned int offset, unsigned long config); int (*to_irq)(struct gpio_chip *gc, unsigned int offset); void (*dbg_show)(struct seq_file *s, struct gpio_chip *gc); int (*init_valid_mask)(struct gpio_chip *gc, unsigned long *valid_mask, unsigned int ngpios); int (*add_pin_ranges)(struct gpio_chip *gc); int (*en_hw_timestamp)(struct gpio_chip *gc, u32 offset, unsigned long flags); int (*dis_hw_timestamp)(struct gpio_chip *gc, u32 offset, unsigned long flags); int base; u16 ngpio; u16 offset; const char *const *names; bool can_sleep; #ifdef CONFIG_GPIOLIB_IRQCHIP; struct gpio_irq_chip irq; #endif ; #if defined(CONFIG_OF_GPIO); unsigned int of_gpio_n_cells; bool (*of_node_instance_match)(struct gpio_chip *gc, unsigned int i); int (*of_xlate)(struct gpio_chip *gc, const struct of_phandle_args *gpiospec, u32 *flags); #endif ; };h]hXstruct gpio_chip { const char *label; struct gpio_device *gpiodev; struct device *parent; struct fwnode_handle *fwnode; struct module *owner; int (*request)(struct gpio_chip *gc, unsigned int offset); void (*free)(struct gpio_chip *gc, unsigned int offset); int (*get_direction)(struct gpio_chip *gc, unsigned int offset); int (*direction_input)(struct gpio_chip *gc, unsigned int offset); int (*direction_output)(struct gpio_chip *gc, unsigned int offset, int value); int (*get)(struct gpio_chip *gc, unsigned int offset); int (*get_multiple)(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits); int (*set)(struct gpio_chip *gc, unsigned int offset, int value); int (*set_multiple)(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits); int (*set_config)(struct gpio_chip *gc, unsigned int offset, unsigned long config); int (*to_irq)(struct gpio_chip *gc, unsigned int offset); void (*dbg_show)(struct seq_file *s, struct gpio_chip *gc); int (*init_valid_mask)(struct gpio_chip *gc, unsigned long *valid_mask, unsigned int ngpios); int (*add_pin_ranges)(struct gpio_chip *gc); int (*en_hw_timestamp)(struct gpio_chip *gc, u32 offset, unsigned long flags); int (*dis_hw_timestamp)(struct gpio_chip *gc, u32 offset, unsigned long flags); int base; u16 ngpio; u16 offset; const char *const *names; bool can_sleep; #ifdef CONFIG_GPIOLIB_IRQCHIP; struct gpio_irq_chip irq; #endif ; #if defined(CONFIG_OF_GPIO); unsigned int of_gpio_n_cells; bool (*of_node_instance_match)(struct gpio_chip *gc, unsigned int i); int (*of_xlate)(struct gpio_chip *gc, const struct of_phandle_args *gpiospec, u32 *flags); #endif ; };}hj sbah}(h]h ]h"]h$]h&]jjuh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMJhj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMohj ubj)}(hhh](j)}(hx``label`` a functional name for the GPIO device, such as a part number or the name of the SoC IP-block implementing it. h](j)}(h ``label``h]j$)}(hj h]hlabel}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMGhj ubj:)}(hhh]h)}(hma functional name for the GPIO device, such as a part number or the name of the SoC IP-block implementing it.h]hma functional name for the GPIO device, such as a part number or the name of the SoC IP-block implementing it.}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMFhj+ ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj* hMGhj ubj)}(h5``gpiodev`` the internal state holder, opaque struct h](j)}(h ``gpiodev``h]j$)}(hjO h]hgpiodev}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjM ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMHhjI ubj:)}(hhh]h)}(h(the internal state holder, opaque structh]h(the internal state holder, opaque struct}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd hMHhje ubah}(h]h ]h"]h$]h&]uh1j9hjI ubeh}(h]h ]h"]h$]h&]uh1jhjd hMHhj ubj)}(h6``parent`` optional parent device providing the GPIOs h](j)}(h ``parent``h]j$)}(hj h]hparent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMIhj ubj:)}(hhh]h)}(h*optional parent device providing the GPIOsh]h*optional parent device providing the GPIOs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMIhj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMIhj ubj)}(hB``fwnode`` optional fwnode providing this controller's properties h](j)}(h ``fwnode``h]j$)}(hj h]hfwnode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMJhj ubj:)}(hhh]h)}(h6optional fwnode providing this controller's propertiesh]h8optional fwnode providing this controller’s properties}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMJhj ubah}(h]h ]h"]h$A]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMJhj ubj)}(hB``owner`` helps prevent removal of modules exporting active GPIOs h](j)}(h ``owner``h]j$)}(hj h]howner}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMKhj ubj:)}(hhh]h)}(h7helps prevent removal of modules exporting active GPIOsh]h7helps prevent removal of modules exporting active GPIOs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMKhj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMKhj ubj)}(h``request`` optional hook for chip-specific activation, such as enabling module power and clock; may sleep; must return 0 on success or negative error number on failure h](j)}(h ``request``h]j$)}(hj3 h]hrequest}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj1 ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMNhj- ubj:)}(hhh]h)}(hoptional hook for chip-specific activation, such as enabling module power and clock; may sleep; must return 0 on success or negative error number on failureh]hoptional hook for chip-specific activation, such as enabling module power and clock; may sleep; must return 0 on success or negative error number on failure}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMLhjI ubah}(h]h ]h"]h$]h&]uh1j9hj- ubeh}(h]h ]h"]h$]h&]uh1jhjH hMNhj ubj)}(hk``free`` optional hook for chip-specific deactivation, such as disabling module power and clock; may sleep h](j)}(h``free``h]j$)}(hjm h]hfree}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjk ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMPhjg ubj:)}(hhh]h)}(haoptional hook for chip-specific deactivation, such as disabling module power and clock; may sleeph]haoptional hook for chip-specific deactivation, such as disabling module power and clock; may sleep}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMOhj ubah}(h]h ]h"]h$]h&]uh1j9hjg ubeh}(h]h ]h"]h$]h&]uh1jhj hMPhj ubj)}(h``get_direction`` returns direction for signal "offset", 0=out, 1=in, (same as GPIO_LINE_DIRECTION_OUT / GPIO_LINE_DIRECTION_IN), or negative error. It is recommended to always implement this function, even on input-only or output-only gpio chips. h](j)}(h``get_direction``h]j$)}(hj h]h get_direction}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMThj ubj:)}(hhh]h)}(hreturns direction for signal "offset", 0=out, 1=in, (same as GPIO_LINE_DIRECTION_OUT / GPIO_LINE_DIRECTION_IN), or negative error. It is recommended to always implement this function, even on input-only or output-only gpio chips.h]hreturns direction for signal “offset”, 0=out, 1=in, (same as GPIO_LINE_DIRECTION_OUT / GPIO_LINE_DIRECTION_IN), or negative error. It is recommended to always implement this function, even on input-only or output-only gpio chips.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMQhj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMThj ubj)}(h``direction_input`` configures signal "offset" as input, returns 0 on success or a negative error number. This can be omitted on input-only or output-only gpio chips. h](j)}(h``direction_input``h]j$)}(hj h]hdirection_input}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMWhj ubj:)}(hhh]h)}(hconfigures signal "offset" as input, returns 0 on success or a negative error number. This can be omitted on input-only or output-only gpio chips.h]hconfigures signal “offset” as input, returns 0 on success or a negative error number. This can be omitted on input-only or output-only gpio chips.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMUhj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMWhj ubj)}(h``direction_output`` configures signal "offset" as output, returns 0 on success or a negative error number. This can be omitted on input-only or output-only gpio chips. h](j)}(h``direction_output``h]j$)}(hj h]hdirection_output}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMZhj ubj:)}(hhh]h)}(hconfigures signal "offset" as output, returns 0 on success or a negative error number. This can be omitted on input-only or output-only gpio chips.h]hconfigures signal “offset” as output, returns 0 on success or a negative error number. This can be omitted on input-only or output-only gpio chips.}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMXhj1 ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj0 hMZhj ubj)}(hX``get`` returns value for signal "offset", 0=low, 1=high, or negative error. the low and high values are defined as physical low on the line in/out to the connector such as a physical pad, pin or rail. The GPIO library has internal logic to handle lines that are active low, such as indicated by overstrike or #name in a schematic, and the driver should not try to second-guess the logic value of a line. h](j)}(h``get``h]j$)}(hjU h]hget}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjS ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM`hjO ubj:)}(hhh]h)}(hXreturns value for signal "offset", 0=low, 1=high, or negative error. the low and high values are defined as physical low on the line in/out to the connector such as a physical pad, pin or rail. The GPIO library has internal logic to handle lines that are active low, such as indicated by overstrike or #name in a schematic, and the driver should not try to second-guess the logic value of a line.h]hXreturns value for signal “offset”, 0=low, 1=high, or negative error. the low and high values are defined as physical low on the line in/out to the connector such as a physical pad, pin or rail. The GPIO library has internal logic to handle lines that are active low, such as indicated by overstrike or #name in a schematic, and the driver should not try to second-guess the logic value of a line.}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM[hjk ubah}(h]h ]h"]h$]h&]uh1j9hjO ubeh}(h]h ]h"]h$]h&]uh1jhjj hM`hj ubj)}(h``get_multiple`` reads values for multiple signals defined by "mask" and stores them in "bits", returns 0 on success or negative error h](j)}(h``get_multiple``h]j$)}(hj h]h get_multiple}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMbhj ubj:)}(hhh]h)}(hureads values for multiple signals defined by "mask" and stores them in "bits", returns 0 on success or negative errorh]h}reads values for multiple signals defined by “mask” and stores them in “bits”, returns 0 on success or negative error}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMahj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMbhj ubj)}(h``set`` assigns output value for signal "offset", returns 0 on success or negative error value. The output value follows the same semantic rules as for **get**. h](j)}(h``set``h]j$)}(hj h]hset}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMehj ubj:)}(hhh]h)}(hassigns output value for signal "offset", returns 0 on success or negative error value. The output value follows the same semantic rules as for **get**.h](hassigns output value for signal “offset”, returns 0 on success or negative error value. The output value follows the same semantic rules as for }(hj hhhNhNubj)}(h**get**h]hget}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMchj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMehj ubj)}(h|``set_multiple`` assigns output values for multiple signals defined by "mask", returns 0 on success or negative error value h](j)}(h``set_multiple``h]j$)}(hjh]h set_multiple}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMghjubj:)}(hhh]h)}(hjassigns output values for multiple signals defined by "mask", returns 0 on success or negative error valueh]hnassigns output values for multiple signals defined by “mask”, returns 0 on success or negative error value}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMfhj+ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj*hMghj ubj)}(h``set_config`` optional hook for all kinds of settings. Uses the same packed config format as generic pinconf. Must return 0 on success and a negative error number on failure. h](j)}(h``set_config``h]j$)}(hjOh]h set_config}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjMubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMjhjIubj:)}(hhh]h)}(hoptional hook for all kinds of settings. Uses the same packed config format as generic pinconf. Must return 0 on success and a negative error number on failure.h]hoptional hook for all kinds of settings. Uses the same packed config format as generic pinconf. Must return 0 on success and a negative error number on failure.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhhjeubah}(h]h ]h"]h$]h&]uh1j9hjIubeh}(h]h ]h"]h$]h&]uh1jhjdhMjhj ubj)}(he``to_irq`` optional hook supporting non-static gpiod_to_irq() mappings; implementation may not sleep h](j)}(h ``to_irq``h]j$)}(hjh]hto_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMlhjubj:)}(hhh]h)}(hYoptional hook supporting non-static gpiod_to_irq() mappings; implementation may not sleeph]hYoptional hook supporting non-static gpiod_to_irq() mappings; implementation may not sleep}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMkhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMlhj ubj)}(h``dbg_show`` optional routine to show contents in debugfs; default code will be used when this is omitted, but custom code can show extra state (such as pullup/pulldown configuration). h](j)}(h ``dbg_show``h]j$)}(hjh]hdbg_show}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMohjubj:)}(hhh]h)}(hoptional routine to show contents in debugfs; default code will be used when this is omitted, but custom code can show extra state (such as pullup/pulldown configuration).h]hoptional routine to show contents in debugfs; default code will be used when this is omitted, but custom code can show extra state (such as pullup/pulldown configuration).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMmhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMohj ubj)}(hj``init_valid_mask`` optional routine to initialize **valid_mask**, to be used if not all GPIOs are valid. h](j)}(h``init_valid_mask``h]j$)}(hjh]hinit_valid_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMqhjubj:)}(hhh]h)}(hUoptional routine to initialize **valid_mask**, to be used if not all GPIOs are valid.h](hoptional routine to initialize }(hjhhhNhNubj)}(h**valid_mask**h]h valid_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(, to be used if not all GPIOs are valid.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMphjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMqhj ubj)}(h``add_pin_ranges`` optional routine to initialize pin ranges, to be used when requires special mapping of the pins that provides GPIO functionality. It is called after adding GPIO chip and before adding IRQ chip. h](j)}(h``add_pin_ranges``h]j$)}(hjIh]hadd_pin_ranges}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjGubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMthjCubj:)}(hhh]h)}(hoptional routine to initialize pin ranges, to be used when requires special mapping of the pins that provides GPIO functionality. It is called after adding GPIO chip and before adding IRQ chip.h]hoptional routine to initialize pin ranges, to be used when requires special mapping of the pins that provides GPIO functionality. It is called after adding GPIO chip and before adding IRQ chip.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMrhj_ubah}(h]h ]h"]h$]h&]uh1j9hjCubeh}(h]h ]h"]h$]h&]uh1jhj^hMthj ubj)}(h^``en_hw_timestamp`` Dependent on GPIO chip, an optional routine to enable hardware timestamp. h](j)}(h``en_hw_timestamp``h]j$)}(hjh]hen_hw_timestamp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMvhj}ubj:)}(hhh]h)}(hIDependent on GPIO chip, an optional routine to enable hardware timestamp.h]hIDependent on GPIO chip, an optional routine to enable hardware timestamp.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMuhjubah}(h]h ]h"]h$]h&]uh1j9hj}ubeh}(h]h ]h"]h$]h&]uh1jhjhMvhj ubj)}(h```dis_hw_timestamp`` Dependent on GPIO chip, an optional routine to disable hardware timestamp. h](j)}(h``dis_hw_timestamp``h]j$)}(hjh]hdis_hw_timestamp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMxhjubj:)}(hhh]h)}(hJDependent on GPIO chip, an optional routine to disable hardware timestamp.h]hJDependent on GPIO chip, an optional routine to disable hardware timestamp.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMwhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMxhj ubj)}(hX``base`` identifies the first GPIO number handled by this chip; or, if negative during registration, requests dynamic ID allocation. DEPRECATION: providing anything non-negative and nailing the base offset of GPIO chips is deprecated. Please pass -1 as base to let gpiolib select the chip base in all possible cases. We want to get rid of the static GPIO number space in the long run. h](j)}(h``base``h]j$)}(hjh]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM~hjubj:)}(hhh]h)}(hXwidentifies the first GPIO number handled by this chip; or, if negative during registration, requests dynamic ID allocation. DEPRECATION: providing anything non-negative and nailing the base offset of GPIO chips is deprecated. Please pass -1 as base to let gpiolib select the chip base in all possible cases. We want to get rid of the static GPIO number space in the long run.h]hXwidentifies the first GPIO number handled by this chip; or, if negative during registration, requests dynamic ID allocation. DEPRECATION: providing anything non-negative and nailing the base offset of GPIO chips is deprecated. Please pass -1 as base to let gpiolib select the chip base in all possible cases. We want to get rid of the static GPIO number space in the long run.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMyhj ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj hM~hj ubj)}(hg``ngpio`` the number of GPIOs handled by this controller; the last GPIO handled is (base + ngpio - 1). h](j)}(h ``ngpio``h]j$)}(hj1h]hngpio}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj/ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj+ubj:)}(hhh]h)}(h\the number of GPIOs handled by this controller; the last GPIO handled is (base + ngpio - 1).h]h\the number of GPIOs handled by this controller; the last GPIO handled is (base + ngpio - 1).}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjGubah}(h]h ]h"]h$]h&]uh1j9hj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhMhj ubj)}(h``offset`` when multiple gpio chips belong to the same device this can be used as offset within the device so friendly names can be properly assigned. h](j)}(h ``offset``h]j$)}(hjkh]hoffset}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjiubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjeubj:)}(hhh]h)}(hwhen multiple gpio chips belong to the same device this can be used as offset within the device so friendly names can be properly assigned.h]hwhen multiple gpio chips belong to the same device this can be used as offset within the device so friendly names can be properly assigned.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j9hjeubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h``names`` if set, must be an array of strings to use as alternative names for the GPIOs in this chip. Any entry in the array may be NULL if there is no alias for the GPIO, however the array must be **ngpio** entries long. h](j)}(h ``names``h]j$)}(hjh]hnames}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(hif set, must be an array of strings to use as alternative names for the GPIOs in this chip. Any entry in the array may be NULL if there is no alias for the GPIO, however the array must be **ngpio** entries long.h](hif set, must be an array of strings to use as alternative names for the GPIOs in this chip. Any entry in the array may be NULL if there is no alias for the GPIO, however the array must be }(hjhhhNhNubj)}(h **ngpio**h]hngpio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh entries long.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(hX``can_sleep`` flag must be set iff get()/set() methods sleep, as they must while accessing GPIO expander chips over I2C or SPI. This implies that if the chip supports IRQs, these IRQs need to be threaded as the chip access may sleep when e.g. reading out the IRQ status registers. h](j)}(h ``can_sleep``h]j$)}(hjh]h can_sleep}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(hX flag must be set iff get()/set() methods sleep, as they must while accessing GPIO expander chips over I2C or SPI. This implies that if the chip supports IRQs, these IRQs need to be threaded as the chip access may sleep when e.g. reading out the IRQ status registers.h]hX flag must be set iff get()/set() methods sleep, as they must while accessing GPIO expander chips over I2C or SPI. This implies that if the chip supports IRQs, these IRQs need to be threaded as the chip access may sleep when e.g. reading out the IRQ status registers.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(hy``irq`` Integrates interrupt chip functionality with the GPIO chip. Can be used to handle IRQs for most practical cases. h](j)}(h``irq``h]j$)}(hj+h]hirq}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj)ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj%ubj:)}(hhh]h)}(hpIntegrates interrupt chip functionality with the GPIO chip. Can be used to handle IRQs for most practical cases.h]hpIntegrates interrupt chip functionality with the GPIO chip. Can be used to handle IRQs for most practical cases.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjAubah}(h]h ]h"]h$]h&]uh1j9hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMhj ubj)}(hXm``of_gpio_n_cells`` Number of cells used to form the GPIO specifier. The standard is 2 cells: gpios = <:c:type:`gpio` offset flags>; some complex GPIO controllers instantiate more than one chip per device tree node and have 3 cells: gpios = <:c:type:`gpio` instance offset flags>; Legacy GPIO controllers may even have 1 cell: gpios = <:c:type:`gpio` offset>; h](j)}(h``of_gpio_n_cells``h]j$)}(hjeh]hof_gpio_n_cells}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjcubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj_ubj:)}(hhh](h)}(hINumber of cells used to form the GPIO specifier. The standard is 2 cells:h]hINumber of cells used to form the GPIO specifier. The standard is 2 cells:}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj{ubh)}(h&gpios = <:c:type:`gpio` offset flags>;h](h gpios = <}(hjhhhNhNubh)}(h:c:type:`gpio`h]j$)}(hjh]hgpio}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]refdoch refdomainjreftypetype refexplicitrefwarnjjjgpiouh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubh offset flags>;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhj{ubh)}(hcsome complex GPIO controllers instantiate more than one chip per device tree node and have 3 cells:h]hcsome complex GPIO controllers instantiate more than one chip per device tree node and have 3 cells:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj{ubh)}(h/gpios = <:c:type:`gpio` instance offset flags>;h](h gpios = <}(hjhhhNhNubh)}(h:c:type:`gpio`h]j$)}(hjh]hgpio}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]refdoch refdomainjreftypetype refexplicitrefwarnjjjgpiouh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubh instance offset flags>;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhj{ubh)}(h-Legacy GPIO controllers may even have 1 cell:h]h-Legacy GPIO controllers may even have 1 cell:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj{ubh)}(h gpios = <:c:type:`gpio` offset>;h](h gpios = <}(hjhhhNhNubh)}(h:c:type:`gpio`h]j$)}(hjh]hgpio}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]refdoch refdomainjreftypetype refexplicitrefwarnjjjgpiouh1hhjzhMhjubh offset>;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjzhMhj{ubeh}(h]h ]h"]h$]h&]uh1j9hj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhMhj ubj)}(hX``of_node_instance_match`` Determine if a chip is the right instance. Must be implemented by any driver using more than one gpio_chip per device tree node. Returns true if gc is the instance indicated by i (which is the first cell in the phandles for GPIO lines and gpio-ranges). h](j)}(h``of_node_instance_match``h]j$)}(hjRh]hof_node_instance_match}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjPubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjLubj:)}(hhh]h)}(hDetermine if a chip is the right instance. Must be implemented by any driver using more than one gpio_chip per device tree node. Returns true if gc is the instance indicated by i (which is the first cell in the phandles for GPIO lines and gpio-ranges).h]hDetermine if a chip is the right instance. Must be implemented by any driver using more than one gpio_chip per device tree node. Returns true if gc is the instance indicated by i (which is the first cell in the phandles for GPIO lines and gpio-ranges).}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjhubah}(h]h ]h"]h$]h&]uh1j9hjLubeh}(h]h ]h"]h$]h&]uh1jhjghMhj ubj)}(hl``of_xlate`` Callback to translate a device tree GPIO specifier into a chip- relative GPIO number and flags.h](j)}(h ``of_xlate``h]j$)}(hjh]hof_xlate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(h_Callback to translate a device tree GPIO specifier into a chip- relative GPIO number and flags.h]h_Callback to translate a device tree GPIO specifier into a chip- relative GPIO number and flags.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjhhubh)}(hA gpio_chip can help platforms abstract various sources of GPIOs so they can all be accessed through a common programming interface. Example sources would be SOC controllers, FPGAs, multifunction chips, dedicated GPIO expanders, and so on.h]hA gpio_chip can help platforms abstract various sources of GPIOs so they can all be accessed through a common programming interface. Example sources would be SOC controllers, FPGAs, multifunction chips, dedicated GPIO expanders, and so on.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjhhubh)}(hX Each chip controls a number of signals, identified in method calls by "offset" values in the range 0..(**ngpio** - 1). When those signals are referenced through calls like gpio_get_value(gpio), the offset is calculated by subtracting **base** from the gpio number.h](hkEach chip controls a number of signals, identified in method calls by “offset” values in the range 0..(}(hjhhhNhNubj)}(h **ngpio**h]hngpio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh{ - 1). When those signals are referenced through calls like gpio_get_value(gpio), the offset is calculated by subtracting }(hjhhhNhNubj)}(h**base**h]hbase}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh from the gpio number.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjhhubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0"for_each_hwgpio_in_range (C macro)c.for_each_hwgpio_in_rangehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hfor_each_hwgpio_in_rangeh]j@)}(hfor_each_hwgpio_in_rangeh]ji)}(hfor_each_hwgpio_in_rangeh]jo)}(hj9h]hfor_each_hwgpio_in_range}(hjChhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj;hhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMubah}(h]h ]h"]h$]h&]jjjuh1j?jjhj7hhhjVhMubah}(h]j2ah ](jjeh"]h$]h&]jj)jhuh1j9hjVhMhj4hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj4hhhjVhMubeh}(h]h ](jmacroeh"]h$]h&]jjjjojjojjjuh1j4hhhjhNhNubh)}(h>``for_each_hwgpio_in_range (_chip, _i, _base, _size, _label)``h]j$)}(hjuh]h:for_each_hwgpio_in_range (_chip, _i, _base, _size, _label)}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjsubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjhhubh block_quote)}(h)Iterates over all GPIOs in a given range h]h)}(h(Iterates over all GPIOs in a given rangeh]h(Iterates over all GPIOs in a given range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhjhhubj)}(hX**Parameters** ``_chip`` Chip to iterate over. ``_i`` Loop counter. ``_base`` First GPIO in the ranger. ``_size`` Amount of GPIOs to check starting from **base**. ``_label`` Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM!hjubj)}(hhh](j)}(h ``_chip`` Chip to iterate over. h](j)}(h ``_chip``h]j$)}(hjh]h_chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(hChip to iterate over.h]hChip to iterate over.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h``_i`` Loop counter. h](j)}(h``_i``h]j$)}(hjh]h_i}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(h Loop counter.h]h Loop counter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h$``_base`` First GPIO in the ranger. h](j)}(h ``_base``h]j$)}(hj=h]h_base}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj;ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM hj7ubj:)}(hhh]h)}(hFirst GPIO in the ranger.h]hFirst GPIO in the ranger.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhM hjSubah}(h]h ]h"]h$]h&]uh1j9hj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhM hjubj)}(h;``_size`` Amount of GPIOs to check starting from **base**. h](j)}(h ``_size``h]j$)}(hjvh]h_size}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjtubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM!hjpubj:)}(hhh]h)}(h0Amount of GPIOs to check starting from **base**.h](h'Amount of GPIOs to check starting from }(hjhhhNhNubj)}(h**base**h]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM!hjubah}(h]h ]h"]h$]h&]uh1j9hjpubeh}(h]h ]h"]h$]h&]uh1jhjhM!hjubj)}(hj``_label`` Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.h](j)}(h ``_label``h]j$)}(hjh]h_label}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM"hjubj:)}(hhh]h)}(h_Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.h]h_Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM"hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM"hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0for_each_hwgpio (C macro)c.for_each_hwgpiohNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hfor_each_hwgpioh]j@)}(hfor_each_hwgpioh]ji)}(hfor_each_hwgpioh]jo)}(hjh]hfor_each_hwgpio}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM,ubah}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj1hM,ubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j9hj1hM,hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj1hM,ubeh}(h]h ](jmacroeh"]h$]h&]jjjjJjjJjjjuh1j4hhhjhNhNubh)}(h'``for_each_hwgpio (_chip, _i, _label)``h]j$)}(hjPh]h#for_each_hwgpio (_chip, _i, _label)}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM.hjhhubj)}(h(Iterates over all GPIOs for given chip. h]h)}(h'Iterates over all GPIOs for given chip.h]h'Iterates over all GPIOs for given chip.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM,hjfubah}(h]h ]h"]h$]h&]uh1jhjxhM,hjhhubj)}(h**Parameters** ``_chip`` Chip to iterate over. ``_i`` Loop counter. ``_label`` Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM0hjubj)}(hhh](j)}(h ``_chip`` Chip to iterate over. h](j)}(h ``_chip``h]j$)}(hjh]h_chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM-hjubj:)}(hhh]h)}(hChip to iterate over.h]hChip to iterate over.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM-hjubj)}(h``_i`` Loop counter. h](j)}(h``_i``h]j$)}(hjh]h_i}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM.hjubj:)}(hhh]h)}(h Loop counter.h]h Loop counter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM.hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM.hjubj)}(hj``_label`` Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.h](j)}(h ``_label``h]j$)}(hjh]h_label}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM/hjubj:)}(hhh]h)}(h_Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.h]h_Place to store the address of the label if the GPIO is requested. Set to NULL for unused GPIOs.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hM/hj,ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj+hM/hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0*for_each_requested_gpio_in_range (C macro)"c.for_each_requested_gpio_in_rangehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h for_each_requested_gpio_in_rangeh]j@)}(h for_each_requested_gpio_in_rangeh]ji)}(h for_each_requested_gpio_in_rangeh]jo)}(hjih]h for_each_requested_gpio_in_range}(hjshhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjoubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjkhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM6ubah}(h]h ]h"]h$]h&]jjjuh1j?jjhjghhhjhM6ubah}(h]jbah ](jjeh"]h$]h&]jj)jhuh1j9hjhM6hjdhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjdhhhjhM6ubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubh)}(hF``for_each_requested_gpio_in_range (_chip, _i, _base, _size, _label)``h]j$)}(hjh]hBfor_each_requested_gpio_in_range (_chip, _i, _base, _size, _label)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM8hjhhubj)}(h/iterates over requested GPIOs in a given range h]h)}(h.iterates over requested GPIOs in a given rangeh]h.iterates over requested GPIOs in a given range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM6hjubah}(h]h ]h"]h$]h&]uh1jhjhM6hjhhubj)}(h**Parameters** ``_chip`` the chip to query ``_i`` loop variable ``_base`` first GPIO in the range ``_size`` amount of GPIOs to check starting from **base** ``_label`` label of current GPIOh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM:hjubj)}(hhh](j)}(h``_chip`` the chip to query h](j)}(h ``_chip``h]j$)}(hjh]h_chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM7hjubj:)}(hhh]h)}(hthe chip to queryh]hthe chip to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM7hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM7hjubj)}(h``_i`` loop variable h](j)}(h``_i``h]j$)}(hj2h]h_i}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj0ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM8hj,ubj:)}(hhh]h)}(h loop variableh]h loop variable}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhM8hjHubah}(h]h ]h"]h$]h&]uh1j9hj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhM8hjubj)}(h"``_base`` first GPIO in the range h](j)}(h ``_base``h]j$)}(hjkh]h_base}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjiubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM9hjeubj:)}(hhh]h)}(hfirst GPIO in the rangeh]hfirst GPIO in the range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9hjubah}(h]h ]h"]h$]h&]uh1j9hjeubeh}(h]h ]h"]h$]h&]uh1jhjhM9hjubj)}(h:``_size`` amount of GPIOs to check starting from **base** h](j)}(h ``_size``h]j$)}(hjh]h_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM:hjubj:)}(hhh]h)}(h/amount of GPIOs to check starting from **base**h](h'amount of GPIOs to check starting from }(hjhhhNhNubj)}(h**base**h]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM:hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjubj)}(h ``_label`` label of current GPIOh](j)}(h ``_label``h]j$)}(hjh]h_label}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM<hjubj:)}(hhh]h)}(hlabel of current GPIOh]hlabel of current GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM;hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM<hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiochip_add_data (C macro)c.gpiochip_add_datahNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hgpiochip_add_datah]j@)}(hgpiochip_add_datah]ji)}(hgpiochip_add_datah]jo)}(hj?h]hgpiochip_add_data}(hjIhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjEubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjAhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMKubah}(h]h ]h"]h$]h&]jjjuh1j?jjhj=hhhj\hMKubah}(h]j8ah ](jjeh"]h$]h&]jj)jhuh1j9hj\hMKhj:hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj:hhhj\hMKubeh}(h]h ](jmacroeh"]h$]h&]jjjjujjujjjuh1j4hhhjhNhNubh)}(h ``gpiochip_add_data (gc, data)``h]j$)}(hj{h]hgpiochip_add_data (gc, data)}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjyubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMMhjhhubj)}(hregister a gpio_chip h]h)}(hregister a gpio_chiph]hregister a gpio_chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMKhjubah}(h]h ]h"]h$]h&]uh1jhjhMKhjhhubj)}(hX-**Parameters** ``gc`` the chip to register, with gc->base initialized ``data`` driver-private data associated with this chip **Context** potentially before irqs will work **Description** When gpiochip_add_data() is called very early during boot, so that GPIOs can be freely used, the gc->parent device must be registered before the gpio framework's arch_initcall(). Otherwise sysfs initialization for GPIOs will fail rudely. gpiochip_add_data() must only be called after gpiolib initialization, i.e. after core_initcall(). If gc->base is negative, this requests dynamic assignment of a range of valid GPIOs. **Return** A negative errno if the chip can't be registered, such as because the gc->base is invalid or already associated with a different chip. Otherwise it returns zero as a success code.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMOhjubj)}(hhh](j)}(h7``gc`` the chip to register, with gc->base initialized h](j)}(h``gc``h]j$)}(hjh]hgc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMLhjubj:)}(hhh]h)}(h/the chip to register, with gc->base initializedh]h/the chip to register, with gc->base initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMLhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMLhjubj)}(h7``data`` driver-private data associated with this chip h](j)}(h``data``h]j$)}(hjh]hdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMMhjubj:)}(hhh]h)}(h-driver-private data associated with this chiph]h-driver-private data associated with this chip}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hjCh]hContext}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMOhjubh)}(h!potentially before irqs will workh]h!potentially before irqs will work}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMOhjubh)}(h**Description**h]j)}(hjjh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMQhjubh)}(hWhen gpiochip_add_data() is called very early during boot, so that GPIOs can be freely used, the gc->parent device must be registered before the gpio framework's arch_initcall(). Otherwise sysfs initialization for GPIOs will fail rudely.h]hWhen gpiochip_add_data() is called very early during boot, so that GPIOs can be freely used, the gc->parent device must be registered before the gpio framework’s arch_initcall(). Otherwise sysfs initialization for GPIOs will fail rudely.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMPhjubh)}(hagpiochip_add_data() must only be called after gpiolib initialization, i.e. after core_initcall().h]hagpiochip_add_data() must only be called after gpiolib initialization, i.e. after core_initcall().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMUhjubh)}(hTIf gc->base is negative, this requests dynamic assignment of a range of valid GPIOs.h]hTIf gc->base is negative, this requests dynamic assignment of a range of valid GPIOs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMXhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM[hjubh)}(hA negative errno if the chip can't be registered, such as because the gc->base is invalid or already associated with a different chip. Otherwise it returns zero as a success code.h]hA negative errno if the chip can’t be registered, such as because the gc->base is invalid or already associated with a different chip. Otherwise it returns zero as a success code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhM\hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpio_pin_range (C struct)c.gpio_pin_rangehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hgpio_pin_rangeh]j@)}(hstruct gpio_pin_rangeh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMcubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMcubji)}(hgpio_pin_rangeh]jo)}(hjh]hgpio_pin_range}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMcubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMcubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMchjhhubj)}(hhh]h)}(h#pin range controlled by a gpio chiph]h#pin range controlled by a gpio chip}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj3hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMcubeh}(h]h ](jstructeh"]h$]h&]jjjjNjjNjjjuh1j4hhhjhNhNubj)}(hXi**Definition**:: struct gpio_pin_range { struct list_head node; struct pinctrl_dev *pctldev; struct pinctrl_gpio_range range; }; **Members** ``node`` list for maintaining set of pin ranges, used internally ``pctldev`` pinctrl device which handles corresponding pins ``range`` actual range of pins controlled by a gpio controllerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh:}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjRubj)}(h{struct gpio_pin_range { struct list_head node; struct pinctrl_dev *pctldev; struct pinctrl_gpio_range range; };h]h{struct gpio_pin_range { struct list_head node; struct pinctrl_dev *pctldev; struct pinctrl_gpio_range range; };}hjssbah}(h]h ]h"]h$]h&]jjuh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjRubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjRubj)}(hhh](j)}(hA``node`` list for maintaining set of pin ranges, used internally h](j)}(h``node``h]j$)}(hjh]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(h7list for maintaining set of pin ranges, used internallyh]h7list for maintaining set of pin ranges, used internally}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h<``pctldev`` pinctrl device which handles corresponding pins h](j)}(h ``pctldev``h]j$)}(hjh]hpctldev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(h/pinctrl device which handles corresponding pinsh]h/pinctrl device which handles corresponding pins}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``range`` actual range of pins controlled by a gpio controllerh](j)}(h ``range``h]j$)}(hjh]hrange}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhjubj:)}(hhh]h)}(h4actual range of pins controlled by a gpio controllerh]h4actual range of pins controlled by a gpio controller}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:23: ./include/linux/gpio/driver.hhMhj+ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj*hMhjubeh}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpio_to_desc (C function)c.gpio_to_deschNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/struct gpio_desc * gpio_to_desc (unsigned gpio)h]j@)}(h-struct gpio_desc *gpio_to_desc(unsigned gpio)h](jF)}(hjIh]hstruct}(hjohhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjkhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKubjX)}(h h]h }(hj}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkhhhj|hKubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameNjj)}j]j ASTIdentifier)}j gpio_to_descsbc.gpio_to_descasbuh1hhjkhhhj|hKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkhhhj|hKubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjkhhhj|hKubji)}(h gpio_to_desch]jo)}(hjh]h gpio_to_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjkhhhj|hKubhdesc_parameterlist)}(h(unsigned gpio)h]hdesc_parameter)}(h unsigned gpioh](hdesc_sig_keyword_type)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hgpioh]hgpio}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjkhhhj|hKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjghhhj|hKubah}(h]jbah ](jjeh"]h$]h&]jj)jhuh1j9hj|hKhjdhhubj)}(hhh]h)}(h'Convert a GPIO number to its descriptorh]h'Convert a GPIO number to its descriptor}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj:hhubah}(h]h ]h"]h$]h&]uh1jhjdhhhj|hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjUjjUjjjuh1j4hhhjhNhNubj)}(h**Parameters** ``unsigned gpio`` global GPIO number **Return** The GPIO descriptor associated with the given GPIO, or ``NULL`` if no GPIO with the given number exists in the system.h](h)}(h**Parameters**h]j)}(hj_h]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjYubj)}(hhh]j)}(h%``unsigned gpio`` global GPIO number h](j)}(h``unsigned gpio``h]j$)}(hj~h]h unsigned gpio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj|ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjxubj:)}(hhh]h)}(hglobal GPIO numberh]hglobal GPIO number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjxubeh}(h]h ]h"]h$]h&]uh1jhjhKhjuubah}(h]h ]h"]h$]h&]uh1jhjYubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjYubh)}(hvThe GPIO descriptor associated with the given GPIO, or ``NULL`` if no GPIO with the given number exists in the system.h](h7The GPIO descriptor associated with the given GPIO, or }(hjhhhNhNubj$)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh7 if no GPIO with the given number exists in the system.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!gpio_device_get_desc (C function)c.gpio_device_get_deschNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hVstruct gpio_desc * gpio_device_get_desc (struct gpio_device *gdev, unsigned int hwnum)h]j@)}(hTstruct gpio_desc *gpio_device_get_desc(struct gpio_device *gdev, unsigned int hwnum)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj hhhjhKubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj/hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]j)}jgpio_device_get_descsbc.gpio_device_get_descasbuh1hhj hhhjhKubjX)}(h h]h }(hjPhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj hhhjhKubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhKubji)}(hgpio_device_get_desch]jo)}(hjMh]hgpio_device_get_desc}(hjohhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjkubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj hhhjhKubj)}(h.(struct gpio_device *gdev, unsigned int hwnum)h](j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jKc.gpio_device_get_descasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hgdevh]hgdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned int hwnumh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hj$hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hhwnumh]hhwnum}(hj2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhj hhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(hWget the GPIO descriptor corresponding to the given hardware number for this GPIO deviceh]hWget the GPIO descriptor corresponding to the given hardware number for this GPIO device}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjYhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtjjtjjjuh1j4hhhjhNhNubj)}(hXW**Parameters** ``struct gpio_device *gdev`` GPIO device to get the descriptor from ``unsigned int hwnum`` hardware number of the GPIO for this chip **Return** A pointer to the GPIO descriptor or ``EINVAL`` if no GPIO exists in the given chip for the specified hardware number or ``ENODEV`` if the underlying chip already vanished. **Description** The reference count of struct gpio_device is *NOT* increased like when the GPIO is being requested for exclusive usage. It's up to the caller to make sure the GPIO device will stay alive together with the descriptor returned by this function.h](h)}(h**Parameters**h]j)}(hj~h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjxubj)}(hhh](j)}(hD``struct gpio_device *gdev`` GPIO device to get the descriptor from h](j)}(h``struct gpio_device *gdev``h]j$)}(hjh]hstruct gpio_device *gdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjubj:)}(hhh]h)}(h&GPIO device to get the descriptor fromh]h&GPIO device to get the descriptor from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hA``unsigned int hwnum`` hardware number of the GPIO for this chip h](j)}(h``unsigned int hwnum``h]j$)}(hjh]hunsigned int hwnum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjubj:)}(hhh]h)}(h)hardware number of the GPIO for this chiph]h)hardware number of the GPIO for this chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjxubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjxubh)}(hA pointer to the GPIO descriptor or ``EINVAL`` if no GPIO exists in the given chip for the specified hardware number or ``ENODEV`` if the underlying chip already vanished.h](h$A pointer to the GPIO descriptor or }(hj'hhhNhNubj$)}(h ``EINVAL``h]hEINVAL}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj'ubhJ if no GPIO exists in the given chip for the specified hardware number or }(hj'hhhNhNubj$)}(h ``ENODEV``h]hENODEV}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj'ubh) if the underlying chip already vanished.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjxubh)}(h**Description**h]j)}(hj\h]h Description}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjxubh)}(hThe reference count of struct gpio_device is *NOT* increased like when the GPIO is being requested for exclusive usage. It's up to the caller to make sure the GPIO device will stay alive together with the descriptor returned by this function.h](h-The reference count of struct gpio_device is }(hjrhhhNhNubhemphasis)}(h*NOT*h]hNOT}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjrubh increased like when the GPIO is being requested for exclusive usage. It’s up to the caller to make sure the GPIO device will stay alive together with the descriptor returned by this function.}(hjrhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0desc_to_gpio (C function)c.desc_to_gpiohNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/int desc_to_gpio (const struct gpio_desc *desc)h]j@)}(h.int desc_to_gpio(const struct gpio_desc *desc)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubji)}(h desc_to_gpioh]jo)}(h desc_to_gpioh]h desc_to_gpio}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhKubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjF)}(hjIh]hstruct}(hj hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj, hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj) ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj. modnameN classnameNjj)}j]j)}jjsbc.desc_to_gpioasbuh1hhjubjX)}(h h]h }(hjL hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjZ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdesch]hdesc}(hjg hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(h2convert a GPIO descriptor to the integer namespaceh]h2convert a GPIO descriptor to the integer namespace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``const struct gpio_desc *desc`` GPIO descriptor **Description** This should disappear in the future but is needed since we still use GPIO numbers for error messages and sysfs nodes. **Return** The global GPIO number for the GPIO specified by its descriptor.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj ubj)}(hhh]j)}(h1``const struct gpio_desc *desc`` GPIO descriptor h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hj h]hconst struct gpio_desc *desc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj ubj:)}(hhh]h)}(hGPIO descriptorh]hGPIO descriptor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj !h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj !ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj ubh)}(huThis should disappear in the future but is needed since we still use GPIO numbers for error messages and sysfs nodes.h]huThis should disappear in the future but is needed since we still use GPIO numbers for error messages and sysfs nodes.}(hj#!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj ubh)}(h **Return**h]j)}(hj4!h]hReturn}(hj6!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2!ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj ubh)}(h@The global GPIO number for the GPIO specified by its descriptor.h]h@The global GPIO number for the GPIO specified by its descriptor.}(hjJ!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_hwgpio (C function)c.gpiod_hwgpiohNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/int gpiod_hwgpio (const struct gpio_desc *desc)h]j@)}(h.int gpiod_hwgpio(const struct gpio_desc *desc)h](j)}(hinth]hint}(hjy!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju!hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKubjX)}(h h]h }(hj!hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhju!hhhj!hKubji)}(h gpiod_hwgpioh]jo)}(h gpiod_hwgpioh]h gpiod_hwgpio}(hj!hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj!ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhju!hhhj!hKubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hj!hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj!ubjX)}(h h]h }(hj!hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj!ubjF)}(hjIh]hstruct}(hj!hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj!ubjX)}(h h]h }(hj!hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj!ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj!hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jj!sbc.gpiod_hwgpioasbuh1hhj!ubjX)}(h h]h }(hj"hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj!ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjo)}(hdesch]hdesc}(hj*"hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubah}(h]h ]h"]h$]h&]jjuh1jhju!hhhj!hKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjq!hhhj!hKubah}(h]jl!ah ](jjeh"]h$]h&]jj)jhuh1j9hj!hKhjn!hhubj)}(hhh]h)}(hEReturn the GPIO number of the passed descriptor relative to its chip.h]hEReturn the GPIO number of the passed descriptor relative to its chip.}(hjT"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjQ"hhubah}(h]h ]h"]h$]h&]uh1jhjn!hhhj!hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjl"jjl"jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const struct gpio_desc *desc`` GPIO descriptor **Return** Hardware offset of the GPIO represented by the descriptor.h](h)}(h**Parameters**h]j)}(hjv"h]h Parameters}(hjx"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt"ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjp"ubj)}(hhh]j)}(h1``const struct gpio_desc *desc`` GPIO descriptor h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hj"h]hconst struct gpio_desc *desc}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj"ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj"ubj:)}(hhh]h)}(hGPIO descriptorh]hGPIO descriptor}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj"ubah}(h]h ]h"]h$]h&]uh1j9hj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hKhj"ubah}(h]h ]h"]h$]h&]uh1jhjp"ubh)}(h **Return**h]j)}(hj"h]hReturn}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjp"ubh)}(h:Hardware offset of the GPIO represented by the descriptor.h]h:Hardware offset of the GPIO represented by the descriptor.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjp"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_to_chip (C function)c.gpiod_to_chiphNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h?struct gpio_chip * gpiod_to_chip (const struct gpio_desc *desc)h]j@)}(h=struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc)h](jF)}(hjIh]hstruct}(hj#hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj#hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKubjX)}(h h]h }(hj##hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#hhhj"#hKubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hj4#hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj1#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6#modnameN classnameNjj)}j]j)}j gpiod_to_chipsbc.gpiod_to_chipasbuh1hhj#hhhj"#hKubjX)}(h h]h }(hjU#hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#hhhj"#hKubj)}(hjh]h*}(hjc#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhj"#hKubji)}(h gpiod_to_chiph]jo)}(hjR#h]h gpiod_to_chip}(hjt#hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjp#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj#hhhj"#hKubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hj#hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj#ubjX)}(h h]h }(hj#hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#ubjF)}(hjIh]hstruct}(hj#hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj#ubjX)}(h h]h }(hj#hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj#hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]jP#c.gpiod_to_chipasbuh1hhj#ubjX)}(h h]h }(hj#hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubjo)}(hdesch]hdesc}(hj$hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj#ubah}(h]h ]h"]h$]h&]jjuh1jhj#hhhj"#hKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj #hhhj"#hKubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1j9hj"#hKhj #hhubj)}(hhh]h)}(h7Return the GPIO chip to which a GPIO descriptor belongsh]h7Return the GPIO chip to which a GPIO descriptor belongs}(hj+$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhj($hhubah}(h]h ]h"]h$]h&]uh1jhj #hhhj"#hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjC$jjC$jjjuh1j4hhhjhNhNubj)}(hXF**Parameters** ``const struct gpio_desc *desc`` descriptor to return the chip of **Description** *DEPRECATED* This function is unsafe and should not be used. Using the chip address without taking the SRCU read lock may result in dereferencing a dangling pointer. **Return** Address of the GPIO chip backing this device.h](h)}(h**Parameters**h]j)}(hjM$h]h Parameters}(hjO$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK$ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjG$ubj)}(hhh]j)}(hB``const struct gpio_desc *desc`` descriptor to return the chip of h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjl$h]hconst struct gpio_desc *desc}(hjn$hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjj$ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjf$ubj:)}(hhh]h)}(h descriptor to return the chip ofh]h descriptor to return the chip of}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1j9hjf$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhjc$ubah}(h]h ]h"]h$]h&]uh1jhjG$ubh)}(h**Description**h]j)}(hj$h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjG$ubh)}(h*DEPRECATED* This function is unsafe and should not be used. Using the chip address without taking the SRCU read lock may result in dereferencing a dangling pointer.h](j{)}(h *DEPRECATED*h]h DEPRECATED}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj$ubh This function is unsafe and should not be used. Using the chip address without taking the SRCU read lock may result in dereferencing a dangling pointer.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chKhjG$ubh)}(h **Return**h]j)}(hj$h]hReturn}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjG$ubh)}(h-Address of the GPIO chip backing this device.h]h-Address of the GPIO chip backing this device.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjG$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!gpiod_to_gpio_device (C function)c.gpiod_to_gpio_devicehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hBstruct gpio_device * gpiod_to_gpio_device (struct gpio_desc *desc)h]j@)}(h@struct gpio_device *gpiod_to_gpio_device(struct gpio_desc *desc)h](jF)}(hjIh]hstruct}(hj!%hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj%hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj/%hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj%hhhj.%hMubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj@%hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj=%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjB%modnameN classnameNjj)}j]j)}jgpiod_to_gpio_devicesbc.gpiod_to_gpio_deviceasbuh1hhj%hhhj.%hMubjX)}(h h]h }(hja%hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj%hhhj.%hMubj)}(hjh]h*}(hjo%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj.%hMubji)}(hgpiod_to_gpio_deviceh]jo)}(hj^%h]hgpiod_to_gpio_device}(hj%hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj|%ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj%hhhj.%hMubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj%hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj%ubjX)}(h h]h }(hj%hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj%ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj%hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j\%c.gpiod_to_gpio_deviceasbuh1hhj%ubjX)}(h h]h }(hj%hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubjo)}(hdesch]hdesc}(hj%hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj%ubah}(h]h ]h"]h$]h&]jjuh1jhj%hhhj.%hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj%hhhj.%hMubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1j9hj.%hMhj%hhubj)}(hhh]h)}(h8Return the GPIO device to which this descriptor belongs.h]h8Return the GPIO device to which this descriptor belongs.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj&hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj.%hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4&jj4&jjjuh1j4hhhjhNhNubj)}(hXW**Parameters** ``struct gpio_desc *desc`` Descriptor for which to return the GPIO device. **Description** This *DOES NOT* increase the reference count of the GPIO device as it's expected that the descriptor is requested and the users already holds a reference to the device. **Return** Address of the GPIO device owning this descriptor.h](h)}(h**Parameters**h]j)}(hj>&h]h Parameters}(hj@&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<&ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj8&ubj)}(hhh]j)}(hK``struct gpio_desc *desc`` Descriptor for which to return the GPIO device. h](j)}(h``struct gpio_desc *desc``h]j$)}(hj]&h]hstruct gpio_desc *desc}(hj_&hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj[&ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjW&ubj:)}(hhh]h)}(h/Descriptor for which to return the GPIO device.h]h/Descriptor for which to return the GPIO device.}(hjv&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr&hMhjs&ubah}(h]h ]h"]h$]h&]uh1j9hjW&ubeh}(h]h ]h"]h$]h&]uh1jhjr&hMhjT&ubah}(h]h ]h"]h$]h&]uh1jhj8&ubh)}(h**Description**h]j)}(hj&h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj8&ubh)}(hThis *DOES NOT* increase the reference count of the GPIO device as it's expected that the descriptor is requested and the users already holds a reference to the device.h](hThis }(hj&hhhNhNubj{)}(h *DOES NOT*h]hDOES NOT}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj&ubh increase the reference count of the GPIO device as it’s expected that the descriptor is requested and the users already holds a reference to the device.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj8&ubh)}(h **Return**h]j)}(hj&h]hReturn}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj8&ubh)}(h2Address of the GPIO device owning this descriptor.h]h2Address of the GPIO device owning this descriptor.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj8&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!gpio_device_get_base (C function)c.gpio_device_get_basehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h3int gpio_device_get_base (struct gpio_device *gdev)h]j@)}(h2int gpio_device_get_base(struct gpio_device *gdev)h](j)}(hinth]hint}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM'ubjX)}(h h]h }(hj%'hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj'hhhj$'hM'ubji)}(hgpio_device_get_baseh]jo)}(hgpio_device_get_baseh]hgpio_device_get_base}(hj7'hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj3'ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj'hhhj$'hM'ubj)}(h(struct gpio_device *gdev)h]j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hjS'hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjO'ubjX)}(h h]h }(hj`'hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjO'ubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hjq'hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjn'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs'modnameN classnameNjj)}j]j)}jj9'sbc.gpio_device_get_baseasbuh1hhjO'ubjX)}(h h]h }(hj'hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjO'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO'ubjo)}(hgdevh]hgdev}(hj'hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjO'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjK'ubah}(h]h ]h"]h$]h&]jjuh1jhj'hhhj$'hM'ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj'hhhj$'hM'ubah}(h]j 'ah ](jjeh"]h$]h&]jj)jhuh1j9hj$'hM'hj 'hhubj)}(hhh]h)}(h1Get the base GPIO number allocated by this deviceh]h1Get the base GPIO number allocated by this device}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM'hj'hhubah}(h]h ]h"]h$]h&]uh1jhj 'hhhj$'hM'ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'jj'jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_device *gdev`` GPIO device **Return** First GPIO number in the global GPIO numberspace for this device.h](h)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM+hj'ubj)}(hhh]j)}(h)``struct gpio_device *gdev`` GPIO device h](j)}(h``struct gpio_device *gdev``h]j$)}(hj(h]hstruct gpio_device *gdev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj(ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM(hj(ubj:)}(hhh]h)}(h GPIO deviceh]h GPIO device}(hj0(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,(hM(hj-(ubah}(h]h ]h"]h$]h&]uh1j9hj(ubeh}(h]h ]h"]h$]h&]uh1jhj,(hM(hj(ubah}(h]h ]h"]h$]h&]uh1jhj'ubh)}(h **Return**h]j)}(hjR(h]hReturn}(hjT(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP(ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM*hj'ubh)}(hAFirst GPIO number in the global GPIO numberspace for this device.h]hAFirst GPIO number in the global GPIO numberspace for this device.}(hjh(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM*hj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0"gpio_device_get_label (C function)c.gpio_device_get_labelhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h=const char * gpio_device_get_label (struct gpio_device *gdev)h]j@)}(h;const char *gpio_device_get_label(struct gpio_device *gdev)h](jF)}(hjh]hconst}(hj(hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj(hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM4ubjX)}(h h]h }(hj(hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj(hhhj(hM4ubj)}(hcharh]hchar}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhj(hM4ubjX)}(h h]h }(hj(hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj(hhhj(hM4ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhj(hM4ubji)}(hgpio_device_get_labelh]jo)}(hgpio_device_get_labelh]hgpio_device_get_label}(hj(hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj(ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj(hhhj(hM4ubj)}(h(struct gpio_device *gdev)h]j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hj(hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj(ubjX)}(h h]h }(hj )hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj(ubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj)hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j)}jj(sbc.gpio_device_get_labelasbuh1hhj(ubjX)}(h h]h }(hj:)hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj(ubj)}(hjh]h*}(hjH)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjo)}(hgdevh]hgdev}(hjU)hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj(ubah}(h]h ]h"]h$]h&]jjuh1jhj(hhhj(hM4ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj(hhhj(hM4ubah}(h]j(ah ](jjeh"]h$]h&]jj)jhuh1j9hj(hM4hj(hhubj)}(hhh]h)}(h!Get the label of this GPIO deviceh]h!Get the label of this GPIO device}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM4hj|)hhubah}(h]h ]h"]h$]h&]uh1jhj(hhhj(hM4ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_device *gdev`` GPIO device **Return** Pointer to the string containing the GPIO device label. The string's lifetime is tied to that of the underlying GPIO device.h](h)}(h**Parameters**h]j)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM8hj)ubj)}(hhh]j)}(h)``struct gpio_device *gdev`` GPIO device h](j)}(h``struct gpio_device *gdev``h]j$)}(hj)h]hstruct gpio_device *gdev}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj)ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM5hj)ubj:)}(hhh]h)}(h GPIO deviceh]h GPIO device}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hM5hj)ubah}(h]h ]h"]h$]h&]uh1j9hj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hM5hj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubh)}(h **Return**h]j)}(hj)h]hReturn}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM7hj)ubh)}(h|Pointer to the string containing the GPIO device label. The string's lifetime is tied to that of the underlying GPIO device.h]h~Pointer to the string containing the GPIO device label. The string’s lifetime is tied to that of the underlying GPIO device.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM7hj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!gpio_device_get_chip (C function)c.gpio_device_get_chiphNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hBstruct gpio_chip * gpio_device_get_chip (struct gpio_device *gdev)h]j@)}(h@struct gpio_chip *gpio_device_get_chip(struct gpio_device *gdev)h](jF)}(hjIh]hstruct}(hj@*hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj<*hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMBubjX)}(h h]h }(hjN*hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<*hhhjM*hMBubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hj_*hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj\*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetja*modnameN classnameNjj)}j]j)}jgpio_device_get_chipsbc.gpio_device_get_chipasbuh1hhj<*hhhjM*hMBubjX)}(h h]h }(hj*hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<*hhhjM*hMBubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<*hhhjM*hMBubji)}(hgpio_device_get_chiph]jo)}(hj}*h]hgpio_device_get_chip}(hj*hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj*ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj<*hhhjM*hMBubj)}(h(struct gpio_device *gdev)h]j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hj*hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj*ubjX)}(h h]h }(hj*hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj*ubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj*hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j{*c.gpio_device_get_chipasbuh1hhj*ubjX)}(h h]h }(hj*hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj*ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjo)}(hgdevh]hgdev}(hj+hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj*ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj*ubah}(h]h ]h"]h$]h&]jjuh1jhj<*hhhjM*hMBubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj8*hhhjM*hMBubah}(h]j3*ah ](jjeh"]h$]h&]jj)jhuh1j9hjM*hMBhj5*hhubj)}(hhh]h)}(h4Get the gpio_chip implementation of this GPIO deviceh]h4Get the gpio_chip implementation of this GPIO device}(hj;+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMBhj8+hhubah}(h]h ]h"]h$]h&]uh1jhj5*hhhjM*hMBubeh}(h]h ](jfunctioneh"]h$]h&]jjjjS+jjS+jjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_device *gdev`` GPIO device **Return** Address of the GPIO chip backing this device. **Description** *DEPRECATED* Until we can get rid of all non-driver users of struct gpio_chip, we must provide a way of retrieving the pointer to it from struct gpio_device. This is *NOT* safe as the GPIO API is considered to be hot-unpluggable and the chip can dissapear at any moment (unlike reference-counted struct gpio_device). Use at your own risk.h](h)}(h**Parameters**h]j)}(hj]+h]h Parameters}(hj_+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[+ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMFhjW+ubj)}(hhh]j)}(h)``struct gpio_device *gdev`` GPIO device h](j)}(h``struct gpio_device *gdev``h]j$)}(hj|+h]hstruct gpio_device *gdev}(hj~+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjz+ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMChjv+ubj:)}(hhh]h)}(h GPIO deviceh]h GPIO device}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMChj+ubah}(h]h ]h"]h$]h&]uh1j9hjv+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMChjs+ubah}(h]h ]h"]h$]h&]uh1jhjW+ubh)}(h **Return**h]j)}(hj+h]hReturn}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMEhjW+ubh)}(h-Address of the GPIO chip backing this device.h]h-Address of the GPIO chip backing this device.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMEhjW+ubh)}(h**Description**h]j)}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMGhjW+ubh)}(hX<*DEPRECATED* Until we can get rid of all non-driver users of struct gpio_chip, we must provide a way of retrieving the pointer to it from struct gpio_device. This is *NOT* safe as the GPIO API is considered to be hot-unpluggable and the chip can dissapear at any moment (unlike reference-counted struct gpio_device).h](j{)}(h *DEPRECATED*h]h DEPRECATED}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj+ubh Until we can get rid of all non-driver users of struct gpio_chip, we must provide a way of retrieving the pointer to it from struct gpio_device. This is }(hj+hhhNhNubj{)}(h*NOT*h]hNOT}(hj ,hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj+ubh safe as the GPIO API is considered to be hot-unpluggable and the chip can dissapear at any moment (unlike reference-counted struct gpio_device).}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMGhjW+ubh)}(hUse at your own risk.h]hUse at your own risk.}(hj#,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMNhjW+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_is_equal (C function)c.gpiod_is_equalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hQbool gpiod_is_equal (const struct gpio_desc *desc, const struct gpio_desc *other)h]j@)}(hPbool gpiod_is_equal(const struct gpio_desc *desc, const struct gpio_desc *other)h](j)}(hboolh]hbool}(hjR,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN,hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hja,hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjN,hhhj`,hMubji)}(hgpiod_is_equalh]jo)}(hgpiod_is_equalh]hgpiod_is_equal}(hjs,hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjo,ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjN,hhhj`,hMubj)}(h=(const struct gpio_desc *desc, const struct gpio_desc *other)h](j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hj,hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj,ubjX)}(h h]h }(hj,hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj,ubjF)}(hjIh]hstruct}(hj,hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj,ubjX)}(h h]h }(hj,hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj,ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj,hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j)}jju,sbc.gpiod_is_equalasbuh1hhj,ubjX)}(h h]h }(hj,hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj,ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubjo)}(hdesch]hdesc}(hj-hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj,ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubj)}(hconst struct gpio_desc *otherh](jF)}(hjh]hconst}(hj-hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj-ubjX)}(h h]h }(hj)-hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj-ubjF)}(hjIh]hstruct}(hj7-hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj-ubjX)}(h h]h }(hjD-hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj-ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjU-hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjR-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjW-modnameN classnameNjj)}j]j,c.gpiod_is_equalasbuh1hhj-ubjX)}(h h]h }(hjs-hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjo)}(hotherh]hother}(hj-hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj,ubeh}(h]h ]h"]h$]h&]jjuh1jhjN,hhhj`,hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjJ,hhhj`,hMubah}(h]jE,ah ](jjeh"]h$]h&]jj)jhuh1j9hj`,hMhjG,hhubj)}(hhh]h)}(h4Check if two GPIO descriptors refer to the same pin.h]h4Check if two GPIO descriptors refer to the same pin.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj-hhubah}(h]h ]h"]h$]h&]uh1jhjG,hhhj`,hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj-jj-jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const struct gpio_desc *desc`` Descriptor to compare. ``const struct gpio_desc *other`` The second descriptor to compare against. **Return** True if the descriptors refer to the same physical pin. False otherwise.h](h)}(h**Parameters**h]j)}(hj-h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj-ubj)}(hhh](j)}(h8``const struct gpio_desc *desc`` Descriptor to compare. h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hj-h]hconst struct gpio_desc *desc}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj-ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj-ubj:)}(hhh]h)}(hDescriptor to compare.h]hDescriptor to compare.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1j9hj-ubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj-ubj)}(hL``const struct gpio_desc *other`` The second descriptor to compare against. h](j)}(h!``const struct gpio_desc *other``h]j$)}(hj2.h]hconst struct gpio_desc *other}(hj4.hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj0.ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj,.ubj:)}(hhh]h)}(h)The second descriptor to compare against.h]h)The second descriptor to compare against.}(hjK.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG.hMhjH.ubah}(h]h ]h"]h$]h&]uh1j9hj,.ubeh}(h]h ]h"]h$]h&]uh1jhjG.hMhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-ubh)}(h **Return**h]j)}(hjm.h]hReturn}(hjo.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk.ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj-ubh)}(hHTrue if the descriptors refer to the same physical pin. False otherwise.h]hHTrue if the descriptors refer to the same physical pin. False otherwise.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0 gpiod_get_direction (C function)c.gpiod_get_directionhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h0int gpiod_get_direction (struct gpio_desc *desc)h]j@)}(h/int gpiod_get_direction(struct gpio_desc *desc)h](j)}(hinth]hint}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj.hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj.hhhj.hMubji)}(hgpiod_get_directionh]jo)}(hgpiod_get_directionh]hgpiod_get_direction}(hj.hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj.hhhj.hMubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj.hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj.ubjX)}(h h]h }(hj.hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj.ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj /hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj /ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]j)}jj.sbc.gpiod_get_directionasbuh1hhj.ubjX)}(h h]h }(hj-/hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj.ubj)}(hjh]h*}(hj;/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubjo)}(hdesch]hdesc}(hjH/hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj.ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj.ubah}(h]h ]h"]h$]h&]jjuh1jhj.hhhj.hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj.hhhj.hMubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1j9hj.hMhj.hhubj)}(hhh]h)}(h&return the current direction of a GPIOh]h&return the current direction of a GPIO}(hjr/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjo/hhubah}(h]h ]h"]h$]h&]uh1jhj.hhhj.hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_desc *desc`` GPIO to get the direction of **Return** 0 for output, 1 for input, or an error code in case of error. **Description** This function may sleep if gpiod_cansleep() is true.h](h)}(h**Parameters**h]j)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj/ubj)}(hhh]j)}(h8``struct gpio_desc *desc`` GPIO to get the direction of h](j)}(h``struct gpio_desc *desc``h]j$)}(hj/h]hstruct gpio_desc *desc}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj/ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj/ubj:)}(hhh]h)}(hGPIO to get the direction ofh]hGPIO to get the direction of}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1j9hj/ubeh}(h]h ]h"]h$]h&]uh1jhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubh)}(h **Return**h]j)}(hj/h]hReturn}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj/ubh)}(h=0 for output, 1 for input, or an error code in case of error.h]h=0 for output, 1 for input, or an error code in case of error.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj/ubh)}(h**Description**h]j)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj/ubh)}(h4This function may sleep if gpiod_cansleep() is true.h]h4This function may sleep if gpiod_cansleep() is true.}(hj+0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0"gpiod_is_single_ended (C function)c.gpiod_is_single_endedhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h3bool gpiod_is_single_ended (struct gpio_desc *desc)h]j@)}(h2bool gpiod_is_single_ended(struct gpio_desc *desc)h](j)}(hjT,h]hbool}(hjZ0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV0hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjh0hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjV0hhhjg0hMubji)}(hgpiod_is_single_endedh]jo)}(hgpiod_is_single_endedh]hgpiod_is_single_ended}(hjz0hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjv0ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjV0hhhjg0hMubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj0hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj0ubjX)}(h h]h }(hj0hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj0ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj0hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jj|0sbc.gpiod_is_single_endedasbuh1hhj0ubjX)}(h h]h }(hj0hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubjo)}(hdesch]hdesc}(hj0hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj0ubah}(h]h ]h"]h$]h&]jjuh1jhjV0hhhjg0hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjR0hhhjg0hMubah}(h]jM0ah ](jjeh"]h$]h&]jj)jhuh1j9hjg0hMhjO0hhubj)}(hhh]h)}(h/check if the GPIO is configured as single-endedh]h/check if the GPIO is configured as single-ended}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj1hhubah}(h]h ]h"]h$]h&]uh1jhjO0hhhjg0hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj11jj11jjjuh1j4hhhjhNhNubj)}(hXf**Parameters** ``struct gpio_desc *desc`` the GPIO descriptor to check **Description** Returns true if the GPIO is configured as either Open Drain or Open Source. In these modes, the direction of the line cannot always be reliably determined by reading hardware registers, as the "off" state (High-Z) is physically indistinguishable from an input state.h](h)}(h**Parameters**h]j)}(hj;1h]h Parameters}(hj=1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj91ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj51ubj)}(hhh]j)}(h8``struct gpio_desc *desc`` the GPIO descriptor to check h](j)}(h``struct gpio_desc *desc``h]j$)}(hjZ1h]hstruct gpio_desc *desc}(hj\1hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjX1ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjT1ubj:)}(hhh]h)}(hthe GPIO descriptor to checkh]hthe GPIO descriptor to check}(hjs1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo1hMhjp1ubah}(h]h ]h"]h$]h&]uh1j9hjT1ubeh}(h]h ]h"]h$]h&]uh1jhjo1hMhjQ1ubah}(h]h ]h"]h$]h&]uh1jhj51ubh)}(h**Description**h]j)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj51ubh)}(hX Returns true if the GPIO is configured as either Open Drain or Open Source. In these modes, the direction of the line cannot always be reliably determined by reading hardware registers, as the "off" state (High-Z) is physically indistinguishable from an input state.h]hXReturns true if the GPIO is configured as either Open Drain or Open Source. In these modes, the direction of the line cannot always be reliably determined by reading hardware registers, as the “off” state (High-Z) is physically indistinguishable from an input state.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj51ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0&gpiochip_query_valid_mask (C function)c.gpiochip_query_valid_maskhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hLconst unsigned long * gpiochip_query_valid_mask (const struct gpio_chip *gc)h]j@)}(hJconst unsigned long *gpiochip_query_valid_mask(const struct gpio_chip *gc)h](jF)}(hjh]hconst}(hj1hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj1hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM7ubjX)}(h h]h }(hj1hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj1hhhj1hM7ubj)}(hunsignedh]hunsigned}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hM7ubjX)}(h h]h }(hj2hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj1hhhj1hM7ubj)}(hlongh]hlong}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hM7ubjX)}(h h]h }(hj 2hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj1hhhj1hM7ubj)}(hjh]h*}(hj.2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hM7ubji)}(hgpiochip_query_valid_maskh]jo)}(hgpiochip_query_valid_maskh]hgpiochip_query_valid_mask}(hj?2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj;2ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj1hhhj1hM7ubj)}(h(const struct gpio_chip *gc)h]j)}(hconst struct gpio_chip *gch](jF)}(hjh]hconst}(hj[2hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjW2ubjX)}(h h]h }(hjh2hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjW2ubjF)}(hjIh]hstruct}(hjv2hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjW2ubjX)}(h h]h }(hj2hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjW2ubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hj2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2modnameN classnameNjj)}j]j)}jjA2sbc.gpiochip_query_valid_maskasbuh1hhjW2ubjX)}(h h]h }(hj2hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjW2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjW2ubjo)}(hgch]hgc}(hj2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjW2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjS2ubah}(h]h ]h"]h$]h&]jjuh1jhj1hhhj1hM7ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj1hhhj1hM7ubah}(h]j1ah ](jjeh"]h$]h&]jj)jhuh1j9hj1hM7hj1hhubj)}(hhh]h)}(h$return the GPIO validity informationh]h$return the GPIO validity information}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM7hj2hhubah}(h]h ]h"]h$]h&]uh1jhj1hhhj1hM7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``const struct gpio_chip *gc`` gpio chip which validity information is queried **Return** bitmap representing valid GPIOs or NULL if all GPIOs are valid **Description** Some GPIO chips may support configurations where some of the pins aren't available. These chips can have valid_mask set to represent the valid GPIOs. This function can be used to retrieve this information.h](h)}(h**Parameters**h]j)}(hj3h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM;hj3ubj)}(hhh]j)}(hO``const struct gpio_chip *gc`` gpio chip which validity information is queried h](j)}(h``const struct gpio_chip *gc``h]j$)}(hj:3h]hconst struct gpio_chip *gc}(hj<3hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj83ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM8hj43ubj:)}(hhh]h)}(h/gpio chip which validity information is queriedh]h/gpio chip which validity information is queried}(hjS3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO3hM8hjP3ubah}(h]h ]h"]h$]h&]uh1j9hj43ubeh}(h]h ]h"]h$]h&]uh1jhjO3hM8hj13ubah}(h]h ]h"]h$]h&]uh1jhj3ubh)}(h **Return**h]j)}(hju3h]hReturn}(hjw3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs3ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM:hj3ubh)}(h>bitmap representing valid GPIOs or NULL if all GPIOs are validh]h>bitmap representing valid GPIOs or NULL if all GPIOs are valid}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM:hj3ubh)}(h**Description**h]j)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM<hj3ubh)}(hSome GPIO chips may support configurations where some of the pins aren't available. These chips can have valid_mask set to represent the valid GPIOs. This function can be used to retrieve this information.h]hSome GPIO chips may support configurations where some of the pins aren’t available. These chips can have valid_mask set to represent the valid GPIOs. This function can be used to retrieve this information.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM;hj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiochip_get_data (C function)c.gpiochip_get_datahNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/void * gpiochip_get_data (struct gpio_chip *gc)h]j@)}(h-void *gpiochip_get_data(struct gpio_chip *gc)h](j)}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMVubjX)}(h h]h }(hj3hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj3hhhj3hMVubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhj3hMVubji)}(hgpiochip_get_datah]jo)}(hgpiochip_get_datah]hgpiochip_get_data}(hj4hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj 4ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj3hhhj3hMVubj)}(h(struct gpio_chip *gc)h]j)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hj+4hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj'4ubjX)}(h h]h }(hj84hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj'4ubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjI4hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjF4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjK4modnameN classnameNjj)}j]j)}jj4sbc.gpiochip_get_dataasbuh1hhj'4ubjX)}(h h]h }(hji4hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj'4ubj)}(hjh]h*}(hjw4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'4ubjo)}(hgch]hgc}(hj4hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj'4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj#4ubah}(h]h ]h"]h$]h&]jjuh1jhj3hhhj3hMVubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj3hhhj3hMVubah}(h]j3ah ](jjeh"]h$]h&]jj)jhuh1j9hj3hMVhj3hhubj)}(hhh]h)}(h#get per-subdriver data for the chiph]h#get per-subdriver data for the chip}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMVhj4hhubah}(h]h ]h"]h$]h&]uh1jhj3hhhj3hMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4jj4jjjuh1j4hhhjhNhNubj)}(hf**Parameters** ``struct gpio_chip *gc`` GPIO chip **Return** The per-subdriver data for the chip.h](h)}(h**Parameters**h]j)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMZhj4ubj)}(hhh]j)}(h#``struct gpio_chip *gc`` GPIO chip h](j)}(h``struct gpio_chip *gc``h]j$)}(hj4h]hstruct gpio_chip *gc}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj4ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMWhj4ubj:)}(hhh]h)}(h GPIO chiph]h GPIO chip}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMWhj5ubah}(h]h ]h"]h$]h&]uh1j9hj4ubeh}(h]h ]h"]h$]h&]uh1jhj5hMWhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubh)}(h **Return**h]j)}(hj*5h]hReturn}(hj,5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(5ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMYhj4ubh)}(h$The per-subdriver data for the chip.h]h$The per-subdriver data for the chip.}(hj@5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMYhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiochip_remove (C function)c.gpiochip_removehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h+void gpiochip_remove (struct gpio_chip *gc)h]j@)}(h*void gpiochip_remove(struct gpio_chip *gc)h](j)}(hvoidh]hvoid}(hjo5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk5hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM~ubjX)}(h h]h }(hj~5hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjk5hhhj}5hM~ubji)}(hgpiochip_removeh]jo)}(hgpiochip_removeh]hgpiochip_remove}(hj5hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjk5hhhj}5hM~ubj)}(h(struct gpio_chip *gc)h]j)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hj5hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj5ubjX)}(h h]h }(hj5hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj5ubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hj5hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j)}jj5sbc.gpiochip_removeasbuh1hhj5ubjX)}(h h]h }(hj5hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj5ubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubjo)}(hgch]hgc}(hj6hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj5ubah}(h]h ]h"]h$]h&]jjuh1jhjk5hhhj}5hM~ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjg5hhhj}5hM~ubah}(h]jb5ah ](jjeh"]h$]h&]jj)jhuh1j9hj}5hM~hjd5hhubj)}(hhh]h)}(hunregister a gpio_chiph]hunregister a gpio_chip}(hj/6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM~hj,6hhubah}(h]h ]h"]h$]h&]uh1jhjd5hhhj}5hM~ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjG6jjG6jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_chip *gc`` the chip to unregister **Description** A gpio_chip with any GPIOs still requested may not be removed.h](h)}(h**Parameters**h]j)}(hjQ6h]h Parameters}(hjS6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjO6ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjK6ubj)}(hhh]j)}(h0``struct gpio_chip *gc`` the chip to unregister h](j)}(h``struct gpio_chip *gc``h]j$)}(hjp6h]hstruct gpio_chip *gc}(hjr6hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjn6ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjj6ubj:)}(hhh]h)}(hthe chip to unregisterh]hthe chip to unregister}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1j9hjj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhjg6ubah}(h]h ]h"]h$]h&]uh1jhjK6ubh)}(h**Description**h]j)}(hj6h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjK6ubh)}(h>A gpio_chip with any GPIOs still requested may not be removed.h]h>A gpio_chip with any GPIOs still requested may not be removed.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjK6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpio_device_find (C function)c.gpio_device_findhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hnstruct gpio_device * gpio_device_find (const void *data, int (*match)(struct gpio_chip *gc, const void *data))h]j@)}(hlstruct gpio_device *gpio_device_find(const void *data, int (*match)(struct gpio_chip *gc, const void *data))h](jF)}(hjIh]hstruct}(hj6hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj6hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj6hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj6hhhj6hMubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj 7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNjj)}j]j)}jgpio_device_findsbc.gpio_device_findasbuh1hhj6hhhj6hMubjX)}(h h]h }(hj07hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj6hhhj6hMubj)}(hjh]h*}(hj>7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6hhhj6hMubji)}(hgpio_device_findh]jo)}(hj-7h]hgpio_device_find}(hjO7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjK7ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj6hhhj6hMubj)}(hH(const void *data, int (*match)(struct gpio_chip *gc, const void *data))h](j)}(hconst void *datah](jF)}(hjh]hconst}(hjj7hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjf7ubjX)}(h h]h }(hjw7hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjf7ubj)}(hvoidh]hvoid}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjf7ubjX)}(h h]h }(hj7hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjf7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjf7ubjo)}(hdatah]hdata}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjf7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjb7ubj)}(h4int (*match)(struct gpio_chip *gc, const void *data)h](j)}(hinth]hint}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjX)}(h h]h }(hj7hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubj)}(h(h]h(}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjo)}(hmatchh]hmatch}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj7ubj)}(h)h]h)}(hj 8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(hj7h]h(}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjF)}(hjIh]hstruct}(hj'8hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj7ubjX)}(h h]h }(hj48hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjE8hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjB8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjG8modnameN classnameNjj)}j]j+7c.gpio_device_findasbuh1hhj7ubjX)}(h h]h }(hjc8hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubj)}(hjh]h*}(hjq8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjo)}(hgch]hgc}(hj~8hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj7ubj)}(h,h]h,}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjX)}(h h]h }(hj8hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubjF)}(hjh]hconst}(hj8hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj7ubjX)}(h h]h }(hj8hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubj)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjX)}(h h]h }(hj8hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjo)}(hdatah]hdata}(hj8hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj7ubj)}(hj8h]h)}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjb7ubeh}(h]h ]h"]h$]h&]jjuh1jhj6hhhj6hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj6hhhj6hMubah}(h]j6ah ](jjeh"]h$]h&]jj)jhuh1j9hj6hMhj6hhubj)}(hhh]h)}(hfind a specific GPIO deviceh]hfind a specific GPIO device}(hj#9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj 9hhubah}(h]h ]h"]h$]h&]uh1jhj6hhhj6hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj;9jj;9jjjuh1j4hhhjhNhNubj)}(hXZ**Parameters** ``const void *data`` data to pass to match function ``int (*match)(struct gpio_chip *gc, const void *data)`` Callback function to check gpio_chip **Return** New reference to struct gpio_device. **Description** Similar to bus_find_device(). It returns a reference to a gpio_device as determined by a user supplied **match** callback. The callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more gpio_devices. The callback takes the GPIO chip structure as argument. During the execution of the callback function the chip is protected from being freed. TODO: This actually has yet to be implemented. If the function returns non-NULL, the returned reference must be freed by the caller using gpio_device_put().h](h)}(h**Parameters**h]j)}(hjE9h]h Parameters}(hjG9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubj)}(hhh](j)}(h4``const void *data`` data to pass to match function h](j)}(h``const void *data``h]j$)}(hjd9h]hconst void *data}(hjf9hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjb9ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj^9ubj:)}(hhh]h)}(hdata to pass to match functionh]hdata to pass to match function}(hj}9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjy9hMhjz9ubah}(h]h ]h"]h$]h&]uh1j9hj^9ubeh}(h]h ]h"]h$]h&]uh1jhjy9hMhj[9ubj)}(h^``int (*match)(struct gpio_chip *gc, const void *data)`` Callback function to check gpio_chip h](j)}(h8``int (*match)(struct gpio_chip *gc, const void *data)``h]j$)}(hj9h]h4int (*match)(struct gpio_chip *gc, const void *data)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj9ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj9ubj:)}(hhh]h)}(h$Callback function to check gpio_chiph]h$Callback function to check gpio_chip}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1j9hj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj[9ubeh}(h]h ]h"]h$]h&]uh1jhj?9ubh)}(h **Return**h]j)}(hj9h]hReturn}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubh)}(h$New reference to struct gpio_device.h]h$New reference to struct gpio_device.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubh)}(h**Description**h]j)}(hj9h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubh)}(hXBSimilar to bus_find_device(). It returns a reference to a gpio_device as determined by a user supplied **match** callback. The callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more gpio_devices.h](hgSimilar to bus_find_device(). It returns a reference to a gpio_device as determined by a user supplied }(hj:hhhNhNubj)}(h **match**h]hmatch}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubh callback. The callback should return 0 if the device doesn’t match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more gpio_devices.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubh)}(hThe callback takes the GPIO chip structure as argument. During the execution of the callback function the chip is protected from being freed. TODO: This actually has yet to be implemented.h]hThe callback takes the GPIO chip structure as argument. During the execution of the callback function the chip is protected from being freed. TODO: This actually has yet to be implemented.}(hj6:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubh)}(hmIf the function returns non-NULL, the returned reference must be freed by the caller using gpio_device_put().h]hmIf the function returns non-NULL, the returned reference must be freed by the caller using gpio_device_put().}(hjE:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0&gpio_device_find_by_label (C function)c.gpio_device_find_by_labelhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hBstruct gpio_device * gpio_device_find_by_label (const char *label)h]j@)}(h@struct gpio_device *gpio_device_find_by_label(const char *label)h](jF)}(hjIh]hstruct}(hjt:hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjp:hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj:hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjp:hhhj:hMubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj:hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]j)}jgpio_device_find_by_labelsbc.gpio_device_find_by_labelasbuh1hhjp:hhhj:hMubjX)}(h h]h }(hj:hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjp:hhhj:hMubj)}(hjh]h*}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp:hhhj:hMubji)}(hgpio_device_find_by_labelh]jo)}(hj:h]hgpio_device_find_by_label}(hj:hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj:ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjp:hhhj:hMubj)}(h(const char *label)h]j)}(hconst char *labelh](jF)}(hjh]hconst}(hj:hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj:ubjX)}(h h]h }(hj:hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj:ubj)}(hcharh]hchar}(hj ;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjX)}(h h]h }(hj;hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj:ubj)}(hjh]h*}(hj%;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjo)}(hlabelh]hlabel}(hj2;hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj:ubah}(h]h ]h"]h$]h&]jjuh1jhjp:hhhj:hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjl:hhhj:hMubah}(h]jg:ah ](jjeh"]h$]h&]jj)jhuh1j9hj:hMhji:hhubj)}(hhh]h)}(hUwrapper around gpio_device_find() finding the GPIO device by its backing chip's labelh]hWwrapper around gpio_device_find() finding the GPIO device by its backing chip’s label}(hj\;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjY;hhubah}(h]h ]h"]h$]h&]uh1jhji:hhhj:hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjt;jjt;jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const char *label`` Label to lookup **Return** Reference to the GPIO device or NULL. Reference must be released with gpio_device_put().h](h)}(h**Parameters**h]j)}(hj~;h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|;ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjx;ubj)}(hhh]j)}(h&``const char *label`` Label to lookup h](j)}(h``const char *label``h]j$)}(hj;h]hconst char *label}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj;ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj;ubj:)}(hhh]h)}(hLabel to lookuph]hLabel to lookup}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1j9hj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jhjx;ubh)}(h **Return**h]j)}(hj;h]hReturn}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjx;ubh)}(hXReference to the GPIO device or NULL. Reference must be released with gpio_device_put().h]hXReference to the GPIO device or NULL. Reference must be released with gpio_device_put().}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjx;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0'gpio_device_find_by_fwnode (C function)c.gpio_device_find_by_fwnodehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hTstruct gpio_device * gpio_device_find_by_fwnode (const struct fwnode_handle *fwnode)h]j@)}(hRstruct gpio_device *gpio_device_find_by_fwnode(const struct fwnode_handle *fwnode)h](jF)}(hjIh]hstruct}(hj<hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj<hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj+<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<hhhj*<hMubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj<<hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj9<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj><modnameN classnameNjj)}j]j)}jgpio_device_find_by_fwnodesbc.gpio_device_find_by_fwnodeasbuh1hhj<hhhj*<hMubjX)}(h h]h }(hj]<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<hhhj*<hMubj)}(hjh]h*}(hjk<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhj*<hMubji)}(hgpio_device_find_by_fwnodeh]jo)}(hjZ<h]hgpio_device_find_by_fwnode}(hj|<hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjx<ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj<hhhj*<hMubj)}(h$(const struct fwnode_handle *fwnode)h]j)}(h"const struct fwnode_handle *fwnodeh](jF)}(hjh]hconst}(hj<hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj<ubjX)}(h h]h }(hj<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<ubjF)}(hjIh]hstruct}(hj<hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj<ubjX)}(h h]h }(hj<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<ubh)}(hhh]jo)}(h fwnode_handleh]h fwnode_handle}(hj<hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<modnameN classnameNjj)}j]jX<c.gpio_device_find_by_fwnodeasbuh1hhj<ubjX)}(h h]h }(hj<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<ubj)}(hjh]h*}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjo)}(hfwnodeh]hfwnode}(hj =hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj<ubah}(h]h ]h"]h$]h&]jjuh1jhj<hhhj*<hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj<hhhj*<hMubah}(h]j<ah ](jjeh"]h$]h&]jj)jhuh1j9hj*<hMhj<hhubj)}(hhh]h)}(hGwrapper around gpio_device_find() finding the GPIO device by its fwnodeh]hGwrapper around gpio_device_find() finding the GPIO device by its fwnode}(hj3=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj0=hhubah}(h]h ]h"]h$]h&]uh1jhj<hhhj*<hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjK=jjK=jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const struct fwnode_handle *fwnode`` Firmware node to lookup **Return** Reference to the GPIO device or NULL. Reference must be released with gpio_device_put().h](h)}(h**Parameters**h]j)}(hjU=h]h Parameters}(hjW=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS=ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjO=ubj)}(hhh]j)}(h?``const struct fwnode_handle *fwnode`` Firmware node to lookup h](j)}(h&``const struct fwnode_handle *fwnode``h]j$)}(hjt=h]h"const struct fwnode_handle *fwnode}(hjv=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjr=ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjn=ubj:)}(hhh]h)}(hFirmware node to lookuph]hFirmware node to lookup}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1j9hjn=ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhjk=ubah}(h]h ]h"]h$]h&]uh1jhjO=ubh)}(h **Return**h]j)}(hj=h]hReturn}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjO=ubh)}(hXReference to the GPIO device or NULL. Reference must be released with gpio_device_put().h]hXReference to the GPIO device or NULL. Reference must be released with gpio_device_put().}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjO=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpio_device_get (C function)c.gpio_device_gethNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h?struct gpio_device * gpio_device_get (struct gpio_device *gdev)h]j@)}(h=struct gpio_device *gpio_device_get(struct gpio_device *gdev)h](jF)}(hjIh]hstruct}(hj=hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj=hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hj>hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj=hhhj>hM ubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj>hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNjj)}j]j)}jgpio_device_getsbc.gpio_device_getasbuh1hhj=hhhj>hM ubjX)}(h h]h }(hj4>hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj=hhhj>hM ubj)}(hjh]h*}(hjB>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=hhhj>hM ubji)}(hgpio_device_geth]jo)}(hj1>h]hgpio_device_get}(hjS>hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjO>ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj=hhhj>hM ubj)}(h(struct gpio_device *gdev)h]j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hjn>hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjj>ubjX)}(h h]h }(hj{>hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjj>ubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj>hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNjj)}j]j/>c.gpio_device_getasbuh1hhjj>ubjX)}(h h]h }(hj>hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjj>ubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj>ubjo)}(hgdevh]hgdev}(hj>hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjj>ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjf>ubah}(h]h ]h"]h$]h&]jjuh1jhj=hhhj>hM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj=hhhj>hM ubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1j9hj>hM hj=hhubj)}(hhh]h)}(h0Increase the reference count of this GPIO deviceh]h0Increase the reference count of this GPIO device}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj>hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj?jj?jjjuh1j4hhhjhNhNubj)}(hy**Parameters** ``struct gpio_device *gdev`` GPIO device to increase the refcount for **Return** Pointer to **gdev**.h](h)}(h**Parameters**h]j)}(hj?h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj ?ubj)}(hhh]j)}(hF``struct gpio_device *gdev`` GPIO device to increase the refcount for h](j)}(h``struct gpio_device *gdev``h]j$)}(hj0?h]hstruct gpio_device *gdev}(hj2?hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj.?ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj*?ubj:)}(hhh]h)}(h(GPIO device to increase the refcount forh]h(GPIO device to increase the refcount for}(hjI?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjE?hMhjF?ubah}(h]h ]h"]h$]h&]uh1j9hj*?ubeh}(h]h ]h"]h$]h&]uh1jhjE?hMhj'?ubah}(h]h ]h"]h$]h&]uh1jhj ?ubh)}(h **Return**h]j)}(hjk?h]hReturn}(hjm?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji?ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj ?ubh)}(hPointer to **gdev**.h](h Pointer to }(hj?hhhNhNubj)}(h**gdev**h]hgdev}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubh.}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj ?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpio_device_put (C function)c.gpio_device_puthNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/void gpio_device_put (struct gpio_device *gdev)h]j@)}(h.void gpio_device_put(struct gpio_device *gdev)h](j)}(hvoidh]hvoid}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj?hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj?hhhj?hMubji)}(hgpio_device_puth]jo)}(hgpio_device_puth]hgpio_device_put}(hj?hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj?hhhj?hMubj)}(h(struct gpio_device *gdev)h]j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hj?hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj?ubjX)}(h h]h }(hj @hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj?ubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hj@hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j)}jj?sbc.gpio_device_putasbuh1hhj?ubjX)}(h h]h }(hj=@hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj?ubj)}(hjh]h*}(hjK@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubjo)}(hgdevh]hgdev}(hjX@hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj?ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubah}(h]h ]h"]h$]h&]jjuh1jhj?hhhj?hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj?hhhj?hMubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1j9hj?hMhj?hhubj)}(hhh]h)}(hdDecrease the reference count of this GPIO device and possibly free all resources associated with it.h]hdDecrease the reference count of this GPIO device and possibly free all resources associated with it.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj@hhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1j4hhhjhNhNubj)}(h^**Parameters** ``struct gpio_device *gdev`` GPIO device to decrease the reference count forh](h)}(h**Parameters**h]j)}(hj@h]h Parameters}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj@ubj)}(hhh]j)}(hL``struct gpio_device *gdev`` GPIO device to decrease the reference count forh](j)}(h``struct gpio_device *gdev``h]j$)}(hj@h]hstruct gpio_device *gdev}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj@ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj@ubj:)}(hhh]h)}(h/GPIO device to decrease the reference count forh]h/GPIO device to decrease the reference count for}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj@ubah}(h]h ]h"]h$]h&]uh1j9hj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hM hj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0"gpio_device_to_device (C function)c.gpio_device_to_devicehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h@struct device * gpio_device_to_device (struct gpio_device *gdev)h]j@)}(h>struct device *gpio_device_to_device(struct gpio_device *gdev)h](jF)}(hjIh]hstruct}(hjAhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjAhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM%ubjX)}(h h]h }(hj+AhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjAhhhj*AhM%ubh)}(hhh]jo)}(hdeviceh]hdevice}(hjAmodnameN classnameNjj)}j]j)}jgpio_device_to_devicesbc.gpio_device_to_deviceasbuh1hhjAhhhj*AhM%ubjX)}(h h]h }(hj]AhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjAhhhj*AhM%ubj)}(hjh]h*}(hjkAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhj*AhM%ubji)}(hgpio_device_to_deviceh]jo)}(hjZAh]hgpio_device_to_device}(hj|AhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjxAubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjAhhhj*AhM%ubj)}(h(struct gpio_device *gdev)h]j)}(hstruct gpio_device *gdevh](jF)}(hjIh]hstruct}(hjAhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjAubjX)}(h h]h }(hjAhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjAubh)}(hhh]jo)}(h gpio_deviceh]h gpio_device}(hjAhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]jXAc.gpio_device_to_deviceasbuh1hhjAubjX)}(h h]h }(hjAhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjAubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjo)}(hgdevh]hgdev}(hjAhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjAubah}(h]h ]h"]h$]h&]jjuh1jhjAhhhj*AhM%ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjAhhhj*AhM%ubah}(h]jAah ](jjeh"]h$]h&]jj)jhuh1j9hj*AhM%hjAhhubj)}(hhh]h)}(h5Retrieve the address of the underlying struct device.h]h5Retrieve the address of the underlying struct device.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM%hjBhhubah}(h]h ]h"]h$]h&]uh1jhjAhhhj*AhM%ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj0Bjj0Bjjjuh1j4hhhjhNhNubj)}(hX **Parameters** ``struct gpio_device *gdev`` GPIO device for which to return the address. **Description** This does not increase the reference count of the GPIO device nor the underlying struct device. **Return** Address of struct device backing this GPIO device.h](h)}(h**Parameters**h]j)}(hj:Bh]h Parameters}(hj pin mappingh]h$add a range for GPIO <-> pin mapping}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMhhubah}(h]h ]h"]h$]h&]uh1jhjKhhhjKhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjMjjMjjjuh1j4hhhjhNhNubj)}(hXf**Parameters** ``struct gpio_chip *gc`` the gpiochip to add the range for ``struct pinctrl_dev *pctldev`` the pin controller to map to ``unsigned int gpio_offset`` the start offset in the current gpio_chip number space ``const char *pin_group`` name of the pin group inside the pin controller **Description** Calling this function directly from a DeviceTree-supported pinctrl driver is DEPRECATED. Please see Section 2.1 of Documentation/devicetree/bindings/gpio/gpio.txt on how to bind pinctrl and gpio drivers via the "gpio-ranges" property. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjMh]h Parameters}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMubj)}(hhh](j)}(h;``struct gpio_chip *gc`` the gpiochip to add the range for h](j)}(h``struct gpio_chip *gc``h]j$)}(hjMh]hstruct gpio_chip *gc}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjMubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMubj:)}(hhh]h)}(h!the gpiochip to add the range forh]h!the gpiochip to add the range for}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj NhM hj Nubah}(h]h ]h"]h$]h&]uh1j9hjMubeh}(h]h ]h"]h$]h&]uh1jhj NhM hjMubj)}(h=``struct pinctrl_dev *pctldev`` the pin controller to map to h](j)}(h``struct pinctrl_dev *pctldev``h]j$)}(hj.Nh]hstruct pinctrl_dev *pctldev}(hj0NhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,Nubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj(Nubj:)}(hhh]h)}(hthe pin controller to map toh]hthe pin controller to map to}(hjGNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCNhM hjDNubah}(h]h ]h"]h$]h&]uh1j9hj(Nubeh}(h]h ]h"]h$]h&]uh1jhjCNhM hjMubj)}(hT``unsigned int gpio_offset`` the start offset in the current gpio_chip number space h](j)}(h``unsigned int gpio_offset``h]j$)}(hjgNh]hunsigned int gpio_offset}(hjiNhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjeNubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjaNubj:)}(hhh]h)}(h6the start offset in the current gpio_chip number spaceh]h6the start offset in the current gpio_chip number space}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|NhM hj}Nubah}(h]h ]h"]h$]h&]uh1j9hjaNubeh}(h]h ]h"]h$]h&]uh1jhj|NhM hjMubj)}(hJ``const char *pin_group`` name of the pin group inside the pin controller h](j)}(h``const char *pin_group``h]j$)}(hjNh]hconst char *pin_group}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjNubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjNubj:)}(hhh]h)}(h/name of the pin group inside the pin controllerh]h/name of the pin group inside the pin controller}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhM hjNubah}(h]h ]h"]h$]h&]uh1j9hjNubeh}(h]h ]h"]h$]h&]uh1jhjNhM hjMubeh}(h]h ]h"]h$]h&]uh1jhjMubh)}(h**Description**h]j)}(hjNh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMubh)}(hCalling this function directly from a DeviceTree-supported pinctrl driver is DEPRECATED. Please see Section 2.1 of Documentation/devicetree/bindings/gpio/gpio.txt on how to bind pinctrl and gpio drivers via the "gpio-ranges" property.h]hCalling this function directly from a DeviceTree-supported pinctrl driver is DEPRECATED. Please see Section 2.1 of Documentation/devicetree/bindings/gpio/gpio.txt on how to bind pinctrl and gpio drivers via the “gpio-ranges” property.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMubh)}(h **Return**h]j)}(hjOh]hReturn}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0-gpiochip_add_pin_range_with_pins (C function)"c.gpiochip_add_pin_range_with_pinshNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiochip_add_pin_range_with_pins (struct gpio_chip *gc, const char *pinctl_name, unsigned int gpio_offset, unsigned int pin_offset, unsigned int const *pins, unsigned int npins)h]j@)}(hint gpiochip_add_pin_range_with_pins(struct gpio_chip *gc, const char *pinctl_name, unsigned int gpio_offset, unsigned int pin_offset, unsigned int const *pins, unsigned int npins)h](j)}(hinth]hint}(hjGOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCOhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hjVOhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjCOhhhjUOhM ubji)}(h gpiochip_add_pin_range_with_pinsh]jo)}(h gpiochip_add_pin_range_with_pinsh]h gpiochip_add_pin_range_with_pins}(hjhOhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjdOubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjCOhhhjUOhM ubj)}(h(struct gpio_chip *gc, const char *pinctl_name, unsigned int gpio_offset, unsigned int pin_offset, unsigned int const *pins, unsigned int npins)h](j)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hjOhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjOubjX)}(h h]h }(hjOhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjOhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j]j)}jjjOsb"c.gpiochip_add_pin_range_with_pinsasbuh1hhjOubjX)}(h h]h }(hjOhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjo)}(hgch]hgc}(hjOhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|Oubj)}(hconst char *pinctl_nameh](jF)}(hjh]hconst}(hjOhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjOubjX)}(h h]h }(hjPhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubj)}(hcharh]hchar}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjX)}(h h]h }(hjPhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubj)}(hjh]h*}(hj-PhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjo)}(h pinctl_nameh]h pinctl_name}(hj:PhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|Oubj)}(hunsigned int gpio_offseth](j)}(hunsignedh]hunsigned}(hjSPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOPubjX)}(h h]h }(hjaPhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOPubj)}(hinth]hint}(hjoPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOPubjX)}(h h]h }(hj}PhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOPubjo)}(h gpio_offseth]h gpio_offset}(hjPhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOPubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|Oubj)}(hunsigned int pin_offseth](j)}(hunsignedh]hunsigned}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjX)}(h h]h }(hjPhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjPubj)}(hinth]hint}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjX)}(h h]h }(hjPhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjPubjo)}(h pin_offseth]h pin_offset}(hjPhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|Oubj)}(hunsigned int const *pinsh](j)}(hunsignedh]hunsigned}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjX)}(h h]h }(hjQhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjPubj)}(hinth]hint}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjX)}(h h]h }(hjQhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjPubjF)}(hjh]hconst}(hj-QhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjPubjX)}(h h]h }(hj:QhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjPubj)}(hjh]h*}(hjHQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjo)}(hpinsh]hpins}(hjUQhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|Oubj)}(hunsigned int npinsh](j)}(hunsignedh]hunsigned}(hjnQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjQubjX)}(h h]h }(hj|QhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjjQubj)}(hinth]hint}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjQubjX)}(h h]h }(hjQhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjjQubjo)}(hnpinsh]hnpins}(hjQhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjjQubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj|Oubeh}(h]h ]h"]h$]h&]jjuh1jhjCOhhhjUOhM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj?OhhhjUOhM ubah}(h]j:Oah ](jjeh"]h$]h&]jj)jhuh1j9hjUOhM hj pin mappingh]h$add a range for GPIO <-> pin mapping}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjQhhubah}(h]h ]h"]h$]h&]uh1jhj pin mappingsh]h$remove all the GPIO <-> pin mappings}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjThhubah}(h]h ]h"]h$]h&]uh1jhjShhhjShM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1j4hhhjhNhNubj)}(hR**Parameters** ``struct gpio_chip *gc`` the chip to remove all the mappings forh](h)}(h**Parameters**h]j)}(hjTh]h Parameters}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjTubj)}(hhh]j)}(h@``struct gpio_chip *gc`` the chip to remove all the mappings forh](j)}(h``struct gpio_chip *gc``h]j$)}(hjTh]hstruct gpio_chip *gc}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjTubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjTubj:)}(hhh]h)}(h'the chip to remove all the mappings forh]h'the chip to remove all the mappings for}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjTubah}(h]h ]h"]h$]h&]uh1j9hjTubeh}(h]h ]h"]h$]h&]uh1jhjThM hjTubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0$gpiochip_dup_line_label (C function)c.gpiochip_dup_line_labelhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hJchar * gpiochip_dup_line_label (struct gpio_chip *gc, unsigned int offset)h]j@)}(hHchar *gpiochip_dup_line_label(struct gpio_chip *gc, unsigned int offset)h](j)}(hcharh]hchar}(hj2UhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.Uhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hjAUhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj.Uhhhj@UhM ubj)}(hjh]h*}(hjOUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.Uhhhj@UhM ubji)}(hgpiochip_dup_line_labelh]jo)}(hgpiochip_dup_line_labelh]hgpiochip_dup_line_label}(hj`UhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj\Uubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj.Uhhhj@UhM ubj)}(h+(struct gpio_chip *gc, unsigned int offset)h](j)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hj|UhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjxUubjX)}(h h]h }(hjUhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjxUubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjUhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]j)}jjbUsbc.gpiochip_dup_line_labelasbuh1hhjxUubjX)}(h h]h }(hjUhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjxUubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxUubjo)}(hgch]hgc}(hjUhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjxUubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjtUubj)}(hunsigned int offseth](j)}(hunsignedh]hunsigned}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjX)}(h h]h }(hjUhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjUubj)}(hinth]hint}(hj VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjX)}(h h]h }(hjVhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjUubjo)}(hoffseth]hoffset}(hj&VhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjtUubeh}(h]h ]h"]h$]h&]jjuh1jhj.Uhhhj@UhM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj*Uhhhj@UhM ubah}(h]j%Uah ](jjeh"]h$]h&]jj)jhuh1j9hj@UhM hj'Uhhubj)}(hhh]h)}(h!Get a copy of the consumer label.h]h!Get a copy of the consumer label.}(hjPVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjMVhhubah}(h]h ]h"]h$]h&]uh1jhj'Uhhhj@UhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjhVjjhVjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_chip *gc`` GPIO chip controlling this line. ``unsigned int offset`` Hardware offset of the line. **Return** Pointer to a copy of the consumer label if the line is requested or NULL if it's not. If a valid pointer was returned, it must be freed using kfree(). In case of a memory allocation error, the function returns ``ENOMEM``. **Description** Must not be called from atomic context.h](h)}(h**Parameters**h]j)}(hjrVh]h Parameters}(hjtVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpVubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjlVubj)}(hhh](j)}(h:``struct gpio_chip *gc`` GPIO chip controlling this line. h](j)}(h``struct gpio_chip *gc``h]j$)}(hjVh]hstruct gpio_chip *gc}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjVubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjVubj:)}(hhh]h)}(h GPIO chip controlling this line.h]h GPIO chip controlling this line.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhM hjVubah}(h]h ]h"]h$]h&]uh1j9hjVubeh}(h]h ]h"]h$]h&]uh1jhjVhM hjVubj)}(h5``unsigned int offset`` Hardware offset of the line. h](j)}(h``unsigned int offset``h]j$)}(hjVh]hunsigned int offset}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjVubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjVubj:)}(hhh]h)}(hHardware offset of the line.h]hHardware offset of the line.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhM hjVubah}(h]h ]h"]h$]h&]uh1j9hjVubeh}(h]h ]h"]h$]h&]uh1jhjVhM hjVubeh}(h]h ]h"]h$]h&]uh1jhjlVubh)}(h **Return**h]j)}(hjWh]hReturn}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjlVubh)}(hPointer to a copy of the consumer label if the line is requested or NULL if it's not. If a valid pointer was returned, it must be freed using kfree(). In case of a memory allocation error, the function returns ``ENOMEM``.h](hPointer to a copy of the consumer label if the line is requested or NULL if it’s not. If a valid pointer was returned, it must be freed using kfree(). In case of a memory allocation error, the function returns }(hjWhhhNhNubj$)}(h ``ENOMEM``h]hENOMEM}(hj#WhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjWubh.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjlVubh)}(h**Description**h]j)}(hj>Wh]h Description}(hj@WhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hjQ]hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj>]hhhjP]hM ubji)}(hgpiod_direction_inputh]jo)}(hgpiod_direction_inputh]hgpiod_direction_input}(hjc]hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj_]ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj>]hhhjP]hM ubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj]hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj{]ubjX)}(h h]h }(hj]hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj{]ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj]hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j)}jje]sbc.gpiod_direction_inputasbuh1hhj{]ubjX)}(h h]h }(hj]hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj{]ubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{]ubjo)}(hdesch]hdesc}(hj]hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj{]ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjw]ubah}(h]h ]h"]h$]h&]jjuh1jhj>]hhhjP]hM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj:]hhhjP]hM ubah}(h]j5]ah ](jjeh"]h$]h&]jj)jhuh1j9hjP]hM hj7]hhubj)}(hhh]h)}(hset the GPIO direction to inputh]hset the GPIO direction to input}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj]hhubah}(h]h ]h"]h$]h&]uh1jhj7]hhhjP]hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj^jj^jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_desc *desc`` GPIO to set to input **Description** Set the direction of the passed GPIO to input, such as gpiod_get_value() can be called safely on it. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj$^h]h Parameters}(hj&^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"^ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj^ubj)}(hhh]j)}(h0``struct gpio_desc *desc`` GPIO to set to input h](j)}(h``struct gpio_desc *desc``h]j$)}(hjC^h]hstruct gpio_desc *desc}(hjE^hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjA^ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj=^ubj:)}(hhh]h)}(hGPIO to set to inputh]hGPIO to set to input}(hj\^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX^hM hjY^ubah}(h]h ]h"]h$]h&]uh1j9hj=^ubeh}(h]h ]h"]h$]h&]uh1jhjX^hM hj:^ubah}(h]h ]h"]h$]h&]uh1jhj^ubh)}(h**Description**h]j)}(hj~^h]h Description}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|^ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj^ubh)}(hdSet the direction of the passed GPIO to input, such as gpiod_get_value() can be called safely on it.h]hdSet the direction of the passed GPIO to input, such as gpiod_get_value() can be called safely on it.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj^ubh)}(h **Return**h]j)}(hj^h]hReturn}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj^ubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0'gpiod_direction_output_raw (C function)c.gpiod_direction_output_rawhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hBint gpiod_direction_output_raw (struct gpio_desc *desc, int value)h]j@)}(hAint gpiod_direction_output_raw(struct gpio_desc *desc, int value)h](j)}(hinth]hint}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM( ubjX)}(h h]h }(hj^hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj^hhhj^hM( ubji)}(hgpiod_direction_output_rawh]jo)}(hgpiod_direction_output_rawh]hgpiod_direction_output_raw}(hj _hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj_ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj^hhhj^hM( ubj)}(h#(struct gpio_desc *desc, int value)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj'_hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj#_ubjX)}(h h]h }(hj4_hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#_ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjE_hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjB_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjG_modnameN classnameNjj)}j]j)}jj _sbc.gpiod_direction_output_rawasbuh1hhj#_ubjX)}(h h]h }(hje_hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj#_ubj)}(hjh]h*}(hjs_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#_ubjo)}(hdesch]hdesc}(hj_hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj#_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj_ubj)}(h int valueh](j)}(hinth]hint}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjX)}(h h]h }(hj_hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj_ubjo)}(hvalueh]hvalue}(hj_hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj_ubeh}(h]h ]h"]h$]h&]jjuh1jhj^hhhj^hM( ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj^hhhj^hM( ubah}(h]j^ah ](jjeh"]h$]h&]jj)jhuh1j9hj^hM( hj^hhubj)}(hhh]h)}(h set the GPIO direction to outputh]h set the GPIO direction to output}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM( hj_hhubah}(h]h ]h"]h$]h&]uh1jhj^hhhj^hM( ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_jj_jjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_desc *desc`` GPIO to set to output ``int value`` initial output value of the GPIO **Description** Set the direction of the passed GPIO to output, such as gpiod_set_value() can be called safely on it. The initial value of the output must be specified as raw value on the physical line without regard for the ACTIVE_LOW status. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj`h]h Parameters}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM, hj_ubj)}(hhh](j)}(h1``struct gpio_desc *desc`` GPIO to set to output h](j)}(h``struct gpio_desc *desc``h]j$)}(hj `h]hstruct gpio_desc *desc}(hj"`hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM) hj`ubj:)}(hhh]h)}(hGPIO to set to outputh]hGPIO to set to output}(hj9`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5`hM) hj6`ubah}(h]h ]h"]h$]h&]uh1j9hj`ubeh}(h]h ]h"]h$]h&]uh1jhj5`hM) hj`ubj)}(h/``int value`` initial output value of the GPIO h](j)}(h ``int value``h]j$)}(hjY`h]h int value}(hj[`hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjW`ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM* hjS`ubj:)}(hhh]h)}(h initial output value of the GPIOh]h initial output value of the GPIO}(hjr`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjn`hM* hjo`ubah}(h]h ]h"]h$]h&]uh1j9hjS`ubeh}(h]h ]h"]h$]h&]uh1jhjn`hM* hj`ubeh}(h]h ]h"]h$]h&]uh1jhj_ubh)}(h**Description**h]j)}(hj`h]h Description}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM, hj_ubh)}(hSet the direction of the passed GPIO to output, such as gpiod_set_value() can be called safely on it. The initial value of the output must be specified as raw value on the physical line without regard for the ACTIVE_LOW status.h]hSet the direction of the passed GPIO to output, such as gpiod_set_value() can be called safely on it. The initial value of the output must be specified as raw value on the physical line without regard for the ACTIVE_LOW status.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM+ hj_ubh)}(h **Return**h]j)}(hj`h]hReturn}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM/ hj_ubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM0 hj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0#gpiod_direction_output (C function)c.gpiod_direction_outputhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h>int gpiod_direction_output (struct gpio_desc *desc, int value)h]j@)}(h=int gpiod_direction_output(struct gpio_desc *desc, int value)h](j)}(hinth]hint}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMB ubjX)}(h h]h }(hjahhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj`hhhjahMB ubji)}(hgpiod_direction_outputh]jo)}(hgpiod_direction_outputh]hgpiod_direction_output}(hj!ahhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjaubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj`hhhjahMB ubj)}(h#(struct gpio_desc *desc, int value)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj=ahhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj9aubjX)}(h h]h }(hjJahhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj9aubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj[ahhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjXaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]amodnameN classnameNjj)}j]j)}jj#asbc.gpiod_direction_outputasbuh1hhj9aubjX)}(h h]h }(hj{ahhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj9aubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9aubjo)}(hdesch]hdesc}(hjahhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj9aubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj5aubj)}(h int valueh](j)}(hinth]hint}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjX)}(h h]h }(hjahhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjaubjo)}(hvalueh]hvalue}(hjahhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjaubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj5aubeh}(h]h ]h"]h$]h&]jjuh1jhj`hhhjahMB ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj`hhhjahMB ubah}(h]j`ah ](jjeh"]h$]h&]jj)jhuh1j9hjahMB hj`hhubj)}(hhh]h)}(h set the GPIO direction to outputh]h set the GPIO direction to output}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMB hjahhubah}(h]h ]h"]h$]h&]uh1jhj`hhhjahMB ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj bjj bjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_desc *desc`` GPIO to set to output ``int value`` initial output value of the GPIO **Description** Set the direction of the passed GPIO to output, such as gpiod_set_value() can be called safely on it. The initial value of the output must be specified as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into account. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjbh]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMF hjbubj)}(hhh](j)}(h1``struct gpio_desc *desc`` GPIO to set to output h](j)}(h``struct gpio_desc *desc``h]j$)}(hj6bh]hstruct gpio_desc *desc}(hj8bhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj4bubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMC hj0bubj:)}(hhh]h)}(hGPIO to set to outputh]hGPIO to set to output}(hjObhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKbhMC hjLbubah}(h]h ]h"]h$]h&]uh1j9hj0bubeh}(h]h ]h"]h$]h&]uh1jhjKbhMC hj-bubj)}(h/``int value`` initial output value of the GPIO h](j)}(h ``int value``h]j$)}(hjobh]h int value}(hjqbhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjmbubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMD hjibubj:)}(hhh]h)}(h initial output value of the GPIOh]h initial output value of the GPIO}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMD hjbubah}(h]h ]h"]h$]h&]uh1j9hjibubeh}(h]h ]h"]h$]h&]uh1jhjbhMD hj-bubeh}(h]h ]h"]h$]h&]uh1jhjbubh)}(h**Description**h]j)}(hjbh]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMF hjbubh)}(hSet the direction of the passed GPIO to output, such as gpiod_set_value() can be called safely on it. The initial value of the output must be specified as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into account.h]hSet the direction of the passed GPIO to output, such as gpiod_set_value() can be called safely on it. The initial value of the output must be specified as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into account.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chME hjbubh)}(h **Return**h]j)}(hjbh]hReturn}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMJ hjbubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMK hjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0)gpiod_enable_hw_timestamp_ns (C function)c.gpiod_enable_hw_timestamp_nshNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hNint gpiod_enable_hw_timestamp_ns (struct gpio_desc *desc, unsigned long flags)h]j@)}(hMint gpiod_enable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags)h](j)}(hinth]hint}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hj%chhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjchhhj$chM ubji)}(hgpiod_enable_hw_timestamp_nsh]jo)}(hgpiod_enable_hw_timestamp_nsh]hgpiod_enable_hw_timestamp_ns}(hj7chhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj3cubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjchhhj$chM ubj)}(h-(struct gpio_desc *desc, unsigned long flags)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjSchhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjOcubjX)}(h h]h }(hj`chhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOcubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjqchhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjncubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjscmodnameN classnameNjj)}j]j)}jj9csbc.gpiod_enable_hw_timestamp_nsasbuh1hhjOcubjX)}(h h]h }(hjchhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOcubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOcubjo)}(hdesch]hdesc}(hjchhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOcubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjKcubj)}(hunsigned long flagsh](j)}(hunsignedh]hunsigned}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjX)}(h h]h }(hjchhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjcubj)}(hlongh]hlong}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjX)}(h h]h }(hjchhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjcubjo)}(hflagsh]hflags}(hjchhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjcubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjKcubeh}(h]h ]h"]h$]h&]jjuh1jhjchhhj$chM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjchhhj$chM ubah}(h]j cah ](jjeh"]h$]h&]jj)jhuh1j9hj$chM hj chhubj)}(hhh]h)}(h)Enable hardware timestamp in nanoseconds.h]h)Enable hardware timestamp in nanoseconds.}(hj'dhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj$dhhubah}(h]h ]h"]h$]h&]uh1jhj chhhj$chM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj?djj?djjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_desc *desc`` GPIO to enable. ``unsigned long flags`` Flags related to GPIO edge. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjIdh]h Parameters}(hjKdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGdubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjCdubj)}(hhh](j)}(h+``struct gpio_desc *desc`` GPIO to enable. h](j)}(h``struct gpio_desc *desc``h]j$)}(hjhdh]hstruct gpio_desc *desc}(hjjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjfdubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjbdubj:)}(hhh]h)}(hGPIO to enable.h]hGPIO to enable.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}dhM hj~dubah}(h]h ]h"]h$]h&]uh1j9hjbdubeh}(h]h ]h"]h$]h&]uh1jhj}dhM hj_dubj)}(h4``unsigned long flags`` Flags related to GPIO edge. h](j)}(h``unsigned long flags``h]j$)}(hjdh]hunsigned long flags}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjdubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjdubj:)}(hhh]h)}(hFlags related to GPIO edge.h]hFlags related to GPIO edge.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhM hjdubah}(h]h ]h"]h$]h&]uh1j9hjdubeh}(h]h ]h"]h$]h&]uh1jhjdhM hj_dubeh}(h]h ]h"]h$]h&]uh1jhjCdubh)}(h **Return**h]j)}(hjdh]hReturn}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjCdubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjCdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0*gpiod_disable_hw_timestamp_ns (C function)c.gpiod_disable_hw_timestamp_nshNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hOint gpiod_disable_hw_timestamp_ns (struct gpio_desc *desc, unsigned long flags)h]j@)}(hNint gpiod_disable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags)h](j)}(hinth]hint}(hj!ehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjehhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hj0ehhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjehhhj/ehM ubji)}(hgpiod_disable_hw_timestamp_nsh]jo)}(hgpiod_disable_hw_timestamp_nsh]hgpiod_disable_hw_timestamp_ns}(hjBehhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj>eubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjehhhj/ehM ubj)}(h-(struct gpio_desc *desc, unsigned long flags)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hj^ehhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjZeubjX)}(h h]h }(hjkehhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjZeubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj|ehhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjyeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~emodnameN classnameNjj)}j]j)}jjDesbc.gpiod_disable_hw_timestamp_nsasbuh1hhjZeubjX)}(h h]h }(hjehhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjZeubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZeubjo)}(hdesch]hdesc}(hjehhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjZeubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVeubj)}(hunsigned long flagsh](j)}(hunsignedh]hunsigned}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubjX)}(h h]h }(hjehhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjeubj)}(hlongh]hlong}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubjX)}(h h]h }(hjehhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjeubjo)}(hflagsh]hflags}(hjfhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjeubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjVeubeh}(h]h ]h"]h$]h&]jjuh1jhjehhhj/ehM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjehhhj/ehM ubah}(h]jeah ](jjeh"]h$]h&]jj)jhuh1j9hj/ehM hjehhubj)}(hhh]h)}(hDisable hardware timestamp.h]hDisable hardware timestamp.}(hj2fhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj/fhhubah}(h]h ]h"]h$]h&]uh1jhjehhhj/ehM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjJfjjJfjjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_desc *desc`` GPIO to disable. ``unsigned long flags`` Flags related to GPIO edge, same value as used during enable call. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjTfh]h Parameters}(hjVfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRfubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjNfubj)}(hhh](j)}(h,``struct gpio_desc *desc`` GPIO to disable. h](j)}(h``struct gpio_desc *desc``h]j$)}(hjsfh]hstruct gpio_desc *desc}(hjufhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjqfubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjmfubj:)}(hhh]h)}(hGPIO to disable.h]hGPIO to disable.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhM hjfubah}(h]h ]h"]h$]h&]uh1j9hjmfubeh}(h]h ]h"]h$]h&]uh1jhjfhM hjjfubj)}(h[``unsigned long flags`` Flags related to GPIO edge, same value as used during enable call. h](j)}(h``unsigned long flags``h]j$)}(hjfh]hunsigned long flags}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjfubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjfubj:)}(hhh]h)}(hBFlags related to GPIO edge, same value as used during enable call.h]hBFlags related to GPIO edge, same value as used during enable call.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhM hjfubah}(h]h ]h"]h$]h&]uh1j9hjfubeh}(h]h ]h"]h$]h&]uh1jhjfhM hjjfubeh}(h]h ]h"]h$]h&]uh1jhjNfubh)}(h **Return**h]j)}(hjfh]hReturn}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjNfubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjNfubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_set_config (C function)c.gpiod_set_confighNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hCint gpiod_set_config (struct gpio_desc *desc, unsigned long config)h]j@)}(hBint gpiod_set_config(struct gpio_desc *desc, unsigned long config)h](j)}(hinth]hint}(hj,ghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ghhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hj;ghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj(ghhhj:ghM ubji)}(hgpiod_set_configh]jo)}(hgpiod_set_configh]hgpiod_set_config}(hjMghhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjIgubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj(ghhhj:ghM ubj)}(h.(struct gpio_desc *desc, unsigned long config)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjighhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjegubjX)}(h h]h }(hjvghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjegubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjghhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjgmodnameN classnameNjj)}j]j)}jjOgsbc.gpiod_set_configasbuh1hhjegubjX)}(h h]h }(hjghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjegubj)}(hjh]h*}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjegubjo)}(hdesch]hdesc}(hjghhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjegubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjagubj)}(hunsigned long configh](j)}(hunsignedh]hunsigned}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjX)}(h h]h }(hjghhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjgubj)}(hlongh]hlong}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjX)}(h h]h }(hjhhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjgubjo)}(hconfigh]hconfig}(hjhhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjgubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjagubeh}(h]h ]h"]h$]h&]jjuh1jhj(ghhhj:ghM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj$ghhhj:ghM ubah}(h]jgah ](jjeh"]h$]h&]jj)jhuh1j9hj:ghM hj!ghhubj)}(hhh]h)}(hsets **config** for a GPIOh](hsets }(hj=hhhhNhNubj)}(h **config**h]hconfig}(hjEhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=hubh for a GPIO}(hj=hhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj:hhhubah}(h]h ]h"]h$]h&]uh1jhj!ghhhj:ghM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjghjjghjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_desc *desc`` descriptor of the GPIO for which to set the configuration ``unsigned long config`` Same packed config format as generic pinconf **Return** 0 on success, ``-ENOTSUPP`` if the controller doesn't support setting the configuration.h](h)}(h**Parameters**h]j)}(hjqhh]h Parameters}(hjshhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjohubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjkhubj)}(hhh](j)}(hU``struct gpio_desc *desc`` descriptor of the GPIO for which to set the configuration h](j)}(h``struct gpio_desc *desc``h]j$)}(hjhh]hstruct gpio_desc *desc}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjhubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjhubj:)}(hhh]h)}(h9descriptor of the GPIO for which to set the configurationh]h9descriptor of the GPIO for which to set the configuration}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhM hjhubah}(h]h ]h"]h$]h&]uh1j9hjhubeh}(h]h ]h"]h$]h&]uh1jhjhhM hjhubj)}(hF``unsigned long config`` Same packed config format as generic pinconf h](j)}(h``unsigned long config``h]j$)}(hjhh]hunsigned long config}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjhubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjhubj:)}(hhh]h)}(h,Same packed config format as generic pinconfh]h,Same packed config format as generic pinconf}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhM hjhubah}(h]h ]h"]h$]h&]uh1j9hjhubeh}(h]h ]h"]h$]h&]uh1jhjhhM hjhubeh}(h]h ]h"]h$]h&]uh1jhjkhubh)}(h **Return**h]j)}(hjih]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjkhubh)}(hX0 on success, ``-ENOTSUPP`` if the controller doesn't support setting the configuration.h](h0 on success, }(hjihhhNhNubj$)}(h ``-ENOTSUPP``h]h -ENOTSUPP}(hj"ihhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjiubh? if the controller doesn’t support setting the configuration.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjkhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_set_debounce (C function)c.gpiod_set_debouncehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hFint gpiod_set_debounce (struct gpio_desc *desc, unsigned int debounce)h]j@)}(hEint gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce)h](j)}(hinth]hint}(hj[ihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWihhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hjjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjWihhhjiihM ubji)}(hgpiod_set_debounceh]jo)}(hgpiod_set_debounceh]hgpiod_set_debounce}(hj|ihhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjxiubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjWihhhjiihM ubj)}(h/(struct gpio_desc *desc, unsigned int debounce)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjihhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjiubjX)}(h h]h }(hjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjiubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjihhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]j)}jj~isbc.gpiod_set_debounceasbuh1hhjiubjX)}(h h]h }(hjihhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjiubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjo)}(hdesch]hdesc}(hjihhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjiubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjiubj)}(hunsigned int debounceh](j)}(hunsignedh]hunsigned}(hj jhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjX)}(h h]h }(hjjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjjubj)}(hinth]hint}(hj&jhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjX)}(h h]h }(hj4jhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjjubjo)}(hdebounceh]hdebounce}(hjBjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjiubeh}(h]h ]h"]h$]h&]jjuh1jhjWihhhjiihM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjSihhhjiihM ubah}(h]jNiah ](jjeh"]h$]h&]jj)jhuh1j9hjiihM hjPihhubj)}(hhh]h)}(h!sets **debounce** time for a GPIOh](hsets }(hjljhhhNhNubj)}(h **debounce**h]hdebounce}(hjtjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjljubh time for a GPIO}(hjljhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjijhhubah}(h]h ]h"]h$]h&]uh1jhjPihhhjiihM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_desc *desc`` descriptor of the GPIO for which to set debounce time ``unsigned int debounce`` debounce time in microseconds **Return** 0 on success, ``-ENOTSUPP`` if the controller doesn't support setting the debounce time.h](h)}(h**Parameters**h]j)}(hjjh]h Parameters}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjjubj)}(hhh](j)}(hQ``struct gpio_desc *desc`` descriptor of the GPIO for which to set debounce time h](j)}(h``struct gpio_desc *desc``h]j$)}(hjjh]hstruct gpio_desc *desc}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjjubj:)}(hhh]h)}(h5descriptor of the GPIO for which to set debounce timeh]h5descriptor of the GPIO for which to set debounce time}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhM hjjubah}(h]h ]h"]h$]h&]uh1j9hjjubeh}(h]h ]h"]h$]h&]uh1jhjjhM hjjubj)}(h8``unsigned int debounce`` debounce time in microseconds h](j)}(h``unsigned int debounce``h]j$)}(hjjh]hunsigned int debounce}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjjubj:)}(hhh]h)}(hdebounce time in microsecondsh]hdebounce time in microseconds}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj khM hjkubah}(h]h ]h"]h$]h&]uh1j9hjjubeh}(h]h ]h"]h$]h&]uh1jhj khM hjjubeh}(h]h ]h"]h$]h&]uh1jhjjubh)}(h **Return**h]j)}(hj3kh]hReturn}(hj5khhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1kubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjjubh)}(hX0 on success, ``-ENOTSUPP`` if the controller doesn't support setting the debounce time.h](h0 on success, }(hjIkhhhNhNubj$)}(h ``-ENOTSUPP``h]h -ENOTSUPP}(hjQkhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjIkubh? if the controller doesn’t support setting the debounce time.}(hjIkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0 gpiod_is_active_low (C function)c.gpiod_is_active_lowhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h6int gpiod_is_active_low (const struct gpio_desc *desc)h]j@)}(h5int gpiod_is_active_low(const struct gpio_desc *desc)h](j)}(hinth]hint}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM, ubjX)}(h h]h }(hjkhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkhhhjkhM, ubji)}(hgpiod_is_active_lowh]jo)}(hgpiod_is_active_lowh]hgpiod_is_active_low}(hjkhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjkubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjkhhhjkhM, ubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hjkhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjkubjX)}(h h]h }(hjkhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubjF)}(hjIh]hstruct}(hjkhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjkubjX)}(h h]h }(hjkhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjlhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjkubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]j)}jjksbc.gpiod_is_active_lowasbuh1hhjkubjX)}(h h]h }(hj lhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubj)}(hjh]h*}(hj.lhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubjo)}(hdesch]hdesc}(hj;lhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjkubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjkubah}(h]h ]h"]h$]h&]jjuh1jhjkhhhjkhM, ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjkhhhjkhM, ubah}(h]j}kah ](jjeh"]h$]h&]jj)jhuh1j9hjkhM, hjkhhubj)}(hhh]h)}(h(test whether a GPIO is active-low or noth]h(test whether a GPIO is active-low or not}(hjelhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM, hjblhhubah}(h]h ]h"]h$]h&]uh1jhjkhhhjkhM, ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj}ljj}ljjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const struct gpio_desc *desc`` the gpio descriptor to test **Return** 1 if the GPIO is active-low, 0 otherwise.h](h)}(h**Parameters**h]j)}(hjlh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM0 hjlubj)}(hhh]j)}(h=``const struct gpio_desc *desc`` the gpio descriptor to test h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjlh]hconst struct gpio_desc *desc}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjlubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM- hjlubj:)}(hhh]h)}(hthe gpio descriptor to testh]hthe gpio descriptor to test}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhM- hjlubah}(h]h ]h"]h$]h&]uh1j9hjlubeh}(h]h ]h"]h$]h&]uh1jhjlhM- hjlubah}(h]h ]h"]h$]h&]uh1jhjlubh)}(h **Return**h]j)}(hjlh]hReturn}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM/ hjlubh)}(h)1 if the GPIO is active-low, 0 otherwise.h]h)1 if the GPIO is active-low, 0 otherwise.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM/ hjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0$gpiod_toggle_active_low (C function)c.gpiod_toggle_active_lowhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h5void gpiod_toggle_active_low (struct gpio_desc *desc)h]j@)}(h4void gpiod_toggle_active_low(struct gpio_desc *desc)h](j)}(hvoidh]hvoid}(hj&mhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"mhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM: ubjX)}(h h]h }(hj5mhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj"mhhhj4mhM: ubji)}(hgpiod_toggle_active_lowh]jo)}(hgpiod_toggle_active_lowh]hgpiod_toggle_active_low}(hjGmhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjCmubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj"mhhhj4mhM: ubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjcmhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj_mubjX)}(h h]h }(hjpmhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj_mubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjmhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj~mubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]j)}jjImsbc.gpiod_toggle_active_lowasbuh1hhj_mubjX)}(h h]h }(hjmhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj_mubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_mubjo)}(hdesch]hdesc}(hjmhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj_mubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj[mubah}(h]h ]h"]h$]h&]jjuh1jhj"mhhhj4mhM: ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjmhhhj4mhM: ubah}(h]jmah ](jjeh"]h$]h&]jj)jhuh1j9hj4mhM: hjmhhubj)}(hhh]h)}(h*toggle whether a GPIO is active-low or noth]h*toggle whether a GPIO is active-low or not}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM: hjmhhubah}(h]h ]h"]h$]h&]uh1jhjmhhhj4mhM: ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjmjjmjjjuh1j4hhhjhNhNubj)}(hJ**Parameters** ``struct gpio_desc *desc`` the gpio descriptor to changeh](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hj nhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM> hjnubj)}(hhh]j)}(h8``struct gpio_desc *desc`` the gpio descriptor to changeh](j)}(h``struct gpio_desc *desc``h]j$)}(hj'nh]hstruct gpio_desc *desc}(hj)nhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj%nubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM@ hj!nubj:)}(hhh]h)}(hthe gpio descriptor to changeh]hthe gpio descriptor to change}(hj@nhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM; hj=nubah}(h]h ]h"]h$]h&]uh1j9hj!nubeh}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCvmodnameN classnameNjj)}j]j)}jjusbc.gpiod_get_array_valueasbuh1hhjvubjX)}(h h]h }(hjavhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjvubj)}(hjh]h*}(hjovhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj)}(hjh]h*}(hj|vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubjo)}(h desc_arrayh]h desc_array}(hjvhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjvubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjuubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hjvhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjvubjX)}(h h]h }(hjvhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjvubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hjvhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j]vc.gpiod_get_array_valueasbuh1hhjvubjX)}(h h]h }(hjvhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjvubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubjo)}(h array_infoh]h array_info}(hjvhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjvubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjuubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjX)}(h h]h }(hj whhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjwubj)}(hlongh]hlong}(hj.whhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjX)}(h h]h }(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjY|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0&gpiod_set_raw_array_value (C function)c.gpiod_set_raw_array_valuehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiod_set_raw_array_value (unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h]j@)}(hint gpiod_set_raw_array_value(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hinth]hint}(hjm}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji}hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj|}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhji}hhhj{}hMubji)}(hgpiod_set_raw_array_valueh]jo)}(hgpiod_set_raw_array_valueh]hgpiod_set_raw_array_value}(hj}hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj}ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhji}hhhj{}hMubj)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hunsigned int array_sizeh](j)}(hunsignedh]hunsigned}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjX)}(h h]h }(hj}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj}ubj)}(hinth]hint}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjX)}(h h]h }(hj}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj}ubjo)}(h array_sizeh]h array_size}(hj}hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj}ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj}ubj)}(hstruct gpio_desc **desc_arrayh](jF)}(hjIh]hstruct}(hj}hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj}ubjX)}(h h]h }(hj~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj}ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj~hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j)}jj}sbc.gpiod_set_raw_array_valueasbuh1hhj}ubjX)}(h h]h }(hj9~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj}ubj)}(hjh]h*}(hjG~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hjh]h*}(hjT~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjo)}(h desc_arrayh]h desc_array}(hja~hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj}ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj}ubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hjz~hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjv~ubjX)}(h h]h }(hj~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjv~ubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hj~hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j5~c.gpiod_set_raw_array_valueasbuh1hhjv~ubjX)}(h h]h }(hj~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjv~ubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv~ubjo)}(h array_infoh]h array_info}(hj~hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjv~ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj}ubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubjX)}(h h]h }(hj~hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj~ubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj~ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubjo)}(h value_bitmaph]h value_bitmap}(hj/hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj~ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj}ubeh}(h]h ]h"]h$]h&]jjuh1jhji}hhhj{}hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhje}hhhj{}hMubah}(h]j`}ah ](jjeh"]h$]h&]jj)jhuh1j9hj{}hMhjb}hhubj)}(hhh]h)}(h"assign values to an array of GPIOsh]h"assign values to an array of GPIOs}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjVhhubah}(h]h ]h"]h$]h&]uh1jhjb}hhhj{}hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``unsigned int array_size`` number of elements in the descriptor array / value bitmap ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned ``struct gpio_array *array_info`` information on applicability of fast bitmap processing path ``unsigned long *value_bitmap`` bitmap of values to assign **Description** Set the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status. This function can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj{h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjuubj)}(hhh](j)}(hV``unsigned int array_size`` number of elements in the descriptor array / value bitmap h](j)}(h``unsigned int array_size``h]j$)}(hjh]hunsigned int array_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hZ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned h](j)}(h!``struct gpio_desc **desc_array``h]j$)}(hjh]hstruct gpio_desc **desc_array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h7array of GPIO descriptors whose values will be assignedh]h7array of GPIO descriptors whose values will be assigned}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j$)}(hj h]hstruct gpio_array *array_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj"ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj!hMhjubj)}(h;``unsigned long *value_bitmap`` bitmap of values to assign h](j)}(h``unsigned long *value_bitmap``h]j$)}(hjEh]hunsigned long *value_bitmap}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjCubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj?ubj:)}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1j9hj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjubeh}(h]h ]h"]h$]h&]uh1jhjuubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjuubh)}(hrSet the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status.h]hrSet the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjuubh)}(hThis function can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep.h]hThis function can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjuubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjuubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj̀hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0"gpiod_set_array_value (C function)c.gpiod_set_array_valuehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiod_set_array_value (unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h]j@)}(hint gpiod_set_array_value(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhj hMubji)}(hgpiod_set_array_valueh]jo)}(hgpiod_set_array_valueh]hgpiod_set_array_value}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhj hMubj)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hunsigned int array_sizeh](j)}(hunsignedh]hunsigned}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjX)}(h h]h }(hjFhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj4ubj)}(hinth]hint}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjX)}(h h]h }(hjbhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj4ubjo)}(h array_sizeh]h array_size}(hjphhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj0ubj)}(hstruct gpio_desc **desc_arrayh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.gpiod_set_array_valueasbuh1hhjubjX)}(h h]h }(hjǁhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjՁhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(h desc_arrayh]h desc_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj0ubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hj&hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]jÁc.gpiod_set_array_valueasbuh1hhjubjX)}(h h]h }(hjDhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(h array_infoh]h array_info}(hj_hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj0ubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubjo)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjtubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj0ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hj hMhjhhubj)}(hhh]h)}(h"assign values to an array of GPIOsh]h"assign values to an array of GPIOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``unsigned int array_size`` number of elements in the descriptor array / value bitmap ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned ``struct gpio_array *array_info`` information on applicability of fast bitmap processing path ``unsigned long *value_bitmap`` bitmap of values to assign **Description** Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account. This function can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh](j)}(hV``unsigned int array_size`` number of elements in the descriptor array / value bitmap h](j)}(h``unsigned int array_size``h]j$)}(hj(h]hunsigned int array_size}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj&ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj"ubj:)}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj>ubah}(h]h ]h"]h$]h&]uh1j9hj"ubeh}(h]h ]h"]h$]h&]uh1jhj=hMhjubj)}(hZ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned h](j)}(h!``struct gpio_desc **desc_array``h]j$)}(hjah]hstruct gpio_desc **desc_array}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj_ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj[ubj:)}(hhh]h)}(h7array of GPIO descriptors whose values will be assignedh]h7array of GPIO descriptors whose values will be assigned}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMhjwubah}(h]h ]h"]h$]h&]uh1j9hj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhMhjubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j$)}(hjh]hstruct gpio_array *array_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h;``unsigned long *value_bitmap`` bitmap of values to assign h](j)}(h``unsigned long *value_bitmap``h]j$)}(hjӃh]hunsigned long *value_bitmap}(hjՃhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjуubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj̓ubj:)}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hj̓ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hVSet the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account.h]hVSet the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hThis function can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep.h]hThis function can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h **Return**h]j)}(hjDh]hReturn}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_cansleep (C function)c.gpiod_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h1int gpiod_cansleep (const struct gpio_desc *desc)h]j@)}(h0int gpiod_cansleep(const struct gpio_desc *desc)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMubji)}(hgpiod_cansleeph]jo)}(hgpiod_cansleeph]hgpiod_cansleep}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hjƄhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj„ubjX)}(h h]h }(hjӄhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj„ubjF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj„ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj„ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.gpiod_cansleepasbuh1hhj„ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj„ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj„ubjo)}(hdesch]hdesc}(hj:hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj„ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMubah}(h]j|ah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhj~hhubj)}(hhh]h)}(h*report whether gpio value access may sleeph]h*report whether gpio value access may sleep}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjahhubah}(h]h ]h"]h$]h&]uh1jhj~hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const struct gpio_desc *desc`` gpio to check **Return** 0 for non-sleepable, 1 for sleepable, or an error code in case of error.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh]j)}(h/``const struct gpio_desc *desc`` gpio to check h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjh]hconst struct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h gpio to checkh]h gpio to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjޅubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hH0 for non-sleepable, 1 for sleepable, or an error code in case of error.h]hH0 for non-sleepable, 1 for sleepable, or an error code in case of error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0$gpiod_set_consumer_name (C function)c.gpiod_set_consumer_namehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hFint gpiod_set_consumer_name (struct gpio_desc *desc, const char *name)h]j@)}(hEint gpiod_set_consumer_name(struct gpio_desc *desc, const char *name)h](j)}(hinth]hint}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hj4hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj!hhhj3hM ubji)}(hgpiod_set_consumer_nameh]jo)}(hgpiod_set_consumer_nameh]hgpiod_set_consumer_name}(hjFhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjBubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj!hhhj3hM ubj)}(h*(struct gpio_desc *desc, const char *name)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjbhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj^ubjX)}(h h]h }(hjohhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj^ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjHsbc.gpiod_set_consumer_nameasbuh1hhj^ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj^ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj^ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjZubj)}(hconst char *nameh](jF)}(hjh]hconst}(hjԆhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjІubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjІubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjІubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjІubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjІubjo)}(hnameh]hname}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjІubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjZubeh}(h]h ]h"]h$]h&]jjuh1jhj!hhhj3hM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj3hM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hj3hM hjhhubj)}(hhh]h)}(h(set the consumer name for the descriptorh]h(set the consumer name for the descriptor}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj?hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj3hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZjjZjjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_desc *desc`` gpio to set the consumer name on ``const char *name`` the new consumer name **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj^ubj)}(hhh](j)}(h<``struct gpio_desc *desc`` gpio to set the consumer name on h](j)}(h``struct gpio_desc *desc``h]j$)}(hjh]hstruct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hj}ubj:)}(hhh]h)}(h gpio to set the consumer name onh]h gpio to set the consumer name on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j9hj}ubeh}(h]h ]h"]h$]h&]uh1jhjhM hjzubj)}(h+``const char *name`` the new consumer name h](j)}(h``const char *name``h]j$)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjubj:)}(hhh]h)}(hthe new consumer nameh]hthe new consumer name}(hjՇhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjчhM hj҇ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjчhM hjzubeh}(h]h ]h"]h$]h&]uh1jhj^ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj^ubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_is_shared (C function)c.gpiod_is_sharedhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h3bool gpiod_is_shared (const struct gpio_desc *desc)h]j@)}(h2bool gpiod_is_shared(const struct gpio_desc *desc)h](j)}(hjT,h]hbool}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM!ubjX)}(h h]h }(hjJhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj8hhhjIhM!ubji)}(hgpiod_is_sharedh]jo)}(hgpiod_is_sharedh]hgpiod_is_shared}(hj\hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjXubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj8hhhjIhM!ubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hjxhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjtubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubjF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjtubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj^sbc.gpiod_is_sharedasbuh1hhjtubjX)}(h h]h }(hjшhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubj)}(hjh]h*}(hj߈hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjtubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubah}(h]h ]h"]h$]h&]jjuh1jhj8hhhjIhM!ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj4hhhjIhM!ubah}(h]j/ah ](jjeh"]h$]h&]jj)jhuh1j9hjIhM!hj1hhubj)}(hhh]h)}(h6check if this GPIO can be shared by multiple consumersh]h6check if this GPIO can be shared by multiple consumers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM!hjhhubah}(h]h ]h"]h$]h&]uh1jhj1hhhjIhM!ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj.jj.jjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``const struct gpio_desc *desc`` GPIO to inspect **Return** True if this GPIO can be shared by multiple consumers at once. False if it's a regular, exclusive GPIO. **Note** This function returning true does not mean that this GPIO is currently being shared. It means the GPIO core has registered the fact that the firmware configuration indicates that it can be shared by multiple consumers and is in charge of arbitrating the access.h](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM%hj2ubj)}(hhh]j)}(h1``const struct gpio_desc *desc`` GPIO to inspect h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjWh]hconst struct gpio_desc *desc}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjUubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM"hjQubj:)}(hhh]h)}(hGPIO to inspecth]hGPIO to inspect}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhM"hjmubah}(h]h ]h"]h$]h&]uh1j9hjQubeh}(h]h ]h"]h$]h&]uh1jhjlhM"hjNubah}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM$hj2ubh)}(hgTrue if this GPIO can be shared by multiple consumers at once. False if it's a regular, exclusive GPIO.h]hiTrue if this GPIO can be shared by multiple consumers at once. False if it’s a regular, exclusive GPIO.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM$hj2ubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM'hj2ubh)}(hXThis function returning true does not mean that this GPIO is currently being shared. It means the GPIO core has registered the fact that the firmware configuration indicates that it can be shared by multiple consumers and is in charge of arbitrating the access.h]hXThis function returning true does not mean that this GPIO is currently being shared. It means the GPIO core has registered the fact that the firmware configuration indicates that it can be shared by multiple consumers and is in charge of arbitrating the access.}(hjωhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM(hj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_to_irq (C function)c.gpiod_to_irqhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/int gpiod_to_irq (const struct gpio_desc *desc)h]j@)}(h.int gpiod_to_irq(const struct gpio_desc *desc)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM5ubjX)}(h h]h }(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhj hM5ubji)}(h gpiod_to_irqh]jo)}(h gpiod_to_irqh]h gpiod_to_irq}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhj hM5ubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hj;hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj7ubjX)}(h h]h }(hjHhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubjF)}(hjIh]hstruct}(hjVhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj7ubjX)}(h h]h }(hjchhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjthhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j)}jj!sbc.gpiod_to_irqasbuh1hhj7ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj3ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhj hM5ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj hM5ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hj hM5hjhhubj)}(hhh]h)}(h&return the IRQ corresponding to a GPIOh]h&return the IRQ corresponding to a GPIO}(hjيhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM5hj֊hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hM5ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(h**Parameters** ``const struct gpio_desc *desc`` gpio whose IRQ will be returned (already requested) **Return** The IRQ corresponding to the passed GPIO, or an error code in case of error.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM9hjubj)}(hhh]j)}(hU``const struct gpio_desc *desc`` gpio whose IRQ will be returned (already requested) h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjh]hconst struct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM6hjubj:)}(hhh]h)}(h3gpio whose IRQ will be returned (already requested)h]h3gpio whose IRQ will be returned (already requested)}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hM6hj0ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj/hM6hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjUh]hReturn}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM8hjubh)}(hLThe IRQ corresponding to the passed GPIO, or an error code in case of error.h]hLThe IRQ corresponding to the passed GPIO, or an error code in case of error.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!gpiochip_lock_as_irq (C function)c.gpiochip_lock_as_irqhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hDint gpiochip_lock_as_irq (struct gpio_chip *gc, unsigned int offset)h]j@)}(hCint gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM`ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhM`ubji)}(hgpiochip_lock_as_irqh]jo)}(hgpiochip_lock_as_irqh]hgpiochip_lock_as_irq}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhM`ubj)}(h+(struct gpio_chip *gc, unsigned int offset)h](j)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hj׋hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjӋubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjӋubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.gpiochip_lock_as_irqasbuh1hhjӋubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjӋubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjӋubjo)}(hgch]hgc}(hj0hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjӋubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjϋubj)}(hunsigned int offseth](j)}(hunsignedh]hunsigned}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubjX)}(h h]h }(hjWhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjEubj)}(hinth]hint}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubjX)}(h h]h }(hjshhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjEubjo)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjϋubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhM`ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhM`ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhM`hjhhubj)}(hhh]h)}(hlock a GPIO to be used as IRQh]hlock a GPIO to be used as IRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM`hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM`ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjÌjjÌjjjuh1j4hhhjhNhNubj)}(hXA**Parameters** ``struct gpio_chip *gc`` the chip the GPIO to lock belongs to ``unsigned int offset`` the offset of the GPIO to lock as IRQ **Description** This is used directly by GPIO drivers that want to lock down a certain GPIO line to be used for IRQs. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj͌h]h Parameters}(hjόhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjˌubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMdhjnjubj)}(hhh](j)}(h>``struct gpio_chip *gc`` the chip the GPIO to lock belongs to h](j)}(h``struct gpio_chip *gc``h]j$)}(hjh]hstruct gpio_chip *gc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMahjubj:)}(hhh]h)}(h$the chip the GPIO to lock belongs toh]h$the chip the GPIO to lock belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMahjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMahjubj)}(h>``unsigned int offset`` the offset of the GPIO to lock as IRQ h](j)}(h``unsigned int offset``h]j$)}(hj%h]hunsigned int offset}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj#ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMbhjubj:)}(hhh]h)}(h%the offset of the GPIO to lock as IRQh]h%the offset of the GPIO to lock as IRQ}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMbhj;ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj:hMbhjubeh}(h]h ]h"]h$]h&]uh1jhjnjubh)}(h**Description**h]j)}(hj`h]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMdhjnjubh)}(heThis is used directly by GPIO drivers that want to lock down a certain GPIO line to be used for IRQs.h]heThis is used directly by GPIO drivers that want to lock down a certain GPIO line to be used for IRQs.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMchjnjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMfhjnjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMghjnjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0#gpiochip_unlock_as_irq (C function)c.gpiochip_unlock_as_irqhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hGvoid gpiochip_unlock_as_irq (struct gpio_chip *gc, unsigned int offset)h]j@)}(hFvoid gpiochip_unlock_as_irq(struct gpio_chip *gc, unsigned int offset)h](j)}(hvoidh]hvoid}(hj̍hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjȍhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjۍhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjȍhhhjڍhMubji)}(hgpiochip_unlock_as_irqh]jo)}(hgpiochip_unlock_as_irqh]hgpiochip_unlock_as_irq}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjȍhhhjڍhMubj)}(h+(struct gpio_chip *gc, unsigned int offset)h](j)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hj hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hj'hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j)}jjsbc.gpiochip_unlock_as_irqasbuh1hhjubjX)}(h h]h }(hjGhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hgch]hgc}(hjbhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned int offseth](j)}(hunsignedh]hunsigned}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjwubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjwubjo)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjwubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjȍhhhjڍhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjčhhhjڍhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjڍhMhjhhubj)}(hhh]h)}(hunlock a GPIO used as IRQh]hunlock a GPIO used as IRQ}(hjݎhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjڎhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjڍhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_chip *gc`` the chip the GPIO to lock belongs to ``unsigned int offset`` the offset of the GPIO to lock as IRQ **Description** This is used directly by GPIO drivers that want to indicate that a certain GPIO is no longer used exclusively for IRQ.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh](j)}(h>``struct gpio_chip *gc`` the chip the GPIO to lock belongs to h](j)}(h``struct gpio_chip *gc``h]j$)}(hjh]hstruct gpio_chip *gc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h$the chip the GPIO to lock belongs toh]h$the chip the GPIO to lock belongs to}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj4ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj3hMhjubj)}(h>``unsigned int offset`` the offset of the GPIO to lock as IRQ h](j)}(h``unsigned int offset``h]j$)}(hjWh]hunsigned int offset}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjUubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjQubj:)}(hhh]h)}(h%the offset of the GPIO to lock as IRQh]h%the offset of the GPIO to lock as IRQ}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjmubah}(h]h ]h"]h$]h&]uh1j9hjQubeh}(h]h ]h"]h$]h&]uh1jhjlhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hvThis is used directly by GPIO drivers that want to indicate that a certain GPIO is no longer used exclusively for IRQ.h]hvThis is used directly by GPIO drivers that want to indicate that a certain GPIO is no longer used exclusively for IRQ.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0)gpiod_get_raw_value_cansleep (C function)c.gpiod_get_raw_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h?int gpiod_get_raw_value_cansleep (const struct gpio_desc *desc)h]j@)}(h>int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)h](j)}(hinth]hint}(hj׏hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjӏhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjӏhhhjhMubji)}(hgpiod_get_raw_value_cansleeph]jo)}(hgpiod_get_raw_value_cansleeph]hgpiod_get_raw_value_cansleep}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjӏhhhjhMubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj!hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjF)}(hjIh]hstruct}(hj/hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjMhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j]j)}jjsbc.gpiod_get_raw_value_cansleepasbuh1hhjubjX)}(h h]h }(hjmhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhjӏhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjϏhhhjhMubah}(h]jʏah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhj̏hhubj)}(hhh]h)}(hreturn a gpio's raw valueh]hreturn a gpio’s raw value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj̏hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjʐjjʐjjjuh1j4hhhjhNhNubj)}(hX+**Parameters** ``const struct gpio_desc *desc`` gpio whose value will be returned **Return** The GPIO's raw value, i.e. the value of the physical line disregarding its ACTIVE_LOW status, or negative errno on failure. **Description** This function is to be called from contexts that can sleep.h](h)}(h**Parameters**h]j)}(hjԐh]h Parameters}(hj֐hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjҐubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjΐubj)}(hhh]j)}(hC``const struct gpio_desc *desc`` gpio whose value will be returned h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjh]hconst struct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h!gpio whose value will be returnedh]h!gpio whose value will be returned}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhj ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjΐubh)}(h **Return**h]j)}(hj.h]hReturn}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjΐubh)}(h{The GPIO's raw value, i.e. the value of the physical line disregarding its ACTIVE_LOW status, or negative errno on failure.h]h}The GPIO’s raw value, i.e. the value of the physical line disregarding its ACTIVE_LOW status, or negative errno on failure.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjΐubh)}(h**Description**h]j)}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjΐubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjΐubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0%gpiod_get_value_cansleep (C function)c.gpiod_get_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h;int gpiod_get_value_cansleep (const struct gpio_desc *desc)h]j@)}(h:int gpiod_get_value_cansleep(const struct gpio_desc *desc)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMubji)}(hgpiod_get_value_cansleeph]jo)}(hgpiod_get_value_cansleeph]hgpiod_get_value_cansleep}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMubj)}(h(const struct gpio_desc *desc)h]j)}(hconst struct gpio_desc *desch](jF)}(hjh]hconst}(hjבhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjӑubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjӑubjF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjӑubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjӑubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.gpiod_get_value_cansleepasbuh1hhjӑubjX)}(h h]h }(hj0hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjӑubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjӑubjo)}(hdesch]hdesc}(hjKhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjӑubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjϑubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjhhubj)}(hhh]h)}(hreturn a gpio's valueh]hreturn a gpio’s value}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjrhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``const struct gpio_desc *desc`` gpio whose value will be returned **Return** The GPIO's logical value, i.e. taking the ACTIVE_LOW status into account, or negative errno on failure. **Description** This function is to be called from contexts that can sleep.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh]j)}(hC``const struct gpio_desc *desc`` gpio whose value will be returned h](j)}(h ``const struct gpio_desc *desc``h]j$)}(hjh]hconst struct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h!gpio whose value will be returnedh]h!gpio whose value will be returned}(hjϒhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj˒hMhj̒ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj˒hMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hgThe GPIO's logical value, i.e. taking the ACTIVE_LOW status into account, or negative errno on failure.h]hiThe GPIO’s logical value, i.e. taking the ACTIVE_LOW status into account, or negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0/gpiod_get_raw_array_value_cansleep (C function)$c.gpiod_get_raw_array_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiod_get_raw_array_value_cansleep (unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h]j@)}(hint gpiod_get_raw_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hinth]hint}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM*ubjX)}(h h]h }(hjlhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjYhhhjkhM*ubji)}(h"gpiod_get_raw_array_value_cansleeph]jo)}(h"gpiod_get_raw_array_value_cansleeph]h"gpiod_get_raw_array_value_cansleep}(hj~hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjzubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjYhhhjkhM*ubj)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hunsigned int array_sizeh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjēhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(h array_sizeh]h array_size}(hjғhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_desc **desc_arrayh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsb$c.gpiod_get_raw_array_value_cansleepasbuh1hhjubjX)}(h h]h }(hj)hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(h desc_arrayh]h desc_array}(hjQhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hjjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjfubjX)}(h h]h }(hjwhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjfubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j%$c.gpiod_get_raw_array_value_cansleepasbuh1hhjfubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjo)}(h array_infoh]h array_info}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hjڔhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj֔ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj֔ubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj֔ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj֔ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj֔ubjo)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj֔ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjYhhhjkhM*ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjUhhhjkhM*ubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1j9hjkhM*hjRhhubj)}(hhh]h)}(h&read raw values from an array of GPIOsh]h&read raw values from an array of GPIOs}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM*hjFhhubah}(h]h ]h"]h$]h&]uh1jhjRhhhjkhM*ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjajjajjjuh1j4hhhjhNhNubj)}(hX`**Parameters** ``unsigned int array_size`` number of elements in the descriptor array / value bitmap ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be read ``struct gpio_array *array_info`` information on applicability of fast bitmap processing path ``unsigned long *value_bitmap`` bitmap to store the read values **Description** Read the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status. This function is to be called from contexts that can sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjkh]h Parameters}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM.hjeubj)}(hhh](j)}(hV``unsigned int array_size`` number of elements in the descriptor array / value bitmap h](j)}(h``unsigned int array_size``h]j$)}(hjh]hunsigned int array_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM+hjubj:)}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM+hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM+hjubj)}(hV``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be read h](j)}(h!``struct gpio_desc **desc_array``h]j$)}(hjÕh]hstruct gpio_desc **desc_array}(hjŕhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM,hjubj:)}(hhh]h)}(h3array of GPIO descriptors whose values will be readh]h3array of GPIO descriptors whose values will be read}(hjܕhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjؕhM,hjٕubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjؕhM,hjubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j$)}(hjh]hstruct gpio_array *array_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM-hjubj:)}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM-hjubj)}(h@``unsigned long *value_bitmap`` bitmap to store the read values h](j)}(h``unsigned long *value_bitmap``h]j$)}(hj5h]hunsigned long *value_bitmap}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj3ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM.hj/ubj:)}(hhh]h)}(hbitmap to store the read valuesh]hbitmap to store the read values}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM.hjKubah}(h]h ]h"]h$]h&]uh1j9hj/ubeh}(h]h ]h"]h$]h&]uh1jhjJhM.hjubeh}(h]h ]h"]h$]h&]uh1jhjeubh)}(h**Description**h]j)}(hjph]h Description}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM0hjeubh)}(hsRead the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status.h]hsRead the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM/hjeubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM2hjeubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM4hjeubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM5hjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0+gpiod_get_array_value_cansleep (C function) c.gpiod_get_array_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiod_get_array_value_cansleep (unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h]j@)}(hint gpiod_get_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMGubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMGubji)}(hgpiod_get_array_value_cansleeph]jo)}(hgpiod_get_array_value_cansleeph]hgpiod_get_array_value_cansleep}(hj hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMGubj)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hunsigned int array_sizeh](j)}(hunsignedh]hunsigned}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubjX)}(h h]h }(hj6hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj$ubj)}(hinth]hint}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubjX)}(h h]h }(hjRhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj$ubjo)}(h array_sizeh]h array_size}(hj`hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj$ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hstruct gpio_desc **desc_arrayh](jF)}(hjIh]hstruct}(hjyhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjuubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjuubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.gpiod_get_array_value_cansleepasbuh1hhjuubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjuubj)}(hjh]h*}(hjŗhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj)}(hjh]h*}(hjҗhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjo)}(h desc_arrayh]h desc_array}(hjߗhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjuubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.gpiod_get_array_value_cansleepasbuh1hhjubjX)}(h h]h }(hj4hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(h array_infoh]h array_info}(hjOhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjX)}(h h]h }(hjvhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjdubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjdubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjo)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjdubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMGubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMGubah}(h]jޖah ](jjeh"]h$]h&]jj)jhuh1j9hjhMGhjhhubj)}(hhh]h)}(h"read values from an array of GPIOsh]h"read values from an array of GPIOs}(hjטhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMGhjԘhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMGubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXD**Parameters** ``unsigned int array_size`` number of elements in the descriptor array / value bitmap ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be read ``struct gpio_array *array_info`` information on applicability of fast bitmap processing path ``unsigned long *value_bitmap`` bitmap to store the read values **Description** Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account. This function is to be called from contexts that can sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMKhjubj)}(hhh](j)}(hV``unsigned int array_size`` number of elements in the descriptor array / value bitmap h](j)}(h``unsigned int array_size``h]j$)}(hjh]hunsigned int array_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMHhjubj:)}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMHhj.ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj-hMHhjubj)}(hV``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be read h](j)}(h!``struct gpio_desc **desc_array``h]j$)}(hjQh]hstruct gpio_desc **desc_array}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjOubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMIhjKubj:)}(hhh]h)}(h3array of GPIO descriptors whose values will be readh]h3array of GPIO descriptors whose values will be read}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMIhjgubah}(h]h ]h"]h$]h&]uh1j9hjKubeh}(h]h ]h"]h$]h&]uh1jhjfhMIhjubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j$)}(hjh]hstruct gpio_array *array_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMJhjubj:)}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjubj)}(h@``unsigned long *value_bitmap`` bitmap to store the read values h](j)}(h``unsigned long *value_bitmap``h]j$)}(hjÙh]hunsigned long *value_bitmap}(hjřhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMKhjubj:)}(hhh]h)}(hbitmap to store the read valuesh]hbitmap to store the read values}(hjܙhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjؙhMKhjٙubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjؙhMKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMMhjubh)}(hWRead the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account.h]hWRead the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMLhjubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMOhjubh)}(h **Return**h]j)}(hj4h]hReturn}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMQhjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMRhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0)gpiod_set_raw_value_cansleep (C function)c.gpiod_set_raw_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hDint gpiod_set_raw_value_cansleep (struct gpio_desc *desc, int value)h]j@)}(hCint gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value)h](j)}(hinth]hint}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMdubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjuhhhjhMdubji)}(hgpiod_set_raw_value_cansleeph]jo)}(hgpiod_set_raw_value_cansleeph]hgpiod_set_raw_value_cansleep}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjuhhhjhMdubj)}(h#(struct gpio_desc *desc, int value)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjÚhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjԚhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjњubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj֚modnameN classnameNjj)}j]j)}jjsbc.gpiod_set_raw_value_cansleepasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h int valueh](j)}(hinth]hint}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubjX)}(h h]h }(hj6hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj$ubjo)}(hvalueh]hvalue}(hjDhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj$ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjuhhhjhMdubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjqhhhjhMdubah}(h]jlah ](jjeh"]h$]h&]jj)jhuh1j9hjhMdhjnhhubj)}(hhh]h)}(hassign a gpio's raw valueh]hassign a gpio’s raw value}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMdhjkhhubah}(h]h ]h"]h$]h&]uh1jhjnhhhjhMdubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXh**Parameters** ``struct gpio_desc *desc`` gpio whose value will be assigned ``int value`` value to assign **Description** Set the raw value of the GPIO, i.e. the value of its physical line without regard for its ACTIVE_LOW status. This function is to be called from contexts that can sleep. **Return** 0 on success, negative error number on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhhjubj)}(hhh](j)}(h=``struct gpio_desc *desc`` gpio whose value will be assigned h](j)}(h``struct gpio_desc *desc``h]j$)}(hjh]hstruct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMehjubj:)}(hhh]h)}(h!gpio whose value will be assignedh]h!gpio whose value will be assigned}(hjțhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjěhMehjśubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjěhMehjubj)}(h``int value`` value to assign h](j)}(h ``int value``h]j$)}(hjh]h int value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMfhjubj:)}(hhh]h)}(hvalue to assignh]hvalue to assign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMfhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMfhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj#h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhhjubh)}(hlSet the raw value of the GPIO, i.e. the value of its physical line without regard for its ACTIVE_LOW status.h]hlSet the raw value of the GPIO, i.e. the value of its physical line without regard for its ACTIVE_LOW status.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMghjubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMjhjubh)}(h **Return**h]j)}(hjYh]hReturn}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMlhjubh)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMmhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0%gpiod_set_value_cansleep (C function)c.gpiod_set_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h@int gpiod_set_value_cansleep (struct gpio_desc *desc, int value)h]j@)}(h?int gpiod_set_value_cansleep(struct gpio_desc *desc, int value)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMyubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMyubji)}(hgpiod_set_value_cansleeph]jo)}(hgpiod_set_value_cansleeph]hgpiod_set_value_cansleep}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMyubj)}(h#(struct gpio_desc *desc, int value)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjۜhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjלubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjלubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.gpiod_set_value_cansleepasbuh1hhjלubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjלubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjלubjo)}(hdesch]hdesc}(hj4hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjלubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjӜubj)}(h int valueh](j)}(hinth]hint}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubjX)}(h h]h }(hj[hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjIubjo)}(hvalueh]hvalue}(hjihhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjIubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjӜubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMyubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMyubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMyhjhhubj)}(hhh]h)}(hassign a gpio's valueh]hassign a gpio’s value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMyhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMyubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXM**Parameters** ``struct gpio_desc *desc`` gpio whose value will be assigned ``int value`` value to assign **Description** Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into account This function is to be called from contexts that can sleep. **Return** 0 on success, negative error number on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM}hjubj)}(hhh](j)}(h=``struct gpio_desc *desc`` gpio whose value will be assigned h](j)}(h``struct gpio_desc *desc``h]j$)}(hjԝh]hstruct gpio_desc *desc}(hj֝hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjҝubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMzhjΝubj:)}(hhh]h)}(h!gpio whose value will be assignedh]h!gpio whose value will be assigned}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMzhjubah}(h]h ]h"]h$]h&]uh1j9hjΝubeh}(h]h ]h"]h$]h&]uh1jhjhMzhj˝ubj)}(h``int value`` value to assign h](j)}(h ``int value``h]j$)}(hj h]h int value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM{hjubj:)}(hhh]h)}(hvalue to assignh]hvalue to assign}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hM{hj#ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj"hM{hj˝ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjHh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM}hjubh)}(hQSet the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into accounth]hQSet the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into account}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM|hjubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h **Return**h]j)}(hj~h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0/gpiod_set_raw_array_value_cansleep (C function)$c.gpiod_set_raw_array_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiod_set_raw_array_value_cansleep (unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h]j@)}(hint gpiod_set_raw_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hinth]hint}(hjÞhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjҞhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjўhMubji)}(h"gpiod_set_raw_array_value_cansleeph]jo)}(h"gpiod_set_raw_array_value_cansleeph]h"gpiod_set_raw_array_value_cansleep}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjўhMubj)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hunsigned int array_sizeh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hj*hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(h array_sizeh]h array_size}(hj8hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_desc **desc_arrayh](jF)}(hjIh]hstruct}(hjQhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjMubjX)}(h h]h }(hj^hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjMubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjohhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]j)}jjsb$c.gpiod_set_raw_array_value_cansleepasbuh1hhjMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubjo)}(h desc_arrayh]h desc_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjMubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hjПhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj̟ubjX)}(h h]h }(hjݟhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj̟ubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j$c.gpiod_set_raw_array_value_cansleepasbuh1hhj̟ubjX)}(h h]h }(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj̟ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj̟ubjo)}(h array_infoh]h array_info}(hj'hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj̟ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjX)}(h h]h }(hjNhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<ubj)}(hlongh]hlong}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjX)}(h h]h }(hjjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj<ubj)}(hjh]h*}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubjo)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj<ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjўhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjўhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjўhMhjhhubj)}(hhh]h)}(h"assign values to an array of GPIOsh]h"assign values to an array of GPIOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjўhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjǠjjǠjjjuh1j4hhhjhNhNubj)}(hX^**Parameters** ``unsigned int array_size`` number of elements in the descriptor array / value bitmap ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned ``struct gpio_array *array_info`` information on applicability of fast bitmap processing path ``unsigned long *value_bitmap`` bitmap of values to assign **Description** Set the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status. This function is to be called from contexts that can sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjѠh]h Parameters}(hjӠhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjϠubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjˠubj)}(hhh](j)}(hV``unsigned int array_size`` number of elements in the descriptor array / value bitmap h](j)}(h``unsigned int array_size``h]j$)}(hjh]hunsigned int array_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hZ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned h](j)}(h!``struct gpio_desc **desc_array``h]j$)}(hj)h]hstruct gpio_desc **desc_array}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj'ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj#ubj:)}(hhh]h)}(h7array of GPIO descriptors whose values will be assignedh]h7array of GPIO descriptors whose values will be assigned}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMhj?ubah}(h]h ]h"]h$]h&]uh1j9hj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hMhjubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j$)}(hjbh]hstruct gpio_array *array_info}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj\ubj:)}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjxubah}(h]h ]h"]h$]h&]uh1j9hj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhMhjubj)}(h;``unsigned long *value_bitmap`` bitmap of values to assign h](j)}(h``unsigned long *value_bitmap``h]j$)}(hjh]hunsigned long *value_bitmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjˠubh)}(h**Description**h]j)}(hj֡h]h Description}(hjءhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjԡubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjˠubh)}(hrSet the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status.h]hrSet the raw values of the GPIOs, i.e. the values of the physical lines without regard for their ACTIVE_LOW status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjˠubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjˠubh)}(h **Return**h]j)}(hj h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjˠubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjˠubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0+gpiod_set_array_value_cansleep (C function) c.gpiod_set_array_value_cansleephNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint gpiod_set_array_value_cansleep (unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h]j@)}(hint gpiod_set_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hinth]hint}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj`hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjMhhhj_hMubji)}(hgpiod_set_array_value_cansleeph]jo)}(hgpiod_set_array_value_cansleeph]hgpiod_set_array_value_cansleep}(hjrhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjnubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjMhhhj_hMubj)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j)}(hunsigned int array_sizeh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(h array_sizeh]h array_size}(hjƢhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_desc **desc_arrayh](jF)}(hjIh]hstruct}(hjߢhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjۢubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjۢubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjtsb c.gpiod_set_array_value_cansleepasbuh1hhjۢubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjۢubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۢubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۢubjo)}(h desc_arrayh]h desc_array}(hjEhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjۢubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_array *array_infoh](jF)}(hjIh]hstruct}(hj^hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjZubjX)}(h h]h }(hjkhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjZubh)}(hhh]jo)}(h gpio_arrayh]h gpio_array}(hj|hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j c.gpiod_set_array_value_cansleepasbuh1hhjZubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjo)}(h array_infoh]h array_info}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjZubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned long *value_bitmaph](j)}(hunsignedh]hunsigned}(hjΣhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʣubjX)}(h h]h }(hjܣhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjʣubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʣubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjʣubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʣubjo)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjʣubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjMhhhj_hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjIhhhj_hMubah}(h]jDah ](jjeh"]h$]h&]jj)jhuh1j9hj_hMhjFhhubj)}(hhh]h)}(h"assign values to an array of GPIOsh]h"assign values to an array of GPIOs}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj:hhubah}(h]h ]h"]h$]h&]uh1jhjFhhhj_hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjUjjUjjjuh1j4hhhjhNhNubj)}(hXB**Parameters** ``unsigned int array_size`` number of elements in the descriptor array / value bitmap ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned ``struct gpio_array *array_info`` information on applicability of fast bitmap processing path ``unsigned long *value_bitmap`` bitmap of values to assign **Description** Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account. This function is to be called from contexts that can sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj_h]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjYubj)}(hhh](j)}(hV``unsigned int array_size`` number of elements in the descriptor array / value bitmap h](j)}(h``unsigned int array_size``h]j$)}(hj~h]hunsigned int array_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj|ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjxubj:)}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjxubeh}(h]h ]h"]h$]h&]uh1jhjhMhjuubj)}(hZ``struct gpio_desc **desc_array`` array of GPIO descriptors whose values will be assigned h](j)}(h!``struct gpio_desc **desc_array``h]j$)}(hjh]hstruct gpio_desc **desc_array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h7array of GPIO descriptors whose values will be assignedh]h7array of GPIO descriptors whose values will be assigned}(hjФhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj̤hMhjͤubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj̤hMhjuubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j$)}(hjh]hstruct gpio_array *array_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjuubj)}(h;``unsigned long *value_bitmap`` bitmap of values to assign h](j)}(h``unsigned long *value_bitmap``h]j$)}(hj)h]hunsigned long *value_bitmap}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj'ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj#ubj:)}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMhj?ubah}(h]h ]h"]h$]h&]uh1j9hj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hMhjuubeh}(h]h ]h"]h$]h&]uh1jhjYubh)}(h**Description**h]j)}(hjdh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjYubh)}(hVSet the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account.h]hVSet the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status into account.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjYubh)}(h;This function is to be called from contexts that can sleep.h]h;This function is to be called from contexts that can sleep.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjYubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjYubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0#gpiod_add_lookup_table (C function)c.gpiod_add_lookup_tablehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h>void gpiod_add_lookup_table (struct gpiod_lookup_table *table)h]j@)}(h=void gpiod_add_lookup_table(struct gpiod_lookup_table *table)h](j)}(hvoidh]hvoid}(hjߥhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۥhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjۥhhhjhMubji)}(hgpiod_add_lookup_tableh]jo)}(hgpiod_add_lookup_tableh]hgpiod_add_lookup_table}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjۥhhhjhMubj)}(h"(struct gpiod_lookup_table *table)h]j)}(h struct gpiod_lookup_table *tableh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj)hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hgpiod_lookup_tableh]hgpiod_lookup_table}(hj:hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<modnameN classnameNjj)}j]j)}jjsbc.gpiod_add_lookup_tableasbuh1hhjubjX)}(h h]h }(hjZhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(htableh]htable}(hjuhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjۥhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjץhhhjhMubah}(h]jҥah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjԥhhubj)}(hhh]h)}(hregister GPIO device consumersh]hregister GPIO device consumers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjԥhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hU**Parameters** ``struct gpiod_lookup_table *table`` table of consumers to registerh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjæhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh]j)}(hC``struct gpiod_lookup_table *table`` table of consumers to registerh](j)}(h$``struct gpiod_lookup_table *table``h]j$)}(hjh]h struct gpiod_lookup_table *table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjަubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjڦubj:)}(hhh]h)}(htable of consumers to registerh]htable of consumers to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubah}(h]h ]h"]h$]h&]uh1j9hjڦubeh}(h]h ]h"]h$]h&]uh1jhjhMhjצubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0&gpiod_remove_lookup_table (C function)c.gpiod_remove_lookup_tablehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hAvoid gpiod_remove_lookup_table (struct gpiod_lookup_table *table)h]j@)}(h@void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)h](j)}(hvoidh]hvoid}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjIhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj6hhhjHhMubji)}(hgpiod_remove_lookup_tableh]jo)}(hgpiod_remove_lookup_tableh]hgpiod_remove_lookup_table}(hj[hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj6hhhjHhMubj)}(h"(struct gpiod_lookup_table *table)h]j)}(h struct gpiod_lookup_table *tableh](jF)}(hjIh]hstruct}(hjwhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjsubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjsubh)}(hhh]jo)}(hgpiod_lookup_tableh]hgpiod_lookup_table}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj]sbc.gpiod_remove_lookup_tableasbuh1hhjsubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjsubj)}(hjh]h*}(hjçhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubjo)}(htableh]htable}(hjЧhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjsubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjoubah}(h]h ]h"]h$]h&]jjuh1jhj6hhhjHhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj2hhhjHhMubah}(h]j-ah ](jjeh"]h$]h&]jj)jhuh1j9hjHhMhj/hhubj)}(hhh]h)}(h unregister GPIO device consumersh]h unregister GPIO device consumers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj/hhhjHhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hW**Parameters** ``struct gpiod_lookup_table *table`` table of consumers to unregisterh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh]j)}(hE``struct gpiod_lookup_table *table`` table of consumers to unregisterh](j)}(h$``struct gpiod_lookup_table *table``h]j$)}(hj;h]h struct gpiod_lookup_table *table}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj9ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj5ubj:)}(hhh]h)}(h table of consumers to unregisterh]h table of consumers to unregister}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjQubah}(h]h ]h"]h$]h&]uh1j9hj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0#fwnode_gpiod_get_index (C function)c.fwnode_gpiod_get_indexhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hstruct gpio_desc * fwnode_gpiod_get_index (struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h]j@)}(hstruct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhM ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jfwnode_gpiod_get_indexsbc.fwnode_gpiod_get_indexasbuh1hhjhhhjhM ubjX)}(h h]h }(hjըhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhM ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM ubji)}(hfwnode_gpiod_get_indexh]jo)}(hjҨh]hfwnode_gpiod_get_index}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhM ubj)}(hh(struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h](j)}(hstruct fwnode_handle *fwnodeh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubh)}(hhh]jo)}(h fwnode_handleh]h fwnode_handle}(hj-hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]jШc.fwnode_gpiod_get_indexasbuh1hhj ubjX)}(h h]h }(hjKhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjo)}(hfwnodeh]hfwnode}(hjfhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj{ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj{ubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubjo)}(hcon_idh]hcon_id}(hjéhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj{ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hjܩhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjةubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjةubjo)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjةubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hj/hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]jШc.fwnode_gpiod_get_indexasbuh1hhj ubjX)}(h h]h }(hjMhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubjo)}(hflagsh]hflags}(hj[hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hconst char *labelh](jF)}(hjh]hconst}(hjthhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjpubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjpubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjpubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubjo)}(hlabelh]hlabel}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjpubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhM hjhhubj)}(hhh]h)}(h obtain a GPIO from firmware nodeh]h obtain a GPIO from firmware node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjߪhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct fwnode_handle *fwnode`` handle of the firmware node ``const char *con_id`` function within the GPIO consumer ``int index`` index of the GPIO to obtain for the consumer ``enum gpiod_flags flags`` GPIO initialization flags ``const char *label`` label to attach to the requested GPIO **Description** This function can be used for drivers that get their configuration from opaque firmware. The function properly finds the corresponding GPIO using whatever is the underlying firmware interface and then makes sure that the GPIO descriptor is requested before it is returned to the caller. In case of error an ERR_PTR() is returned. **Return** On successful request the GPIO pin is configured in accordance with provided **flags**.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh](j)}(h=``struct fwnode_handle *fwnode`` handle of the firmware node h](j)}(h ``struct fwnode_handle *fwnode``h]j$)}(hj#h]hstruct fwnode_handle *fwnode}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj!ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjubj:)}(hhh]h)}(hhandle of the firmware nodeh]hhandle of the firmware node}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hM hj9ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj8hM hjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hj\h]hconst char *con_id}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjZubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjVubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM hjrubah}(h]h ]h"]h$]h&]uh1j9hjVubeh}(h]h ]h"]h$]h&]uh1jhjqhM hjubj)}(h;``int index`` index of the GPIO to obtain for the consumer h](j)}(h ``int index``h]j$)}(hjh]h int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM hjubj:)}(hhh]h)}(h,index of the GPIO to obtain for the consumerh]h,index of the GPIO to obtain for the consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h5``enum gpiod_flags flags`` GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjΫh]henum gpiod_flags flags}(hjЫhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj̫ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjȫubj:)}(hhh]h)}(hGPIO initialization flagsh]hGPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjȫubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h<``const char *label`` label to attach to the requested GPIO h](j)}(h``const char *label``h]j$)}(hjh]hconst char *label}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h%label to attach to the requested GPIOh]h%label to attach to the requested GPIO}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjBh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hXThis function can be used for drivers that get their configuration from opaque firmware.h]hXThis function can be used for drivers that get their configuration from opaque firmware.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hThe function properly finds the corresponding GPIO using whatever is the underlying firmware interface and then makes sure that the GPIO descriptor is requested before it is returned to the caller.h]hThe function properly finds the corresponding GPIO using whatever is the underlying firmware interface and then makes sure that the GPIO descriptor is requested before it is returned to the caller.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h*In case of error an ERR_PTR() is returned.h]h*In case of error an ERR_PTR() is returned.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hWOn successful request the GPIO pin is configured in accordance with provided **flags**.h](hMOn successful request the GPIO pin is configured in accordance with provided }(hjhhhNhNubj)}(h **flags**h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_count (C function) c.gpiod_counthNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h8int gpiod_count (struct device *dev, const char *con_id)h]j@)}(h7int gpiod_count(struct device *dev, const char *con_id)h](j)}(hinth]hint}(hjެhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjڬhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM)ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjڬhhhjhM)ubji)}(h gpiod_counth]jo)}(h gpiod_counth]h gpiod_count}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjڬhhhjhM)ubj)}(h((struct device *dev, const char *con_id)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj(hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hj9hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]j)}jjsb c.gpiod_countasbuh1hhjubjX)}(h h]h }(hjYhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjthhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjĭhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hjѭhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjڬhhhjhM)ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj֬hhhjhM)ubah}(h]jѬah ](jjeh"]h$]h&]jj)jhuh1j9hjhM)hjӬhhubj)}(hhh]h)}(h>return the number of GPIOs associated with a device / functionh]h>return the number of GPIOs associated with a device / function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM)hjhhubah}(h]h ]h"]h$]h&]uh1jhjӬhhhjhM)ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer **Return** The number of GPIOs associated with a device / function or -ENOENT if no GPIO has been assigned to the requested function.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM-hjubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hj<h]hstruct device *dev}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj:ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM*hj6ubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhM*hjRubah}(h]h ]h"]h$]h&]uh1j9hj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhM*hj3ubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjuh]hconst char *con_id}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjsubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM+hjoubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM+hjubah}(h]h ]h"]h$]h&]uh1j9hjoubeh}(h]h ]h"]h$]h&]uh1jhjhM+hj3ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM-hjubh)}(hzThe number of GPIOs associated with a device / function or -ENOENT if no GPIO has been assigned to the requested function.h]hzThe number of GPIOs associated with a device / function or -ENOENT if no GPIO has been assigned to the requested function.}(hjƮhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM-hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_get (C function) c.gpiod_gethNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h]struct gpio_desc * gpiod_get (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(h[struct gpio_desc *gpiod_get(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMEubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMEubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j gpiod_getsb c.gpiod_getasbuh1hhjhhhjhMEubjX)}(h h]h }(hj5hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMEubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMEubji)}(h gpiod_geth]jo)}(hj2h]h gpiod_get}(hjThhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjPubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMEubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjohhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjkubjX)}(h h]h }(hj|hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j0 c.gpiod_getasbuh1hhjkubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubjo)}(hdevh]hdev}(hjƯhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjkubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hj߯hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjۯubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjۯubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۯubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjۯubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۯubjo)}(hcon_idh]hcon_id}(hj#hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjۯubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hj<hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj8ubjX)}(h h]h }(hjIhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj8ubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjZhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j0 c.gpiod_getasbuh1hhj8ubjX)}(h h]h }(hjxhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj8ubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMEubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMEubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMEhjhhubj)}(hhh]h)}(h'obtain a GPIO for a given GPIO functionh]h'obtain a GPIO for a given GPIO function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMEhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMEubeh}(h]h ](jfunctioneh"]h$]h&]jjjjȰjjȰjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Return** The GPIO descriptor corresponding to the function **con_id** of device dev, -ENOENT if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjҰh]h Parameters}(hj԰hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjаubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMIhj̰ubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMFhjubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMFhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMFhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hj*h]hconst char *con_id}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj(ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMGhj$ubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMGhj@ubah}(h]h ]h"]h$]h&]uh1j9hj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hMGhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjch]henum gpiod_flags flags}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjaubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMHhj]ubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMHhjyubah}(h]h ]h"]h$]h&]uh1j9hj]ubeh}(h]h ]h"]h$]h&]uh1jhjxhMHhjubeh}(h]h ]h"]h$]h&]uh1jhj̰ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMJhj̰ubh)}(hThe GPIO descriptor corresponding to the function **con_id** of device dev, -ENOENT if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h2The GPIO descriptor corresponding to the function }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh of device dev, -ENOENT if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMJhj̰ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_get_optional (C function)c.gpiod_get_optionalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hfstruct gpio_desc * gpiod_get_optional (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(hdstruct gpio_desc *gpiod_get_optional(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMWubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMWubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jgpiod_get_optionalsbc.gpiod_get_optionalasbuh1hhjhhhjhMWubjX)}(h h]h }(hj5hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMWubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMWubji)}(hgpiod_get_optionalh]jo)}(hj2h]hgpiod_get_optional}(hjThhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjPubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMWubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjohhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjkubjX)}(h h]h }(hj|hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j0c.gpiod_get_optionalasbuh1hhjkubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjkubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubjo)}(hdevh]hdev}(hjƲhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjkubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hj߲hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj۲ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj۲ubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۲ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj۲ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۲ubjo)}(hcon_idh]hcon_id}(hj#hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj۲ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hj<hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj8ubjX)}(h h]h }(hjIhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj8ubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjZhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j0c.gpiod_get_optionalasbuh1hhj8ubjX)}(h h]h }(hjxhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj8ubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj8ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjgubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMWubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMWubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMWhjhhubj)}(hhh]h)}(h1obtain an optional GPIO for a given GPIO functionh]h1obtain an optional GPIO for a given GPIO function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMWhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMWubeh}(h]h ](jfunctioneh"]h$]h&]jjjjȳjjȳjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** This is equivalent to gpiod_get(), except that when no GPIO was assigned to the requested function it will return NULL. This is convenient for drivers that need to handle optional GPIOs. **Return** The GPIO descriptor corresponding to the function **con_id** of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjҳh]h Parameters}(hjԳhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjгubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM[hj̳ubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMXhjubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMXhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hj*h]hconst char *con_id}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj(ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMYhj$ubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMYhj@ubah}(h]h ]h"]h$]h&]uh1j9hj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hMYhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjch]henum gpiod_flags flags}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjaubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMZhj]ubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMZhjyubah}(h]h ]h"]h$]h&]uh1j9hj]ubeh}(h]h ]h"]h$]h&]uh1jhjxhMZhjubeh}(h]h ]h"]h$]h&]uh1jhj̳ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM\hj̳ubh)}(hThis is equivalent to gpiod_get(), except that when no GPIO was assigned to the requested function it will return NULL. This is convenient for drivers that need to handle optional GPIOs.h]hThis is equivalent to gpiod_get(), except that when no GPIO was assigned to the requested function it will return NULL. This is convenient for drivers that need to handle optional GPIOs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM[hj̳ubh)}(h **Return**h]j)}(hjŴh]hReturn}(hjǴhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjôubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM_hj̳ubh)}(hThe GPIO descriptor corresponding to the function **con_id** of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h2The GPIO descriptor corresponding to the function }(hj۴hhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj۴ubh of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hj۴hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM`hj̳ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_get_index (C function)c.gpiod_get_indexhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hustruct gpio_desc * gpiod_get_index (struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h]j@)}(hsstruct gpio_desc *gpiod_get_index(struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj*hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhj)hMubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj;hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jgpiod_get_indexsbc.gpiod_get_indexasbuh1hhjhhhj)hMubjX)}(h h]h }(hj\hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhj)hMubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj)hMubji)}(hgpiod_get_indexh]jo)}(hjYh]hgpiod_get_index}(hj{hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjwubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhj)hMubj)}(hR(struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jWc.gpiod_get_indexasbuh1hhjubjX)}(h h]h }(hjҵhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hj/hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hjJhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hunsigned int idxh](j)}(hunsignedh]hunsigned}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjX)}(h h]h }(hjqhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj_ubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj_ubjo)}(hidxh]hidx}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjҶhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj϶ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjԶmodnameN classnameNjj)}j]jWc.gpiod_get_indexasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhj)hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj)hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hj)hMhjhhubj)}(hhh]h)}(h.obtain a GPIO from a multi-index GPIO functionh]h.obtain a GPIO from a multi-index GPIO function}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj%hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj)hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1j4hhhjhNhNubj)}(hXn**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer ``unsigned int idx`` index of the GPIO to obtain in the consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** This variant of gpiod_get() allows to access GPIOs other than the first defined one for functions that define several GPIOs. **Return** A valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the requested function and/or index, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjJh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjDubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hjih]hstruct device *dev}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjgubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjcubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hMhjubah}(h]h ]h"]h$]h&]uh1j9hjcubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj`ubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjh]hconst char *con_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj`ubj)}(hA``unsigned int idx`` index of the GPIO to obtain in the consumer h](j)}(h``unsigned int idx``h]j$)}(hj۷h]hunsigned int idx}(hjݷhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjٷubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjշubj:)}(hhh]h)}(h+index of the GPIO to obtain in the consumerh]h+index of the GPIO to obtain in the consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjշubeh}(h]h ]h"]h$]h&]uh1jhjhMhj`ubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjh]henum gpiod_flags flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj*ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj`ubeh}(h]h ]h"]h$]h&]uh1jhjDubh)}(h**Description**h]j)}(hjOh]h Description}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjDubh)}(h|This variant of gpiod_get() allows to access GPIOs other than the first defined one for functions that define several GPIOs.h]h|This variant of gpiod_get() allows to access GPIOs other than the first defined one for functions that define several GPIOs.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjDubh)}(h **Return**h]j)}(hjvh]hReturn}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjDubh)}(hA valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the requested function and/or index, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h]hA valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the requested function and/or index, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0%gpiod_get_index_optional (C function)c.gpiod_get_index_optionalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hstruct gpio_desc * gpiod_get_index_optional (struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h]j@)}(h~struct gpio_desc *gpiod_get_index_optional(struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjɸhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjȸhMubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjڸhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj׸ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjܸmodnameN classnameNjj)}j]j)}jgpiod_get_index_optionalsbc.gpiod_get_index_optionalasbuh1hhjhhhjȸhMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjȸhMubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjȸhMubji)}(hgpiod_get_index_optionalh]jo)}(hjh]hgpiod_get_index_optional}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjȸhMubj)}(hT(struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hj5hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj1ubjX)}(h h]h }(hjBhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj1ubh)}(hhh]jo)}(hdeviceh]hdevice}(hjShhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]jc.gpiod_get_index_optionalasbuh1hhj1ubjX)}(h h]h }(hjqhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj1ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj1ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjιhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjܹhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubj)}(hunsigned int indexh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hj,hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hindexh]hindex}(hj:hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjShhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjOubjX)}(h h]h }(hj`hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjqhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]jc.gpiod_get_index_optionalasbuh1hhjOubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj-ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjȸhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjȸhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjȸhMhjhhubj)}(hhh]h)}(h8obtain an optional GPIO from a multi-index GPIO functionh]h8obtain an optional GPIO from a multi-index GPIO function}(hjǺhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjĺhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjȸhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjߺjjߺjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer ``unsigned int index`` index of the GPIO to obtain in the consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** This is equivalent to gpiod_get_index(), except that when no GPIO with the specified index was assigned to the requested function it will return NULL. This is convenient for drivers that need to handle optional GPIOs. **Return** A valid GPIO descriptor, NULL if no GPIO has been assigned to the requested function and/or index, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjAh]hconst char *con_id}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj?ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj;ubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjWubah}(h]h ]h"]h$]h&]uh1j9hj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhMhjubj)}(hC``unsigned int index`` index of the GPIO to obtain in the consumer h](j)}(h``unsigned int index``h]j$)}(hjzh]hunsigned int index}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjxubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjtubj:)}(hhh]h)}(h+index of the GPIO to obtain in the consumerh]h+index of the GPIO to obtain in the consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjtubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjh]henum gpiod_flags flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj̻hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjȻhMhjɻubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjȻhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hThis is equivalent to gpiod_get_index(), except that when no GPIO with the specified index was assigned to the requested function it will return NULL. This is convenient for drivers that need to handle optional GPIOs.h]hThis is equivalent to gpiod_get_index(), except that when no GPIO with the specified index was assigned to the requested function it will return NULL. This is convenient for drivers that need to handle optional GPIOs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hA valid GPIO descriptor, NULL if no GPIO has been assigned to the requested function and/or index, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h]hA valid GPIO descriptor, NULL if no GPIO has been assigned to the requested function and/or index, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_get_array (C function)c.gpiod_get_arrayhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hdstruct gpio_descs * gpiod_get_array (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(hbstruct gpio_descs *gpiod_get_array(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjZhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjVhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM/ubjX)}(h h]h }(hjhhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjVhhhjghM/ubh)}(hhh]jo)}(h gpio_descsh]h gpio_descs}(hjyhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj{modnameN classnameNjj)}j]j)}jgpiod_get_arraysbc.gpiod_get_arrayasbuh1hhjVhhhjghM/ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjVhhhjghM/ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhjghM/ubji)}(hgpiod_get_arrayh]jo)}(hjh]hgpiod_get_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjVhhhjghM/ubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjԼhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjмubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjмubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.gpiod_get_arrayasbuh1hhjмubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjмubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjмubjo)}(hdevh]hdev}(hj+hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjмubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj̼ubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjDhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj@ubjX)}(h h]h }(hjQhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj@ubj)}(hcharh]hchar}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubjX)}(h h]h }(hjmhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj@ubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj̼ubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.gpiod_get_arrayasbuh1hhjubjX)}(h h]h }(hjݽhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj̼ubeh}(h]h ]h"]h$]h&]jjuh1jhjVhhhjghM/ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjRhhhjghM/ubah}(h]jMah ](jjeh"]h$]h&]jj)jhuh1j9hjghM/hjOhhubj)}(hhh]h)}(h6obtain multiple GPIOs from a multi-index GPIO functionh]h6obtain multiple GPIOs from a multi-index GPIO function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM/hjhhubah}(h]h ]h"]h$]h&]uh1jhjOhhhjghM/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj-jj-jjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** This function acquires all the GPIOs defined under a given function. **Return** The GPIO descriptors corresponding to the function **con_id** of device dev, -ENOENT if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h)}(h**Parameters**h]j)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM3hj1ubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hjVh]hstruct device *dev}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjTubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM0hjPubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhM0hjlubah}(h]h ]h"]h$]h&]uh1j9hjPubeh}(h]h ]h"]h$]h&]uh1jhjkhM0hjMubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjh]hconst char *con_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM1hjubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM1hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM1hjMubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjȾh]henum gpiod_flags flags}(hjʾhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjƾubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM2hj¾ubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjݾhM2hj޾ubah}(h]h ]h"]h$]h&]uh1j9hj¾ubeh}(h]h ]h"]h$]h&]uh1jhjݾhM2hjMubeh}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM4hj1ubh)}(hDThis function acquires all the GPIOs defined under a given function.h]hDThis function acquires all the GPIOs defined under a given function.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM3hj1ubh)}(h **Return**h]j)}(hj*h]hReturn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM5hj1ubh)}(hThe GPIO descriptors corresponding to the function **con_id** of device dev, -ENOENT if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h3The GPIO descriptors corresponding to the function }(hj@hhhNhNubj)}(h **con_id**h]hcon_id}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubh of device dev, -ENOENT if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chM6hj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0%gpiod_get_array_optional (C function)c.gpiod_get_array_optionalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hmstruct gpio_descs * gpiod_get_array_optional (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(hkstruct gpio_descs *gpiod_get_array_optional(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj}hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj}hhhjhMubh)}(hhh]jo)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jgpiod_get_array_optionalsbc.gpiod_get_array_optionalasbuh1hhj}hhhjhMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj}hhhjhMubj)}(hjh]h*}(hjϿhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}hhhjhMubji)}(hgpiod_get_array_optionalh]jo)}(hjh]hgpiod_get_array_optional}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjܿubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj}hhhjhMubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.gpiod_get_array_optionalasbuh1hhjubjX)}(h h]h }(hj7hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjRhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjkhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjgubjX)}(h h]h }(hjxhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjgubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjgubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjgubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.gpiod_get_array_optionalasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhj}hhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjyhhhjhMubah}(h]jtah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjvhhubj)}(hhh]h)}(h6obtain multiple GPIOs from a multi-index GPIO functionh]h6obtain multiple GPIOs from a multi-index GPIO function}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj9hhubah}(h]h ]h"]h$]h&]uh1jhjvhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1j4hhhjhNhNubj)}(hXP**Parameters** ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** This is equivalent to gpiod_get_array(), except that when no GPIO was assigned to the requested function it will return NULL. **Return** The GPIO descriptors corresponding to the function **con_id** of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjXubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j$)}(hj}h]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj{ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjwubj:)}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjwubeh}(h]h ]h"]h$]h&]uh1jhjhMhjtubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjh]hconst char *con_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjtubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjh]henum gpiod_flags flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjtubeh}(h]h ]h"]h$]h&]uh1jhjXubh)}(h**Description**h]j)}(hj*h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjXubh)}(h}This is equivalent to gpiod_get_array(), except that when no GPIO was assigned to the requested function it will return NULL.h]h}This is equivalent to gpiod_get_array(), except that when no GPIO was assigned to the requested function it will return NULL.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjXubh)}(h **Return**h]j)}(hjQh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjXubh)}(hThe GPIO descriptors corresponding to the function **con_id** of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h3The GPIO descriptors corresponding to the function }(hjghhhNhNubj)}(h **con_id**h]hcon_id}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubh of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjXubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_put (C function) c.gpiod_puthNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h'void gpiod_put (struct gpio_desc *desc)h]j@)}(h&void gpiod_put(struct gpio_desc *desc)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMubji)}(h gpiod_puth]jo)}(h gpiod_puth]h gpiod_put}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.gpiod_putasbuh1hhjubjX)}(h h]h }(hj#hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdesch]hdesc}(hj>hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjhhubj)}(hhh]h)}(hdispose of a GPIO descriptorh]hdispose of a GPIO descriptor}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjehhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(h**Parameters** ``struct gpio_desc *desc`` GPIO descriptor to dispose of **Description** No descriptor can be used after gpiod_put() has been called on it.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh]j)}(h9``struct gpio_desc *desc`` GPIO descriptor to dispose of h](j)}(h``struct gpio_desc *desc``h]j$)}(hjh]hstruct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj:)}(hhh]h)}(hGPIO descriptor to dispose ofh]hGPIO descriptor to dispose of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubh)}(hBNo descriptor can be used after gpiod_put() has been called on it.h]hBNo descriptor can be used after gpiod_put() has been called on it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_put_array (C function)c.gpiod_put_arrayhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h/void gpiod_put_array (struct gpio_descs *descs)h]j@)}(h.void gpiod_put_array(struct gpio_descs *descs)h](j)}(hvoidh]hvoid}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMubjX)}(h h]h }(hj8hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj%hhhj7hMubji)}(hgpiod_put_arrayh]jo)}(hgpiod_put_arrayh]hgpiod_put_array}(hjJhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjFubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj%hhhj7hMubj)}(h(struct gpio_descs *descs)h]j)}(hstruct gpio_descs *descsh](jF)}(hjIh]hstruct}(hjfhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjbubjX)}(h h]h }(hjshhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjbubh)}(hhh]jo)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjLsbc.gpiod_put_arrayasbuh1hhjbubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjbubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubjo)}(hdescsh]hdescs}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjbubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj^ubah}(h]h ]h"]h$]h&]jjuh1jhj%hhhj7hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj!hhhj7hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hj7hMhjhhubj)}(hhh]h)}(h$dispose of multiple GPIO descriptorsh]h$dispose of multiple GPIO descriptors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj7hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hc**Parameters** ``struct gpio_descs *descs`` struct gpio_descs containing an array of descriptorsh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhjubj)}(hhh]j)}(hQ``struct gpio_descs *descs`` struct gpio_descs containing an array of descriptorsh](j)}(h``struct gpio_descs *descs``h]j$)}(hj*h]hstruct gpio_descs *descs}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj(ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj$ubj:)}(hhh]h)}(h4struct gpio_descs containing an array of descriptorsh]h4struct gpio_descs containing an array of descriptors}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:26: ./drivers/gpio/gpiolib.chMhj@ubah}(h]h ]h"]h$]h&]uh1j9hj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]coreah ]h"]coreah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h ACPI supporth]h ACPI support}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshhhhhKubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0&acpi_gpio_get_io_resource (C function)c.acpi_gpio_get_io_resourcehNtauh1j#hjshhhNhNubj5)}(hhh](j:)}(h^bool acpi_gpio_get_io_resource (struct acpi_resource *ares, struct acpi_resource_gpio **agpio)h]j@)}(h]bool acpi_gpio_get_io_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio)h](j)}(hjT,h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubji)}(hacpi_gpio_get_io_resourceh]jo)}(hacpi_gpio_get_io_resourceh]hacpi_gpio_get_io_resource}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhKubj)}(h?(struct acpi_resource *ares, struct acpi_resource_gpio **agpio)h](j)}(hstruct acpi_resource *aresh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h acpi_resourceh]h acpi_resource}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.acpi_gpio_get_io_resourceasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(haresh]hares}(hj2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h!struct acpi_resource_gpio **agpioh](jF)}(hjIh]hstruct}(hjKhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjGubjX)}(h h]h }(hjXhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjGubh)}(hhh]jo)}(hacpi_resource_gpioh]hacpi_resource_gpio}(hjihhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjfubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjkmodnameN classnameNjj)}j]jc.acpi_gpio_get_io_resourceasbuh1hhjGubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubjo)}(hagpioh]hagpio}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjGubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(hVFetch details of an ACPI resource if it is a GPIO I/O resource or return False if not.h]hVFetch details of an ACPI resource if it is a GPIO I/O resource or return False if not.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjshNhNubj)}(hX)**Parameters** ``struct acpi_resource *ares`` Pointer to the ACPI resource to fetch ``struct acpi_resource_gpio **agpio`` Pointer to a :c:type:`struct acpi_resource_gpio ` to store the output pointer **Return** ``true`` if GpioIo resource is found, ``false`` otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKhjubj)}(hhh](j)}(hE``struct acpi_resource *ares`` Pointer to the ACPI resource to fetch h](j)}(h``struct acpi_resource *ares``h]j$)}(hjh]hstruct acpi_resource *ares}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKhjubj:)}(hhh]h)}(h%Pointer to the ACPI resource to fetchh]h%Pointer to the ACPI resource to fetch}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKhj0ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj/hKhjubj)}(h``struct acpi_resource_gpio **agpio`` Pointer to a :c:type:`struct acpi_resource_gpio ` to store the output pointer h](j)}(h%``struct acpi_resource_gpio **agpio``h]j$)}(hjSh]h!struct acpi_resource_gpio **agpio}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjQubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKhjMubj:)}(hhh]h)}(haPointer to a :c:type:`struct acpi_resource_gpio ` to store the output pointerh](h Pointer to a }(hjlhhhNhNubh)}(h8:c:type:`struct acpi_resource_gpio `h]j$)}(hjvh]hstruct acpi_resource_gpio}(hjxhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j#hjtubah}(h]h ]h"]h$]h&]refdoch refdomainjreftypetype refexplicitrefwarnjjjacpi_resource_gpiouh1hhjhhKhjlubh to store the output pointer}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhKhjiubah}(h]h ]h"]h$]h&]uh1j9hjMubeh}(h]h ]h"]h$]h&]uh1jhjhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKhjubh)}(h:``true`` if GpioIo resource is found, ``false`` otherwise.h](j$)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh if GpioIo resource is found, }(hjhhhNhNubj$)}(h ``false``h]hfalse}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjshhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0-acpi_gpiochip_request_interrupts (C function)"c.acpi_gpiochip_request_interruptshNtauh1j#hjshhhNhNubj5)}(hhh](j:)}(h>void acpi_gpiochip_request_interrupts (struct gpio_chip *chip)h]j@)}(h=void acpi_gpiochip_request_interrupts(struct gpio_chip *chip)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMubjX)}(h h]h }(hj%hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhj$hMubji)}(h acpi_gpiochip_request_interruptsh]jo)}(h acpi_gpiochip_request_interruptsh]h acpi_gpiochip_request_interrupts}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj3ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhj$hMubj)}(h(struct gpio_chip *chip)h]j)}(hstruct gpio_chip *chiph](jF)}(hjIh]hstruct}(hjShhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjOubjX)}(h h]h }(hj`hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjqhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]j)}jj9sb"c.acpi_gpiochip_request_interruptsasbuh1hhjOubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjo)}(hchiph]hchip}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjKubah}(h]h ]h"]h$]h&]jjuh1jhjhhhj$hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj$hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j9hj$hMhj hhubj)}(hhh]h)}(h&Register isr for gpio chip ACPI eventsh]h&Register isr for gpio chip ACPI events}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj$hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjshNhNubj)}(hX**Parameters** ``struct gpio_chip *chip`` GPIO chip **Description** ACPI5 platforms can use GPIO signaled ACPI events. These GPIO interrupts are handled by ACPI event methods which need to be called from the GPIO chip's interrupt handler. acpi_gpiochip_request_interrupts() finds out which GPIO pins have ACPI event methods and assigns interrupt handlers that calls the ACPI event methods for those pins.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj)}(hhh]j)}(h%``struct gpio_chip *chip`` GPIO chip h](j)}(h``struct gpio_chip *chip``h]j$)}(hjh]hstruct gpio_chip *chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj:)}(hhh]h)}(h GPIO chiph]h GPIO chip}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMhj-ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj,hMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjRh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(hXPACPI5 platforms can use GPIO signaled ACPI events. These GPIO interrupts are handled by ACPI event methods which need to be called from the GPIO chip's interrupt handler. acpi_gpiochip_request_interrupts() finds out which GPIO pins have ACPI event methods and assigns interrupt handlers that calls the ACPI event methods for those pins.h]hXRACPI5 platforms can use GPIO signaled ACPI events. These GPIO interrupts are handled by ACPI event methods which need to be called from the GPIO chip’s interrupt handler. acpi_gpiochip_request_interrupts() finds out which GPIO pins have ACPI event methods and assigns interrupt handlers that calls the ACPI event methods for those pins.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjshhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0*acpi_gpiochip_free_interrupts (C function)c.acpi_gpiochip_free_interruptshNtauh1j#hjshhhNhNubj5)}(hhh](j:)}(h;void acpi_gpiochip_free_interrupts (struct gpio_chip *chip)h]j@)}(h:void acpi_gpiochip_free_interrupts(struct gpio_chip *chip)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMubji)}(hacpi_gpiochip_free_interruptsh]jo)}(hacpi_gpiochip_free_interruptsh]hacpi_gpiochip_free_interrupts}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMubj)}(h(struct gpio_chip *chip)h]j)}(hstruct gpio_chip *chiph](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.acpi_gpiochip_free_interruptsasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hchiph]hchip}(hj-hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjhhubj)}(hhh]h)}(h Free GPIO ACPI event interrupts.h]h Free GPIO ACPI event interrupts.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjThhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjojjojjjuh1j4hhhjshNhNubj)}(h**Parameters** ``struct gpio_chip *chip`` GPIO chip **Description** Free interrupts associated with GPIO ACPI event method for the given GPIO chip.h](h)}(h**Parameters**h]j)}(hjyh]h Parameters}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjsubj)}(hhh]j)}(h%``struct gpio_chip *chip`` GPIO chip h](j)}(h``struct gpio_chip *chip``h]j$)}(hjh]hstruct gpio_chip *chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj:)}(hhh]h)}(h GPIO chiph]h GPIO chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjsubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjsubh)}(hOFree interrupts associated with GPIO ACPI event method for the given GPIO chip.h]hOFree interrupts associated with GPIO ACPI event method for the given GPIO chip.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjshhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0*acpi_dev_gpio_irq_wake_get_by (C function)c.acpi_dev_gpio_irq_wake_get_byhNtauh1j#hjshhhNhNubj5)}(hhh](j:)}(hoint acpi_dev_gpio_irq_wake_get_by (struct acpi_device *adev, const char *con_id, int index, bool *wake_capable)h]j@)}(hnint acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *con_id, int index, bool *wake_capable)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMubjX)}(h h]h }(hj'hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhj&hMubji)}(hacpi_dev_gpio_irq_wake_get_byh]jo)}(hacpi_dev_gpio_irq_wake_get_byh]hacpi_dev_gpio_irq_wake_get_by}(hj9hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhj&hMubj)}(hM(struct acpi_device *adev, const char *con_id, int index, bool *wake_capable)h](j)}(hstruct acpi_device *adevh](jF)}(hjIh]hstruct}(hjUhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjQubjX)}(h h]h }(hjbhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjQubh)}(hhh]jo)}(h acpi_deviceh]h acpi_device}(hjshhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]j)}jj;sbc.acpi_dev_gpio_irq_wake_get_byasbuh1hhjQubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjo)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjQubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hj hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubj)}(h int indexh](j)}(hinth]hint}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjX)}(h h]h }(hj2hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubjo)}(hindexh]hindex}(hj@hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubj)}(hbool *wake_capableh](j)}(hjT,h]hbool}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjX)}(h h]h }(hjfhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjUubj)}(hjh]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjo)}(h wake_capableh]h wake_capable}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjMubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhj&hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhj&hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j9hj&hMhj hhubj)}(hhh]h)}(h1Find GpioInt and translate it to Linux IRQ numberh]h1Find GpioInt and translate it to Linux IRQ number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj&hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjshNhNubj)}(hX**Parameters** ``struct acpi_device *adev`` pointer to a ACPI device to get IRQ from ``const char *con_id`` optional name of GpioInt resource ``int index`` index of GpioInt resource (starting from ``0``) ``bool *wake_capable`` Set to true if the IRQ is wake capable **Description** If the device has one or more GpioInt resources, this function can be used to translate from the GPIO offset in the resource to the Linux IRQ number. The function is idempotent, though each time it runs it will configure GPIO pin direction according to the flags in GpioInt resource. The function takes optional **con_id** parameter. If the resource has a **con_id** in a property, then only those will be taken into account. The GPIO is considered wake capable if the GpioInt resource specifies SharedAndWake or ExclusiveAndWake. **Return** Linux IRQ number (> 0) on success, negative errno on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj)}(hhh](j)}(hF``struct acpi_device *adev`` pointer to a ACPI device to get IRQ from h](j)}(h``struct acpi_device *adev``h]j$)}(hjh]hstruct acpi_device *adev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj:)}(hhh]h)}(h(pointer to a ACPI device to get IRQ fromh]h(pointer to a ACPI device to get IRQ from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h9``const char *con_id`` optional name of GpioInt resource h](j)}(h``const char *con_id``h]j$)}(hj%h]hconst char *con_id}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj#ubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj:)}(hhh]h)}(h!optional name of GpioInt resourceh]h!optional name of GpioInt resource}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj:hMhjubj)}(h>``int index`` index of GpioInt resource (starting from ``0``) h](j)}(h ``int index``h]j$)}(hj^h]h int index}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj\ubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjXubj:)}(hhh]h)}(h/index of GpioInt resource (starting from ``0``)h](h)index of GpioInt resource (starting from }(hjwhhhNhNubj$)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjwubh)}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjshMhjtubah}(h]h ]h"]h$]h&]uh1j9hjXubeh}(h]h ]h"]h$]h&]uh1jhjshMhjubj)}(h>``bool *wake_capable`` Set to true if the IRQ is wake capable h](j)}(h``bool *wake_capable``h]j$)}(hjh]hbool *wake_capable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubj:)}(hhh]h)}(h&Set to true if the IRQ is wake capableh]h&Set to true if the IRQ is wake capable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(hIf the device has one or more GpioInt resources, this function can be used to translate from the GPIO offset in the resource to the Linux IRQ number.h]hIf the device has one or more GpioInt resources, this function can be used to translate from the GPIO offset in the resource to the Linux IRQ number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(hThe function is idempotent, though each time it runs it will configure GPIO pin direction according to the flags in GpioInt resource.h]hThe function is idempotent, though each time it runs it will configure GPIO pin direction according to the flags in GpioInt resource.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(hThe function takes optional **con_id** parameter. If the resource has a **con_id** in a property, then only those will be taken into account.h](hThe function takes optional }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh" parameter. If the resource has a }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh; in a property, then only those will be taken into account.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(hhThe GPIO is considered wake capable if the GpioInt resource specifies SharedAndWake or ExclusiveAndWake.h]hhThe GPIO is considered wake capable if the GpioInt resource specifies SharedAndWake or ExclusiveAndWake.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(h **Return**h]j)}(hj\h]hReturn}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubh)}(h=Linux IRQ number (> 0) on success, negative errno on failure.h]h=Linux IRQ number (> 0) on success, negative errno on failure.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:32: ./drivers/gpio/gpiolib-acpi-core.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjshhhNhNubeh}(h] acpi-supportah ]h"] acpi supportah$]h&]uh1hhhhhhhhKubh)}(hhh]h)}(hDevice tree supporth]hDevice tree support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK$ubah}(h]device-tree-supportah ]h"]device tree supportah$]h&]uh1hhhhhhhhK$ubh)}(hhh](h)}(hDevice-managed APIh]hDevice-managed API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK*ubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0devm_gpiod_get (C function)c.devm_gpiod_gethNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hbstruct gpio_desc * devm_gpiod_get (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(h`struct gpio_desc *devm_gpiod_get(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK!ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhK!ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdevm_gpiod_getsbc.devm_gpiod_getasbuh1hhjhhhjhK!ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhK!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK!ubji)}(hdevm_gpiod_geth]jo)}(hjh]hdevm_gpiod_get}(hj2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhK!ubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjMhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjIubjX)}(h h]h }(hjZhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjIubh)}(hhh]jo)}(hdeviceh]hdevice}(hjkhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]jc.devm_gpiod_getasbuh1hhjIubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjIubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjIubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj'hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hj8hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]jc.devm_gpiod_getasbuh1hhjubjX)}(h h]h }(hjVhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hjdhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjEubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhK!ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhK!ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhK!hjhhubj)}(hhh]h)}(hResource-managed gpiod_get()h]hResource-managed gpiod_get()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK!hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK!ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXl**Parameters** ``struct device *dev`` GPIO consumer ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** Managed gpiod_get(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get() for detailed information about behavior and return values. **Return** The GPIO descriptor corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK%hjubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK"hjubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK"hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhK"hjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjh]hconst char *con_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK#hjubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK#hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhK#hjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjAh]henum gpiod_flags flags}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj?ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK$hj;ubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhK$hjWubah}(h]h ]h"]h$]h&]uh1j9hj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhK$hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj|h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK&hjubh)}(hManaged gpiod_get(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get() for detailed information about behavior and return values.h]hManaged gpiod_get(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get() for detailed information about behavior and return values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK%hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK)hjubh)}(hThe GPIO descriptor corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h2The GPIO descriptor corresponding to the function }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh of device dev, }(hjhhhNhNubj$)}(h ``-ENOENT``h]h-ENOENT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK*hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0$devm_gpiod_get_optional (C function)c.devm_gpiod_get_optionalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hkstruct gpio_desc * devm_gpiod_get_optional (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(histruct gpio_desc *devm_gpiod_get_optional(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hj hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK8ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhK8ubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hj+hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j)}jdevm_gpiod_get_optionalsbc.devm_gpiod_get_optionalasbuh1hhjhhhjhK8ubjX)}(h h]h }(hjLhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhK8ubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK8ubji)}(hdevm_gpiod_get_optionalh]jo)}(hjIh]hdevm_gpiod_get_optional}(hjkhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjgubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhK8ubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jGc.devm_gpiod_get_optionalasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj~ubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hj:hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj~ubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjShhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjOubjX)}(h h]h }(hj`hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjqhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]jGc.devm_gpiod_get_optionalasbuh1hhjOubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjOubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj~ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhK8ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhK8ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhK8hjhhubj)}(hhh]h)}(h%Resource-managed gpiod_get_optional()h]h%Resource-managed gpiod_get_optional()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK8hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXw**Parameters** ``struct device *dev`` GPIO consumer ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** Managed gpiod_get_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_optional() for detailed information about behavior and return values. **Return** The GPIO descriptor corresponding to the function **con_id** of device dev, NULL if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjzh]henum gpiod_flags flags}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjxubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK;hjtubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1j9hjtubeh}(h]h ]h"]h$]h&]uh1jhjhK;hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK=hjubh)}(hManaged gpiod_get_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_optional() for detailed information about behavior and return values.h]hManaged gpiod_get_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_optional() for detailed information about behavior and return values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chK``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hj+h]henum gpiod_flags flags}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj)ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKShj%ubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hKShjAubah}(h]h ]h"]h$]h&]uh1j9hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hKShjwubeh}(h]h ]h"]h$]h&]uh1jhj[ubh)}(h**Description**h]j)}(hjfh]h Description}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKUhj[ubh)}(hManaged gpiod_get_index(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_index() for detailed information about behavior and return values.h]hManaged gpiod_get_index(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_index() for detailed information about behavior and return values.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKThj[ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKXhj[ubh)}(hThe GPIO descriptor corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h2The GPIO descriptor corresponding to the function }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh of device dev, }(hjhhhNhNubj$)}(h ``-ENOENT``h]h-ENOENT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKYhj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0(devm_fwnode_gpiod_get_index (C function)c.devm_fwnode_gpiod_get_indexhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hstruct gpio_desc * devm_fwnode_gpiod_get_index (struct device *dev, struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h]j@)}(hstruct gpio_desc *devm_fwnode_gpiod_get_index(struct device *dev, struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdevm_fwnode_gpiod_get_indexsbc.devm_fwnode_gpiod_get_indexasbuh1hhjhhhjhKubjX)}(h h]h }(hj6hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubji)}(hdevm_fwnode_gpiod_get_indexh]jo)}(hj3h]hdevm_fwnode_gpiod_get_index}(hjUhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjQubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhKubj)}(h|(struct device *dev, struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjphhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjlubjX)}(h h]h }(hj}hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjlubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j1c.devm_fwnode_gpiod_get_indexasbuh1hhjlubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjlubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjlubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(hstruct fwnode_handle *fwnodeh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h fwnode_handleh]h fwnode_handle}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j1c.devm_fwnode_gpiod_get_indexasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hfwnodeh]hfwnode}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjPhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjLubjX)}(h h]h }(hj]hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjLubj)}(hcharh]hchar}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubjX)}(h h]h }(hjyhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjLubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjLubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j1c.devm_fwnode_gpiod_get_indexasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hj,hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubj)}(hconst char *labelh](jF)}(hjh]hconst}(hjEhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjAubjX)}(h h]h }(hjRhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjAubj)}(hcharh]hchar}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjX)}(h h]h }(hjnhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjAubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubjo)}(hlabelh]hlabel}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjhubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(h'get a GPIO descriptor from a given nodeh]h'get a GPIO descriptor from a given node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer ``struct fwnode_handle *fwnode`` firmware node containing GPIO reference ``const char *con_id`` function within the GPIO consumer ``int index`` index of the GPIO to obtain in the consumer ``enum gpiod_flags flags`` GPIO initialization flags ``const char *label`` label to attach to the requested GPIO **Description** GPIO descriptors returned from this function are automatically disposed on driver detach. **Return** The GPIO descriptor corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubj)}(hI``struct fwnode_handle *fwnode`` firmware node containing GPIO reference h](j)}(h ``struct fwnode_handle *fwnode``h]j$)}(hj-h]hstruct fwnode_handle *fwnode}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj+ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhj'ubj:)}(hhh]h)}(h'firmware node containing GPIO referenceh]h'firmware node containing GPIO reference}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjCubah}(h]h ]h"]h$]h&]uh1j9hj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhKhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjfh]hconst char *con_id}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjdubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhj`ubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hKhj|ubah}(h]h ]h"]h$]h&]uh1j9hj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hKhjubj)}(h:``int index`` index of the GPIO to obtain in the consumer h](j)}(h ``int index``h]j$)}(hjh]h int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h+index of the GPIO to obtain in the consumerh]h+index of the GPIO to obtain in the consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h5``enum gpiod_flags flags`` GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjh]henum gpiod_flags flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(hGPIO initialization flagsh]hGPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h<``const char *label`` label to attach to the requested GPIO h](j)}(h``const char *label``h]j$)}(hjh]hconst char *label}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhj ubj:)}(hhh]h)}(h%label to attach to the requested GPIOh]h%label to attach to the requested GPIO}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKhj'ubah}(h]h ]h"]h$]h&]uh1j9hj ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjLh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(hYGPIO descriptors returned from this function are automatically disposed on driver detach.h]hYGPIO descriptors returned from this function are automatically disposed on driver detach.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(h **Return**h]j)}(hjsh]hReturn}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(hThe GPIO descriptor corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h2The GPIO descriptor corresponding to the function }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh of device dev, }(hjhhhNhNubj$)}(h ``-ENOENT``h]h-ENOENT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0*devm_gpiod_get_index_optional (C function)c.devm_gpiod_get_index_optionalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hstruct gpio_desc * devm_gpiod_get_index_optional (struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h]j@)}(hstruct gpio_desc *devm_gpiod_get_index_optional(struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdevm_gpiod_get_index_optionalsbc.devm_gpiod_get_index_optionalasbuh1hhjhhhjhKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubji)}(hdevm_gpiod_get_index_optionalh]jo)}(hjh]hdevm_gpiod_get_index_optional}(hj;hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj7ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhKubj)}(hT(struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjVhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjRubjX)}(h h]h }(hjchhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjRubh)}(hhh]jo)}(hdeviceh]hdevice}(hjthhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]jc.devm_gpiod_get_index_optionalasbuh1hhjRubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjRubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hj hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubj)}(hunsigned int indexh](j)}(hunsignedh]hunsigned}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hj1hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hinth]hint}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjMhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hindexh]hindex}(hj[hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjthhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjpubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjpubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.devm_gpiod_get_index_optionalasbuh1hhjpubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjpubjo)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjpubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjNubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(h+Resource-managed gpiod_get_index_optional()h]h+Resource-managed gpiod_get_index_optional()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer ``const char *con_id`` function within the GPIO consumer ``unsigned int index`` index of the GPIO to obtain in the consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** Managed gpiod_get_index_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_index_optional() for detailed information about behavior and return values. **Return** The GPIO descriptor corresponding to the function **con_id** of device dev, ``NULL`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hj)h]hstruct device *dev}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj'ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhj#ubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj?ubah}(h]h ]h"]h$]h&]uh1j9hj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hKhj ubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjbh]hconst char *con_id}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj`ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhj\ubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhKhjxubah}(h]h ]h"]h$]h&]uh1j9hj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhKhj ubj)}(hC``unsigned int index`` index of the GPIO to obtain in the consumer h](j)}(h``unsigned int index``h]j$)}(hjh]hunsigned int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h+index of the GPIO to obtain in the consumerh]h+index of the GPIO to obtain in the consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjh]henum gpiod_flags flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(hManaged gpiod_get_index_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_index_optional() for detailed information about behavior and return values.h]hManaged gpiod_get_index_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_index_optional() for detailed information about behavior and return values.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(h **Return**h]j)}(hj6h]hReturn}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(hThe GPIO descriptor corresponding to the function **con_id** of device dev, ``NULL`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.h](h2The GPIO descriptor corresponding to the function }(hjLhhhNhNubj)}(h **con_id**h]hcon_id}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubh of device dev, }(hjLhhhNhNubj$)}(h``NULL``h]hNULL}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjLubh if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIO.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!devm_gpiod_get_array (C function)c.devm_gpiod_get_arrayhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(histruct gpio_descs * devm_gpiod_get_array (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(hgstruct gpio_descs *devm_gpiod_get_array(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubh)}(hhh]jo)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdevm_gpiod_get_arraysbc.devm_gpiod_get_arrayasbuh1hhjhhhjhKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubji)}(hdevm_gpiod_get_arrayh]jo)}(hjh]hdevm_gpiod_get_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhKubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj&hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9modnameN classnameNjj)}j]jc.devm_gpiod_get_arrayasbuh1hhjubjX)}(h h]h }(hjUhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjphhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.devm_gpiod_get_arrayasbuh1hhjubjX)}(h h]h }(hj"hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hj0hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(h"Resource-managed gpiod_get_array()h]h"Resource-managed gpiod_get_array()}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjWhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjrjjrjjjuh1j4hhhjhNhNubj)}(hXz**Parameters** ``struct device *dev`` GPIO consumer ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** Managed gpiod_get_array(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_array() for detailed information about behavior and return values. **Return** The GPIO descriptors corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h)}(h**Parameters**h]j)}(hj|h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjvubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hjh]hconst char *con_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hj h]henum gpiod_flags flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj#ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj"hKhjubeh}(h]h ]h"]h$]h&]uh1jhjvubh)}(h**Description**h]j)}(hjHh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjvubh)}(hManaged gpiod_get_array(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_array() for detailed information about behavior and return values.h]hManaged gpiod_get_array(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_array() for detailed information about behavior and return values.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjvubh)}(h **Return**h]j)}(hjoh]hReturn}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjvubh)}(hThe GPIO descriptors corresponding to the function **con_id** of device dev, ``-ENOENT`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h3The GPIO descriptors corresponding to the function }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh of device dev, }(hjhhhNhNubj$)}(h ``-ENOENT``h]h-ENOENT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0*devm_gpiod_get_array_optional (C function)c.devm_gpiod_get_array_optionalhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hrstruct gpio_descs * devm_gpiod_get_array_optional (struct device *dev, const char *con_id, enum gpiod_flags flags)h]j@)}(hpstruct gpio_descs *devm_gpiod_get_array_optional(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubh)}(hhh]jo)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdevm_gpiod_get_array_optionalsbc.devm_gpiod_get_array_optionalasbuh1hhjhhhjhKubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhKubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubji)}(hdevm_gpiod_get_array_optionalh]jo)}(hjh]hdevm_gpiod_get_array_optional}(hj7hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj3ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhKubj)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjRhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjNubjX)}(h h]h }(hj_hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjNubh)}(hhh]jo)}(hdeviceh]hdevice}(hjphhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNjj)}j]jc.devm_gpiod_get_array_optionalasbuh1hhjNubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjJubj)}(hconst char *con_idh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjJubj)}(henum gpiod_flags flagsh](jF)}(hjYh]henum}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hj,hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpiod_flagsh]h gpiod_flags}(hj=hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]jc.devm_gpiod_get_array_optionalasbuh1hhjubjX)}(h h]h }(hj[hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hflagsh]hflags}(hjihhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjJubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhKhjhhubj)}(hhh]h)}(h+Resource-managed gpiod_get_array_optional()h]h+Resource-managed gpiod_get_array_optional()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer ``const char *con_id`` function within the GPIO consumer ``enum gpiod_flags flags`` optional GPIO initialization flags **Description** Managed gpiod_get_array_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_array_optional() for detailed information about behavior and return values. **Return** The GPIO descriptors corresponding to the function **con_id** of device dev, ``NULL`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j$)}(hj h]hconst char *con_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubj:)}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj#ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj"hKhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j$)}(hjFh]henum gpiod_flags flags}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjDubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhj@ubj:)}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hKhj\ubah}(h]h ]h"]h$]h&]uh1j9hj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(hManaged gpiod_get_array_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_array_optional() for detailed information about behavior and return values.h]hManaged gpiod_get_array_optional(). GPIO descriptors returned from this function are automatically disposed on driver detach. See gpiod_get_array_optional() for detailed information about behavior and return values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubh)}(hThe GPIO descriptors corresponding to the function **con_id** of device dev, ``NULL`` if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.h](h3The GPIO descriptors corresponding to the function }(hjhhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh of device dev, }(hjhhhNhNubj$)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh if no GPIO has been assigned to the requested function, or another IS_ERR() code if an error occurred while trying to acquire the GPIOs.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0devm_gpiod_put (C function)c.devm_gpiod_puthNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h@void devm_gpiod_put (struct device *dev, struct gpio_desc *desc)h]j@)}(h?void devm_gpiod_put(struct device *dev, struct gpio_desc *desc)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMubjX)}(h h]h }(hj hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj hhhjhMubji)}(hdevm_gpiod_puth]jo)}(hdevm_gpiod_puth]hdevm_gpiod_put}(hj2hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj hhhjhMubj)}(h,(struct device *dev, struct gpio_desc *desc)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjNhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjJubjX)}(h h]h }(hj[hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjJubh)}(hhh]jo)}(hdeviceh]hdevice}(hjlhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjnmodnameN classnameNjj)}j]j)}jj4sbc.devm_gpiod_putasbuh1hhjJubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjJubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjJubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjFubj)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.devm_gpiod_putasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjFubeh}(h]h ]h"]h$]h&]jjuh1jhj hhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj hhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjhhubj)}(hhh]h)}(hResource-managed gpiod_put()h]hResource-managed gpiod_put()}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhj>hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjYjjYjjjuh1j4hhhjhNhNubj)}(hXF**Parameters** ``struct device *dev`` GPIO consumer ``struct gpio_desc *desc`` GPIO descriptor to dispose of **Description** Dispose of a GPIO descriptor obtained with devm_gpiod_get() or devm_gpiod_get_index(). Normally this function will not be called as the GPIO will be disposed of by the resource management code.h](h)}(h**Parameters**h]j)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM hj]ubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhj|ubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hj|ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjyubj)}(h9``struct gpio_desc *desc`` GPIO descriptor to dispose of h](j)}(h``struct gpio_desc *desc``h]j$)}(hjh]hstruct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM hjubj:)}(hhh]h)}(hGPIO descriptor to dispose ofh]hGPIO descriptor to dispose of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjyubeh}(h]h ]h"]h$]h&]uh1jhj]ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM hj]ubh)}(hDispose of a GPIO descriptor obtained with devm_gpiod_get() or devm_gpiod_get_index(). Normally this function will not be called as the GPIO will be disposed of by the resource management code.h]hDispose of a GPIO descriptor obtained with devm_gpiod_get() or devm_gpiod_get_index(). Normally this function will not be called as the GPIO will be disposed of by the resource management code.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM hj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0devm_gpiod_unhinge (C function)c.devm_gpiod_unhingehNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hDvoid devm_gpiod_unhinge (struct device *dev, struct gpio_desc *desc)h]j@)}(hCvoid devm_gpiod_unhinge(struct device *dev, struct gpio_desc *desc)h](j)}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMubjX)}(h h]h }(hjJhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj7hhhjIhMubji)}(hdevm_gpiod_unhingeh]jo)}(hdevm_gpiod_unhingeh]hdevm_gpiod_unhinge}(hj\hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjXubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj7hhhjIhMubj)}(h,(struct device *dev, struct gpio_desc *desc)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjxhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjtubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj^sbc.devm_gpiod_unhingeasbuh1hhjtubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjtubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubj)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.devm_gpiod_unhingeasbuh1hhjubjX)}(h h]h }(hj&hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdesch]hdesc}(hjAhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjpubeh}(h]h ]h"]h$]h&]jjuh1jhj7hhhjIhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj3hhhjIhMubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1j9hjIhMhj0hhubj)}(hhh]h)}(h1Remove resource management from a gpio descriptorh]h1Remove resource management from a gpio descriptor}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjhhhubah}(h]h ]h"]h$]h&]uh1jhj0hhhjIhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer ``struct gpio_desc *desc`` GPIO descriptor to remove resource management from **Description** *DEPRECATED* This function should not be used. It's been provided as a workaround for resource ownership issues in the regulator framework and should be replaced with a better solution. Remove resource management from a GPIO descriptor. This is needed when you want to hand over lifecycle management of a descriptor to another mechanism.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hN``struct gpio_desc *desc`` GPIO descriptor to remove resource management from h](j)}(h``struct gpio_desc *desc``h]j$)}(hjh]hstruct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjubj:)}(hhh]h)}(h2GPIO descriptor to remove resource management fromh]h2GPIO descriptor to remove resource management from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjubh)}(h*DEPRECATED* This function should not be used. It's been provided as a workaround for resource ownership issues in the regulator framework and should be replaced with a better solution.h](j{)}(h *DEPRECATED*h]h DEPRECATED}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj6ubh This function should not be used. It’s been provided as a workaround for resource ownership issues in the regulator framework and should be replaced with a better solution.}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjubh)}(hRemove resource management from a GPIO descriptor. This is needed when you want to hand over lifecycle management of a descriptor to another mechanism.h]hRemove resource management from a GPIO descriptor. This is needed when you want to hand over lifecycle management of a descriptor to another mechanism.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0!devm_gpiod_put_array (C function)c.devm_gpiod_put_arrayhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hHvoid devm_gpiod_put_array (struct device *dev, struct gpio_descs *descs)h]j@)}(hGvoid devm_gpiod_put_array(struct device *dev, struct gpio_descs *descs)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM8ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj~hhhjhM8ubji)}(hdevm_gpiod_put_arrayh]jo)}(hdevm_gpiod_put_arrayh]hdevm_gpiod_put_array}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj~hhhjhM8ubj)}(h.(struct device *dev, struct gpio_descs *descs)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.devm_gpiod_put_arrayasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_descs *descsh](jF)}(hjIh]hstruct}(hj1hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj-ubjX)}(h h]h }(hj>hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj-ubh)}(hhh]jo)}(h gpio_descsh]h gpio_descs}(hjOhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]jc.devm_gpiod_put_arrayasbuh1hhj-ubjX)}(h h]h }(hjmhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj-ubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjo)}(hdescsh]hdescs}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhj~hhhjhM8ubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjzhhhjhM8ubah}(h]juah ](jjeh"]h$]h&]jj)jhuh1j9hjhM8hjwhhubj)}(hhh]h)}(h"Resource-managed gpiod_put_array()h]h"Resource-managed gpiod_put_array()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM8hjhhubah}(h]h ]h"]h$]h&]uh1jhjwhhhjhM8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXF**Parameters** ``struct device *dev`` GPIO consumer ``struct gpio_descs *descs`` GPIO descriptor array to dispose of **Description** Dispose of an array of GPIO descriptors obtained with devm_gpiod_get_array(). Normally this function will not be called as the GPIOs will be disposed of by the resource management code.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM<hjubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM9hjubj:)}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9hj ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhM9hjubj)}(hA``struct gpio_descs *descs`` GPIO descriptor array to dispose of h](j)}(h``struct gpio_descs *descs``h]j$)}(hj,h]hstruct gpio_descs *descs}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj*ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM:hj&ubj:)}(hhh]h)}(h#GPIO descriptor array to dispose ofh]h#GPIO descriptor array to dispose of}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhM:hjBubah}(h]h ]h"]h$]h&]uh1j9hj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhM:hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjgh]h Description}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM<hjubh)}(hDispose of an array of GPIO descriptors obtained with devm_gpiod_get_array(). Normally this function will not be called as the GPIOs will be disposed of by the resource management code.h]hDispose of an array of GPIO descriptors obtained with devm_gpiod_get_array(). Normally this function will not be called as the GPIOs will be disposed of by the resource management code.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chM;hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0,devm_gpiochip_add_data_with_key (C function)!c.devm_gpiochip_add_data_with_keyhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hint devm_gpiochip_add_data_with_key (struct device *dev, struct gpio_chip *gc, void *data, struct lock_class_key *lock_key, struct lock_class_key *request_key)h]j@)}(hint devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip *gc, void *data, struct lock_class_key *lock_key, struct lock_class_key *request_key)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMNubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMNubji)}(hdevm_gpiochip_add_data_with_keyh]jo)}(hdevm_gpiochip_add_data_with_keyh]hdevm_gpiochip_add_data_with_key}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMNubj)}(h{(struct device *dev, struct gpio_chip *gc, void *data, struct lock_class_key *lock_key, struct lock_class_key *request_key)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsb!c.devm_gpiochip_add_data_with_keyasbuh1hhjubjX)}(h h]h }(hj'hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjBhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct gpio_chip *gch](jF)}(hjIh]hstruct}(hj[hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjWubjX)}(h h]h }(hjhhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjWubh)}(hhh]jo)}(h gpio_chiph]h gpio_chip}(hjyhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj{modnameN classnameNjj)}j]j#!c.devm_gpiochip_add_data_with_keyasbuh1hhjWubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjWubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjo)}(hgch]hgc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjWubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h void *datah](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct lock_class_key *lock_keyh](jF)}(hjIh]hstruct}(hj hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhj ubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubh)}(hhh]jo)}(hlock_class_keyh]hlock_class_key}(hj+hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j#!c.devm_gpiochip_add_data_with_keyasbuh1hhj ubjX)}(h h]h }(hjIhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj ubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjo)}(hlock_keyh]hlock_key}(hjdhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h"struct lock_class_key *request_keyh](jF)}(hjIh]hstruct}(hj}hhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjyubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjyubh)}(hhh]jo)}(hlock_class_keyh]hlock_class_key}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j#!c.devm_gpiochip_add_data_with_keyasbuh1hhjyubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjyubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjo)}(h request_keyh]h request_key}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjyubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMNubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMNubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMNhjhhubj)}(hhh]h)}(h-Resource managed gpiochip_add_data_with_key()h]h-Resource managed gpiochip_add_data_with_key()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMNhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` pointer to the device that gpio_chip belongs to. ``struct gpio_chip *gc`` the GPIO chip to register ``void *data`` driver-private data associated with this chip ``struct lock_class_key *lock_key`` lockdep class for IRQ lock ``struct lock_class_key *request_key`` lockdep class for IRQ request **Context** potentially before irqs will work **Description** The gpio chip automatically be released when the device is unbound. **Return** A negative errno if the chip can't be registered, such as because the gc->base is invalid or already associated with a different chip. Otherwise it returns zero as a success code.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMRhjubj)}(hhh](j)}(hH``struct device *dev`` pointer to the device that gpio_chip belongs to. h](j)}(h``struct device *dev``h]j$)}(hj?h]hstruct device *dev}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj=ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMOhj9ubj:)}(hhh]h)}(h0pointer to the device that gpio_chip belongs to.h]h0pointer to the device that gpio_chip belongs to.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThMOhjUubah}(h]h ]h"]h$]h&]uh1j9hj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMOhj6ubj)}(h3``struct gpio_chip *gc`` the GPIO chip to register h](j)}(h``struct gpio_chip *gc``h]j$)}(hjxh]hstruct gpio_chip *gc}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjvubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMPhjrubj:)}(hhh]h)}(hthe GPIO chip to registerh]hthe GPIO chip to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMPhjubah}(h]h ]h"]h$]h&]uh1j9hjrubeh}(h]h ]h"]h$]h&]uh1jhjhMPhj6ubj)}(h=``void *data`` driver-private data associated with this chip h](j)}(h``void *data``h]j$)}(hjh]h void *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMQhjubj:)}(hhh]h)}(h-driver-private data associated with this chiph]h-driver-private data associated with this chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMQhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMQhj6ubj)}(h?``struct lock_class_key *lock_key`` lockdep class for IRQ lock h](j)}(h#``struct lock_class_key *lock_key``h]j$)}(hjh]hstruct lock_class_key *lock_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMRhjubj:)}(hhh]h)}(hlockdep class for IRQ lockh]hlockdep class for IRQ lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMRhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMRhj6ubj)}(hE``struct lock_class_key *request_key`` lockdep class for IRQ request h](j)}(h&``struct lock_class_key *request_key``h]j$)}(hj#h]h"struct lock_class_key *request_key}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj!ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMShjubj:)}(hhh]h)}(hlockdep class for IRQ requesth]hlockdep class for IRQ request}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMShj9ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj8hMShj6ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hj^h]hContext}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMUhjubh)}(h!potentially before irqs will workh]h!potentially before irqs will work}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMUhjubh)}(h**Description**h]j)}(hjh]hd Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMWhjubh)}(hCThe gpio chip automatically be released when the device is unbound.h]hCThe gpio chip automatically be released when the device is unbound.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMVhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMXhjubh)}(hA negative errno if the chip can't be registered, such as because the gc->base is invalid or already associated with a different chip. Otherwise it returns zero as a success code.h]hA negative errno if the chip can’t be registered, such as because the gc->base is invalid or already associated with a different chip. Otherwise it returns zero as a success code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:44: ./drivers/gpio/gpiolib-devres.chMYhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]device-managed-apiah ]h"]device-managed apiah$]h&]uh1hhhhhhhhK*ubh)}(hhh](h)}(h sysfs helpersh]h sysfs helpers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK0ubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_export (C function)c.gpiod_exporthNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hDint gpiod_export (struct gpio_desc *desc, bool direction_may_change)h]j@)}(hCint gpiod_export(struct gpio_desc *desc, bool direction_may_change)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjhhhjhMubji)}(h gpiod_exporth]jo)}(h gpiod_exporth]h gpiod_export}(hj+hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhj'ubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjhhhjhMubj)}(h3(struct gpio_desc *desc, bool direction_may_change)h](j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjGhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjCubjX)}(h h]h }(hjThhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjCubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjehhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjbubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjgmodnameN classnameNjj)}j]j)}jj-sbc.gpiod_exportasbuh1hhjCubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjCubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjCubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubj)}(hbool direction_may_changeh](j)}(hjT,h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubjo)}(hdirection_may_changeh]hdirection_may_change}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj?ubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j9hjhMhjhhubj)}(hhh]h)}(hexport a GPIO through sysfsh]hexport a GPIO through sysfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hX**Parameters** ``struct gpio_desc *desc`` GPIO to make available, already requested ``bool direction_may_change`` true if userspace may change GPIO direction **Context** arch_initcall or later **Description** When drivers want to make a GPIO accessible to userspace after they have requested it -- perhaps while debugging, or as part of their public interface -- they may use this routine. If the GPIO can change direction (some can't) and the caller allows it, userspace will see "direction" sysfs attribute which may be used to change the gpio's direction. A "value" attribute will always be provided. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubj)}(hhh](j)}(hE``struct gpio_desc *desc`` GPIO to make available, already requested h](j)}(h``struct gpio_desc *desc``h]j$)}(hj?h]hstruct gpio_desc *desc}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj=ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhj9ubj:)}(hhh]h)}(h)GPIO to make available, already requestedh]h)GPIO to make available, already requested}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThMhjUubah}(h]h ]h"]h$]h&]uh1j9hj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMhj6ubj)}(hJ``bool direction_may_change`` true if userspace may change GPIO direction h](j)}(h``bool direction_may_change``h]j$)}(hjxh]hbool direction_may_change}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjvubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjrubj:)}(hhh]h)}(h+true if userspace may change GPIO directionh]h+true if userspace may change GPIO direction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j9hjrubeh}(h]h ]h"]h$]h&]uh1jhjhMhj6ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubh)}(harch_initcall or laterh]harch_initcall or later}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubh)}(hXWhen drivers want to make a GPIO accessible to userspace after they have requested it -- perhaps while debugging, or as part of their public interface -- they may use this routine. If the GPIO can change direction (some can't) and the caller allows it, userspace will see "direction" sysfs attribute which may be used to change the gpio's direction. A "value" attribute will always be provided.h]hXWhen drivers want to make a GPIO accessible to userspace after they have requested it -- perhaps while debugging, or as part of their public interface -- they may use this routine. If the GPIO can change direction (some can’t) and the caller allows it, userspace will see “direction” sysfs attribute which may be used to change the gpio’s direction. A “value” attribute will always be provided.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_export_link (C function)c.gpiod_export_linkhNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(hTint gpiod_export_link (struct device *dev, const char *name, struct gpio_desc *desc)h]j@)}(hSint gpiod_export_link(struct device *dev, const char *name, struct gpio_desc *desc)h](j)}(hinth]hint}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMuubjX)}(h h]h }(hjUhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjBhhhjThMuubji)}(hgpiod_export_linkh]jo)}(hgpiod_export_linkh]hgpiod_export_link}(hjghhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjcubah}(h]h ](jjeh"]h$]h&]jjuh1jhhjBhhhjThMuubj)}(h>(struct device *dev, const char *name, struct gpio_desc *desc)h](j)}(hstruct device *devh](jF)}(hjIh]hstruct}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubh)}(hhh]jo)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjisbc.gpiod_export_linkasbuh1hhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj{ubj)}(hconst char *nameh](jF)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjo)}(hnameh]hname}(hj9hhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj{ubj)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjRhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjNubjX)}(h h]h }(hj_hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjNubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjphhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNjj)}j]jc.gpiod_export_linkasbuh1hhjNubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj{ubeh}(h]h ]h"]h$]h&]jjuh1jhjBhhhjThMuubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj>hhhjThMuubah}(h]j9ah ](jjeh"]h$]h&]jj)jhuh1j9hjThMuhj;hhubj)}(hhh]h)}(h,create a sysfs link to an exported GPIO nodeh]h,create a sysfs link to an exported GPIO node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMuhjhhubah}(h]h ]h"]h$]h&]uh1jhj;hhhjThMuubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hXz**Parameters** ``struct device *dev`` device under which to create symlink ``const char *name`` name of the symlink ``struct gpio_desc *desc`` GPIO to create symlink to, already exported **Description** Set up a symlink from /sys/.../dev/name to /sys/class/gpio/gpioN node. Caller is responsible for unlinking. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMyhjubj)}(hhh](j)}(h<``struct device *dev`` device under which to create symlink h](j)}(h``struct device *dev``h]j$)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMvhjubj:)}(hhh]h)}(h$device under which to create symlinkh]h$device under which to create symlink}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMvhj*ubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhj)hMvhj ubj)}(h)``const char *name`` name of the symlink h](j)}(h``const char *name``h]j$)}(hjMh]hconst char *name}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjKubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMwhjGubj:)}(hhh]h)}(hname of the symlinkh]hname of the symlink}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMwhjcubah}(h]h ]h"]h$]h&]uh1j9hjGubeh}(h]h ]h"]h$]h&]uh1jhjbhMwhj ubj)}(hG``struct gpio_desc *desc`` GPIO to create symlink to, already exported h](j)}(h``struct gpio_desc *desc``h]j$)}(hjh]hstruct gpio_desc *desc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMxhjubj:)}(hhh]h)}(h+GPIO to create symlink to, already exportedh]h+GPIO to create symlink to, already exported}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMxhjubah}(h]h ]h"]h$]h&]uh1j9hjubeh}(h]h ]h"]h$]h&]uh1jhjhMxhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMzhjubh)}(hkSet up a symlink from /sys/.../dev/name to /sys/class/gpio/gpioN node. Caller is responsible for unlinking.h]hkSet up a symlink from /sys/.../dev/name to /sys/class/gpio/gpioN node. Caller is responsible for unlinking.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMyhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chM|hjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chM}hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj$)}(hhh]h}(h]h ]h"]h$]h&]entries](j0gpiod_unexport (C function)c.gpiod_unexporthNtauh1j#hjhhhNhNubj5)}(hhh](j:)}(h,void gpiod_unexport (struct gpio_desc *desc)h]j@)}(h+void gpiod_unexport(struct gpio_desc *desc)h](j)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMubjX)}(h h]h }(hj<hhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhj)hhhj;hMubji)}(hgpiod_unexporth]jo)}(hgpiod_unexporth]hgpiod_unexport}(hjNhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjJubah}(h]h ](jjeh"]h$]h&]jjuh1jhhj)hhhj;hMubj)}(h(struct gpio_desc *desc)h]j)}(hstruct gpio_desc *desch](jF)}(hjIh]hstruct}(hjjhhhNhNubah}(h]h ]jRah"]h$]h&]uh1jEhjfubjX)}(h h]h }(hjwhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjfubh)}(hhh]jo)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjPsbc.gpiod_unexportasbuh1hhjfubjX)}(h h]h }(hjhhhNhNubah}(h]h ]jdah"]h$]h&]uh1jWhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjo)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jzah"]h$]h&]uh1jnhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjbubah}(h]h ]h"]h$]h&]jjuh1jhj)hhhj;hMubeh}(h]h ]h"]h$]h&]jjjuh1j?jjhj%hhhj;hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j9hj;hMhj"hhubj)}(hhh]h)}(h reverse effect of gpiod_export()h]h reverse effect of gpiod_export()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj;hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j4hhhjhNhNubj)}(hy**Parameters** ``struct gpio_desc *desc`` GPIO to make unavailable **Description** This is implicit on gpiod_free().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhj ubj)}(hhh]j)}(h4``struct gpio_desc *desc`` GPIO to make unavailable h](j)}(h``struct gpio_desc *desc``h]j$)}(hj.h]hstruct gpio_desc *desc}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj,ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhj(ubj:)}(hhh]h)}(hGPIO to make unavailableh]hGPIO to make unavailable}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChMhjDubah}(h]h ]h"]h$]h&]uh1j9hj(ubeh}(h]h ]h"]h$]h&]uh1jhjChMhj%ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjih]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhj ubh)}(h!This is implicit on gpiod_free().h]h!This is implicit on gpiod_free().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:50: ./drivers/gpio/gpiolib-sysfs.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h] sysfs-helpersah ]h"] sysfs helpersah$]h&]uh1hhhhhhhhK0ubeh}(h]!general-purpose-input-output-gpioah ]h"]#general purpose input/output (gpio)ah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehʌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjpjmjjjjjjjju nametypes}(jjpjjjjuh}(jhjmjj2j;jY j^ j2j7j jjbjgj8j=jjjbjgjjjjjl!jq!j#j #j%j%j 'j'j(j(j3*j8*jE,jJ,j.j.jM0jR0j1j1j3j3jb5jg5j6j6jg:jl:j<j<j=j=j?j?jAjAjBjBjDEjIEjOGjTGj4Ij9IjKjKj:Oj?OjSjSj%Uj*UjvWj{Wj[j[j5]j:]j^j^j`j`j cjcjejejgj$gjNijSij}kjkjmjmjtnjynj7pjj j%u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.