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]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/drivers-on-gpioNdriver-api/gpio/bt8xxgpioe includefiles](hhhhhhhemaxdepthKcaptionNglobhidden includehiddennumberedK titlesonly rawentries]uh1hhhhKhhubah}(h]h ]toctree-wrapperah"]h$]h&]uh1hhhhhhhhNubh)}(hhh](h)}(hCoreh]hCore}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlegpio_irq_chip (C struct)c.gpio_irq_chiphNtauh1j hhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h gpio_irq_chiph]hdesc_signature_line)}(hstruct gpio_irq_chiph](hdesc_sig_keyword)}(hstructh]hstruct}(hj/hhhNhNubah}(h]h ]kah"]h$]h&]uh1j-hj)hhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKubhdesc_sig_space)}(h h]h }(hjAhhhNhNubah}(h]h ]wah"]h$]h&]uh1j?hj)hhhj>hKubh desc_name)}(h gpio_irq_chiph]h desc_sig_name)}(hj%h]h gpio_irq_chip}(hjXhhhNhNubah}(h]h ]nah"]h$]h&]uh1jVhjRubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jPhj)hhhj>hKubeh}(h]h ]h"]h$]h&]jnjo add_permalinkuh1j'sphinx_line_type declaratorhj#hhhj>hKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j!hj>hKhjhhubh 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:21: ./include/linux/gpio/driver.hhK1hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj>hKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhhhNhNubh 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_add_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:21: ./include/linux/gpio/driver.hhK5hjubh 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&]jnjouh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhK7hjubh)}(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:21: ./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:21: ./include/linux/gpio/driver.hhK6hjubh 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&]uh1hhj hK6hj#ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hK6hjubj)}(hq``domain`` Interrupt translation domain; responsible for mapping between GPIO hwirq number and Linux IRQ number. h](j)}(h ``domain``h]j )}(hjFh]hdomain}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhK>hj@ubj")}(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.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhK=hj\ubah}(h]h ]h"]h$]h&]uh1j!hj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hK>hjubj)}(ho``fwnode`` Firmware node corresponding to this gpiochip/irqchip, necessary for hierarchical irqdomain support. h](j)}(h ``fwnode``h]j )}(hjh]hfwnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj~ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKGhjzubj")}(hhh]h)}(hcFirmware node corresponding to this gpiochip/irqchip, necessary for hierarchical irqdomain support.h]hcFirmware node corresponding to this gpiochip/irqchip, necessary for hierarchical irqdomain support.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKFhjubah}(h]h ]h"]h$]h&]uh1j!hjzubeh}(h]h ]h"]h$]h&]uh1jhjhKGhjubj)}(h``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. h](j)}(h``parent_domain``h]j )}(hjh]h parent_domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKQhjubj")}(hhh]h)}(hIf 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.h]hIf 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKNhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKQhjubj)}(hX``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. h](j)}(h``child_to_parent_hwirq``h]j )}(hjh]hchild_to_parent_hwirq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKdhjubj")}(hhh](h)}(hXThis 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.h]hXThis 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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKXhj ubh)}(hIf 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.h](hxIf some ranges of hardware IRQs do not have a corresponding parent HWIRQ, return -EINVAL, but also make sure to fill in }(hjhhhNhNubj)}(h**valid_mask**h]h valid_mask}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**need_valid_mask**h]hneed_valid_mask}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh6 to make these GPIO lines unavailable for translation.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKahj ubeh}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hKdhjubj)}(hX=``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. h](j)}(h``populate_parent_alloc_arg``h]j )}(hjah]hpopulate_parent_alloc_arg}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKshj[ubj")}(hhh]h)}(hXThis 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.h](hThis optional callback allocates and populates the specific struct for the parent’s IRQ domain. If this is not specified, then }(hjzhhhNhNubh)}(h1:c:type:`gpiochip_populate_parent_fwspec_twocell`h]j )}(hjh]h'gpiochip_populate_parent_fwspec_twocell}(hjhhhNhNubah}(h]h ](xrefjc-typeeh"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]refdoch׌ refdomainjreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sb reftarget'gpiochip_populate_parent_fwspec_twocelluh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKohjzubh) will be used. A four-cell variant named }(hjzhhhNhNubh)}(h2:c:type:`gpiochip_populate_parent_fwspec_fourcell`h]j )}(hjh]h(gpiochip_populate_parent_fwspec_fourcell}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]refdoch׌ refdomainjreftypetype refexplicitrefwarnjjj(gpiochip_populate_parent_fwspec_fourcelluh1hhjhKohjzubh is also available.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKohjwubah}(h]h ]h"]h$]h&]uh1j!hj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhKshjubj)}(hX``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. h](j)}(h``child_offset_to_irq``h]j )}(hjh]hchild_offset_to_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:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hThis 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.h]hThis 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhK}hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h``child_irq_domain_ops``h]j )}(hj%h]hchild_irq_domain_ops}(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:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hThe 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.h]hThe 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.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhj;ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj:hKhjubj)}(hr``handler`` The IRQ handler to use (often a predefined IRQ core function) for GPIO IRQs, provided by GPIO driver. h](j)}(h ``handler``h]j )}(hj_h]hhandler}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j hj]ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjYubj")}(hhh]h)}(heThe IRQ handler to use (often a predefined IRQ core function) for GPIO IRQs, provided by GPIO driver.h]heThe IRQ handler to use (often a predefined IRQ core function) for GPIO IRQs, provided by GPIO driver.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjuubah}(h]h ]h"]h$]h&]uh1j!hjYubeh}(h]h ]h"]h$]h&]uh1jhjthKhjubj)}(hq``default_type`` Default IRQ triggering type applied during GPIO driver initialization, provided by GPIO driver. h](j)}(h``default_type``h]j )}(hjh]h default_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(h_Default IRQ triggering type applied during GPIO driver initialization, provided by GPIO driver.h]h_Default IRQ triggering type applied during GPIO driver initialization, provided by GPIO driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h;``lock_key`` Per GPIO IRQ chip lockdep class for IRQ lock. h](j)}(h ``lock_key``h]j )}(hjh]hlock_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(h-Per GPIO IRQ chip lockdep class for IRQ lock.h]h-Per GPIO IRQ chip lockdep class for IRQ lock.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hA``request_key`` Per GPIO IRQ chip lockdep class for IRQ request. h](j)}(h``request_key``h]j )}(hj h]h request_key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(h0Per GPIO IRQ chip lockdep class for IRQ request.h]h0Per GPIO IRQ chip lockdep class for IRQ request.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKhj"ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj!hKhjubj)}(h``parent_handler`` The interrupt handler for the GPIO chip's parent interrupts, may be NULL if the parent interrupts are nested rather than cascaded. h](j)}(h``parent_handler``h]j )}(hjEh]hparent_handler}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhj?ubj")}(hhh]h)}(hThe interrupt handler for the GPIO chip's parent interrupts, may be NULL if the parent interrupts are nested rather than cascaded.h]hThe interrupt handler for the GPIO chip’s parent interrupts, may be NULL if the parent interrupts are nested rather than cascaded.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhj[ubah}(h]h ]h"]h$]h&]uh1j!hj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhKhjubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j )}(hjh]h{unnamed_union}}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjyubj")}(hhh]h)}(h anonymoush]h anonymous}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j!hjyubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h``parent_handler_data``h]j )}(hjh]hparent_handler_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hIf **per_parent_data** is false, **parent_handler_data** is a single pointer used as the data associated with every parent interrupt.h](hIf }(hjhhhNhNubj)}(h**per_parent_data**h]hper_parent_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is false, }(hjhhhNhNubj)}(h**parent_handler_data**h]hparent_handler_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhM is a single pointer used as the data associated with every parent interrupt.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h``parent_handler_data_array``h]j )}(hjh]hparent_handler_data_array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hIf **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.h](hIf }(hj/hhhNhNubj)}(h**per_parent_data**h]hper_parent_data}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh is true, }(hj/hhhNhNubj)}(h**parent_handler_data_array**h]hparent_handler_data_array}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh is an array of }(hj/hhhNhNubj)}(h**num_parents**h]h num_parents}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh[ pointers, and is used to associate different data for each parent. This cannot be NULL if }(hj/hhhNhNubj)}(h**per_parent_data**h]hper_parent_data}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh is true.}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhj,ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj+hKhjubj)}(h@``num_parents`` The number of interrupt parents of a GPIO chip. h](j)}(h``num_parents``h]j )}(hjh]h num_parents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(h/The number of interrupt parents of a GPIO chip.h]h/The number of interrupt parents of a GPIO chip.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h ``parents``h]j )}(hjh]hparents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hA 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.h]hA 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hB``map`` A list of interrupt parents for each line of a GPIO chip. h](j)}(h``map``h]j )}(hj h]hmap}(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:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(h9A list of interrupt parents for each line of a GPIO chip.h]h9A list of interrupt parents for each line of a GPIO chip.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj!ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubj)}(hE``threaded`` True if set the interrupt handling uses nested threads. h](j)}(h ``threaded``h]j )}(hjDh]hthreaded}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhj>ubj")}(hhh]h)}(h7True if set the interrupt handling uses nested threads.h]h7True if set the interrupt handling uses nested threads.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhKhjZubah}(h]h ]h"]h$]h&]uh1j!hj>ubeh}(h]h ]h"]h$]h&]uh1jhjYhKhjubj)}(hy``per_parent_data`` True if parent_handler_data_array describes a **num_parents** sized array to be used as parent data. h](j)}(h``per_parent_data``h]j )}(hj}h]hper_parent_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj{ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjwubj")}(hhh]h)}(hdTrue if parent_handler_data_array describes a **num_parents** sized array to be used as parent data.h](h.True if parent_handler_data_array describes a }(hjhhhNhNubj)}(h**num_parents**h]h num_parents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh' sized array to be used as parent data.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubah}(h]h ]h"]h$]h&]uh1j!hjwubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h``initialized``h]j )}(hjh]h initialized}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hFlag to track GPIO chip irq member's initialization. This flag will make sure GPIO chip irq members are not used before they are initialized.h]hFlag to track GPIO chip irq member’s initialization. This flag will make sure GPIO chip irq members are not used before they are initialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h"``domain_is_allocated_externally``h]j )}(hjh]hdomain_is_allocated_externally}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubj")}(hhh]h)}(hpTrue it the irq_domain was allocated outside of gpiolib, in which case gpiolib won't free the irq_domain itself.h]hrTrue it the irq_domain was allocated outside of gpiolib, in which case gpiolib won’t free the irq_domain itself.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhKhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``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. h](j)}(h ``init_hw``h]j )}(hj=h]hinit_hw}(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:21: ./include/linux/gpio/driver.hhMhj7ubj")}(hhh]h)}(hoptional 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.h]hoptional 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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjSubah}(h]h ]h"]h$]h&]uh1j!hj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjubj)}(hX``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. h](j)}(h``init_valid_mask``h]j )}(hjwh]hinit_valid_mask}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjqubj")}(hhh]h)}(hX}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.h](hoptional routine to initialize }(hjhhhNhNubj)}(h**valid_mask**h]h valid_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX\, 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.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hjubah}(h]h ]h"]h$]h&]uh1j!hjqubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hq``valid_mask`` If not ``NULL``, holds bitmask of GPIOs which are valid to be included in IRQ domain of the chip. h](j)}(h``valid_mask``h]j )}(hjh]h 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:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(haIf not ``NULL``, holds bitmask of GPIOs which are valid to be included in IRQ domain of the chip.h](hIf not }(hjhhhNhNubj )}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhR, holds bitmask of GPIOs which are valid to be included in IRQ domain of the chip.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h``first`` Required for static IRQ allocation. If set, irq_domain_add_simple() will allocate and map all IRQs during initialization. h](j)}(h ``first``h]j )}(hj h]hfirst}(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:21: ./include/linux/gpio/driver.hhM"hj ubj")}(hhh]h)}(hyRequired for static IRQ allocation. If set, irq_domain_add_simple() will allocate and map all IRQs during initialization.h]hyRequired for static IRQ allocation. If set, irq_domain_add_simple() will allocate and map all IRQs during initialization.}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM!hj% ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj$ hM"hjubj)}(h6``irq_enable`` Store old irq_chip irq_enable callback h](j)}(h``irq_enable``h]j )}(hjI h]h irq_enable}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjG ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM)hjC ubj")}(hhh]h)}(h&Store old irq_chip irq_enable callbackh]h&Store old irq_chip irq_enable callback}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^ hM)hj_ ubah}(h]h ]h"]h$]h&]uh1j!hjC ubeh}(h]h ]h"]h$]h&]uh1jhj^ hM)hjubj)}(h8``irq_disable`` Store old irq_chip irq_disable callback h](j)}(h``irq_disable``h]j )}(hj h]h irq_disable}(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:21: ./include/linux/gpio/driver.hhM0hj| ubj")}(hhh]h)}(h'Store old irq_chip irq_disable callbackh]h'Store old irq_chip irq_disable callback}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM0hj ubah}(h]h ]h"]h$]h&]uh1j!hj| ubeh}(h]h ]h"]h$]h&]uh1jhj hM0hjubj)}(h6``irq_unmask`` Store old irq_chip irq_unmask callback h](j)}(h``irq_unmask``h]j )}(hj h]h irq_unmask}(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:21: ./include/linux/gpio/driver.hhM6hj ubj")}(hhh]h)}(h&Store old irq_chip irq_unmask callbackh]h&Store old irq_chip irq_unmask callback}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM6hj ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM6hjubj)}(h1``irq_mask`` Store old irq_chip irq_mask callbackh](j)}(h ``irq_mask``h]j )}(hj h]hirq_mask}(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:21: ./include/linux/gpio/driver.hhM<hj ubj")}(hhh]h)}(h$Store old irq_chip irq_mask callbackh]h$Store old irq_chip irq_mask callback}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM=hj ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM<hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpio_chip (C struct) c.gpio_chiphNtauh1j hhhhhNhNubj)}(hhh](j")}(h gpio_chiph]j()}(hstruct gpio_chiph](j.)}(hj1h]hstruct}(hjN hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjJ hhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMCubj@)}(h h]h }(hj\ hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJ hhhj[ hMCubjQ)}(h gpio_chiph]jW)}(hjH h]h gpio_chip}(hjn hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjj ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjJ hhhj[ hMCubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjF hhhj[ hMCubah}(h]jA ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj[ hMChjC hhubj)}(hhh]h)}(habstract a GPIO controllerh]habstract a GPIO controller}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMDhj hhubah}(h]h ]h"]h$]h&]uh1jhjC hhhj[ hMCubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1jhhhhhNhNubj)}(hX"**Definition**:: struct 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); void (*set)(struct gpio_chip *gc, unsigned int offset, int value); void (*set_multiple)(struct gpio_chip *gc,unsigned long *mask, unsigned long *bits); int (*set_rv)(struct gpio_chip *gc,unsigned int offset, int value); int (*set_multiple_rv)(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; #if IS_ENABLED(CONFIG_GPIO_GENERIC); unsigned long (*read_reg)(void __iomem *reg); void (*write_reg)(void __iomem *reg, unsigned long data); bool be_bits; void __iomem *reg_dat; void __iomem *reg_set; void __iomem *reg_clr; void __iomem *reg_dir_out; void __iomem *reg_dir_in; bool bgpio_dir_unreadable; bool bgpio_pinctrl; int bgpio_bits; raw_spinlock_t bgpio_lock; unsigned long bgpio_data; unsigned long bgpio_dir; #endif ; #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 ; }; **Members** ``label`` a functional name for the GPIO device, such as a part number or the name of the SoC IP-block implementing it. ``gpiodev`` the internal state holder, opaque struct ``parent`` optional parent device providing the GPIOs ``fwnode`` optional fwnode providing this controller's properties ``owner`` helps prevent removal of modules exporting active GPIOs ``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 ``free`` optional hook for chip-specific deactivation, such as disabling module power and clock; may sleep ``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. ``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. ``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. ``get`` returns value for signal "offset", 0=low, 1=high, or negative error ``get_multiple`` reads values for multiple signals defined by "mask" and stores them in "bits", returns 0 on success or negative error ``set`` **DEPRECATED** - please use set_rv() instead ``set_multiple`` **DEPRECATED** - please use set_multiple_rv() instead ``set_rv`` assigns output value for signal "offset", returns 0 on success or negative error value ``set_multiple_rv`` assigns output values for multiple signals defined by "mask", returns 0 on success or negative error value ``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. ``to_irq`` optional hook supporting non-static gpiod_to_irq() mappings; implementation may not sleep ``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). ``init_valid_mask`` optional routine to initialize **valid_mask**, to be used if not all GPIOs are valid. ``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. ``en_hw_timestamp`` Dependent on GPIO chip, an optional routine to enable hardware timestamp. ``dis_hw_timestamp`` Dependent on GPIO chip, an optional routine to disable hardware timestamp. ``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. ``ngpio`` the number of GPIOs handled by this controller; the last GPIO handled is (base + ngpio - 1). ``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. ``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. ``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. ``read_reg`` reader function for generic GPIO ``write_reg`` writer function for generic GPIO ``be_bits`` if the generic GPIO has big endian bit order (bit 31 is representing line 0, bit 30 is line 1 ... bit 0 is line 31) this is set to true by the generic GPIO core. It is for internal housekeeping only. ``reg_dat`` data (in) register for generic GPIO ``reg_set`` output set register (out=high) for generic GPIO ``reg_clr`` output clear register (out=low) for generic GPIO ``reg_dir_out`` direction out setting register for generic GPIO ``reg_dir_in`` direction in setting register for generic GPIO ``bgpio_dir_unreadable`` indicates that the direction register(s) cannot be read and we need to rely on out internal state tracking. ``bgpio_pinctrl`` the generic GPIO uses a pin control backend. ``bgpio_bits`` number of register bits used for a generic GPIO i.e. * 8 ``bgpio_lock`` used to lock chip->bgpio_data. Also, this is needed to keep shadowed and real data registers writes together. ``bgpio_data`` shadowed data register for generic GPIO to clear/set bits safely. ``bgpio_dir`` shadowed direction register for generic GPIO to clear/set direction safely. A "1" in this word means the line is set as output. ``irq`` Integrates interrupt chip functionality with the GPIO chip. Can be used to handle IRQs for most practical cases. ``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>; ``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:21: ./include/linux/gpio/driver.hhMHhj ubj)}(hX struct 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); void (*set)(struct gpio_chip *gc, unsigned int offset, int value); void (*set_multiple)(struct gpio_chip *gc,unsigned long *mask, unsigned long *bits); int (*set_rv)(struct gpio_chip *gc,unsigned int offset, int value); int (*set_multiple_rv)(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; #if IS_ENABLED(CONFIG_GPIO_GENERIC); unsigned long (*read_reg)(void __iomem *reg); void (*write_reg)(void __iomem *reg, unsigned long data); bool be_bits; void __iomem *reg_dat; void __iomem *reg_set; void __iomem *reg_clr; void __iomem *reg_dir_out; void __iomem *reg_dir_in; bool bgpio_dir_unreadable; bool bgpio_pinctrl; int bgpio_bits; raw_spinlock_t bgpio_lock; unsigned long bgpio_data; unsigned long bgpio_dir; #endif ; #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]hX struct 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); void (*set)(struct gpio_chip *gc, unsigned int offset, int value); void (*set_multiple)(struct gpio_chip *gc,unsigned long *mask, unsigned long *bits); int (*set_rv)(struct gpio_chip *gc,unsigned int offset, int value); int (*set_multiple_rv)(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; #if IS_ENABLED(CONFIG_GPIO_GENERIC); unsigned long (*read_reg)(void __iomem *reg); void (*write_reg)(void __iomem *reg, unsigned long data); bool be_bits; void __iomem *reg_dat; void __iomem *reg_set; void __iomem *reg_clr; void __iomem *reg_dir_out; void __iomem *reg_dir_in; bool bgpio_dir_unreadable; bool bgpio_pinctrl; int bgpio_bits; raw_spinlock_t bgpio_lock; unsigned long bgpio_data; unsigned long bgpio_dir; #endif ; #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&]jnjouh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./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:21: ./include/linux/gpio/driver.hhMhj 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:21: ./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:21: ./include/linux/gpio/driver.hhMFhj ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMGhj ubj)}(h5``gpiodev`` the internal state holder, opaque struct h](j)}(h ``gpiodev``h]j )}(hj7 h]hgpiodev}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5 ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMHhj1 ubj")}(hhh]h)}(h(the internal state holder, opaque structh]h(the internal state holder, opaque struct}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL hMHhjM ubah}(h]h ]h"]h$]h&]uh1j!hj1 ubeh}(h]h ]h"]h$]h&]uh1jhjL hMHhj ubj)}(h6``parent`` optional parent device providing the GPIOs h](j)}(h ``parent``h]j )}(hjp h]hparent}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjn ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMIhjj 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&]uh1j!hjj 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:21: ./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$]h&]uh1j!hj 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:21: ./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&]uh1j!hj 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 )}(hj h]hrequest}(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:21: ./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}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMLhj1 ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj0 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 )}(hjU h]hfree}(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:21: ./include/linux/gpio/driver.hhMPhjO 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}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMOhjk ubah}(h]h ]h"]h$]h&]uh1j!hjO ubeh}(h]h ]h"]h$]h&]uh1jhjj 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:21: ./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:21: ./include/linux/gpio/driver.hhMQhj ubah}(h]h ]h"]h$]h&]uh1j!hj 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:21: ./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:21: ./include/linux/gpio/driver.hhMUhj ubah}(h]h ]h"]h$]h&]uh1j!hj 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:21: ./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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMXhj ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMZhj ubj)}(hL``get`` returns value for signal "offset", 0=low, 1=high, or negative error h](j)}(h``get``h]j )}(hj= h]hget}(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:21: ./include/linux/gpio/driver.hhM[hj7 ubj")}(hhh]h)}(hCreturns value for signal "offset", 0=low, 1=high, or negative errorh]hGreturns value for signal “offset”, 0=low, 1=high, or negative error}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjR hM[hjS ubah}(h]h ]h"]h$]h&]uh1j!hj7 ubeh}(h]h ]h"]h$]h&]uh1jhjR 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 )}(hjv h]h get_multiple}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjt ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM]hjp 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:21: ./include/linux/gpio/driver.hhM\hj ubah}(h]h ]h"]h$]h&]uh1j!hjp ubeh}(h]h ]h"]h$]h&]uh1jhj hM]hj ubj)}(h5``set`` **DEPRECATED** - please use set_rv() instead 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:21: ./include/linux/gpio/driver.hhM^hj ubj")}(hhh]h)}(h,**DEPRECATED** - please use set_rv() insteadh](j)}(h**DEPRECATED**h]h DEPRECATED}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh - please use set_rv() instead}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hM^hj ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM^hj ubj)}(hG``set_multiple`` **DEPRECATED** - please use set_multiple_rv() instead h](j)}(h``set_multiple``h]j )}(hj h]h set_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:21: ./include/linux/gpio/driver.hhM_hj ubj")}(hhh]h)}(h5**DEPRECATED** - please use set_multiple_rv() insteadh](j)}(h**DEPRECATED**h]h DEPRECATED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh' - please use set_multiple_rv() instead}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hM_hj ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM_hj ubj)}(hb``set_rv`` assigns output value for signal "offset", returns 0 on success or negative error value h](j)}(h ``set_rv``h]j )}(hj>h]hset_rv}(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:21: ./include/linux/gpio/driver.hhMahj8ubj")}(hhh]h)}(hVassigns output value for signal "offset", returns 0 on success or negative error valueh]hZassigns output value for signal “offset”, returns 0 on success or negative error value}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM`hjTubah}(h]h ]h"]h$]h&]uh1j!hj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMahj ubj)}(h``set_multiple_rv`` assigns output values for multiple signals defined by "mask", returns 0 on success or negative error value h](j)}(h``set_multiple_rv``h]j )}(hjxh]hset_multiple_rv}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMchjrubj")}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMbhjubah}(h]h ]h"]h$]h&]uh1j!hjrubeh}(h]h ]h"]h$]h&]uh1jhjhMchj 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 )}(hjh]h set_config}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMfhjubj")}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMdhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMfhj 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:21: ./include/linux/gpio/driver.hhMhhjubj")}(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:21: ./include/linux/gpio/driver.hhMghjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhhj 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 )}(hj&h]hdbg_show}(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:21: ./include/linux/gpio/driver.hhMkhj ubj")}(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).}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMihj<ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj;hMkhj 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 )}(hj`h]hinit_valid_mask}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj^ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMmhjZubj")}(hhh]h)}(hUoptional routine to initialize **valid_mask**, to be used if not all GPIOs are valid.h](hoptional routine to initialize }(hjyhhhNhNubj)}(h**valid_mask**h]h valid_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubh(, to be used if not all GPIOs are valid.}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMlhjvubah}(h]h ]h"]h$]h&]uh1j!hjZubeh}(h]h ]h"]h$]h&]uh1jhjuhMmhj 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 )}(hjh]hadd_pin_ranges}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMphjubj")}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMnhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMphj 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:21: ./include/linux/gpio/driver.hhMrhjubj")}(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:21: ./include/linux/gpio/driver.hhMqhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMrhj ubj)}(h```dis_hw_timestamp`` Dependent on GPIO chip, an optional routine to disable hardware timestamp. h](j)}(h``dis_hw_timestamp``h]j )}(hj h]hdis_hw_timestamp}(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:21: ./include/linux/gpio/driver.hhMthjubj")}(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.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMshj6ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj5hMthj 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 )}(hjZh]hbase}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjXubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMzhjTubj")}(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.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMuhjpubah}(h]h ]h"]h$]h&]uh1j!hjTubeh}(h]h ]h"]h$]h&]uh1jhjohMzhj 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 )}(hjh]hngpio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM|hjubj")}(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).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM{hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM|hj 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 )}(hjh]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(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:21: ./include/linux/gpio/driver.hhM}hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(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}(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:21: ./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 }(hj!hhhNhNubj)}(h **ngpio**h]hngpio}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubh entries long.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(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 )}(hjTh]h can_sleep}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjRubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjNubj")}(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.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjjubah}(h]h ]h"]h$]h&]uh1j!hjNubeh}(h]h ]h"]h$]h&]uh1jhjihMhj ubj)}(h.``read_reg`` reader function for generic GPIO h](j)}(h ``read_reg``h]j )}(hjh]hread_reg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(h reader function for generic GPIOh]h reader function for generic GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h/``write_reg`` writer function for generic GPIO h](j)}(h ``write_reg``h]j )}(hjh]h write_reg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(h writer function for generic GPIOh]h writer function for generic GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h``be_bits`` if the generic GPIO has big endian bit order (bit 31 is representing line 0, bit 30 is line 1 ... bit 0 is line 31) this is set to true by the generic GPIO core. It is for internal housekeeping only. h](j)}(h ``be_bits``h]j )}(hjh]hbe_bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(hif the generic GPIO has big endian bit order (bit 31 is representing line 0, bit 30 is line 1 ... bit 0 is line 31) this is set to true by the generic GPIO core. It is for internal housekeeping only.h]hif the generic GPIO has big endian bit order (bit 31 is representing line 0, bit 30 is line 1 ... bit 0 is line 31) this is set to true by the generic GPIO core. It is for internal housekeeping only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h0``reg_dat`` data (in) register for generic GPIO h](j)}(h ``reg_dat``h]j )}(hj:h]hreg_dat}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj8ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhj4ubj")}(hhh]h)}(h#data (in) register for generic GPIOh]h#data (in) register for generic GPIO}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjPubah}(h]h ]h"]h$]h&]uh1j!hj4ubeh}(h]h ]h"]h$]h&]uh1jhjOhMhj ubj)}(h<``reg_set`` output set register (out=high) for generic GPIO h](j)}(h ``reg_set``h]j )}(hjsh]hreg_set}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjqubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjmubj")}(hhh]h)}(h/output set register (out=high) for generic GPIOh]h/output set register (out=high) for generic GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjmubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h=``reg_clr`` output clear register (out=low) for generic GPIO h](j)}(h ``reg_clr``h]j )}(hjh]hreg_clr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(h0output clear register (out=low) for generic GPIOh]h0output clear register (out=low) for generic GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h@``reg_dir_out`` direction out setting register for generic GPIO h](j)}(h``reg_dir_out``h]j )}(hjh]h reg_dir_out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(h/direction out setting register for generic GPIOh]h/direction out setting register for generic GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h>``reg_dir_in`` direction in setting register for generic GPIO h](j)}(h``reg_dir_in``h]j )}(hjh]h reg_dir_in}(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:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(h.direction in setting register for generic GPIOh]h.direction in setting register for generic GPIO}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj4ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj3hMhj ubj)}(h``bgpio_dir_unreadable`` indicates that the direction register(s) cannot be read and we need to rely on out internal state tracking. h](j)}(h``bgpio_dir_unreadable``h]j )}(hjWh]hbgpio_dir_unreadable}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjUubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjQubj")}(hhh]h)}(hkindicates that the direction register(s) cannot be read and we need to rely on out internal state tracking.h]hkindicates that the direction register(s) cannot be read and we need to rely on out internal state tracking.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjmubah}(h]h ]h"]h$]h&]uh1j!hjQubeh}(h]h ]h"]h$]h&]uh1jhjlhMhj ubj)}(h?``bgpio_pinctrl`` the generic GPIO uses a pin control backend. h](j)}(h``bgpio_pinctrl``h]j )}(hjh]h bgpio_pinctrl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(h,the generic GPIO uses a pin control backend.h]h,the generic GPIO uses a pin control backend.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(hY``bgpio_bits`` number of register bits used for a generic GPIO i.e. * 8 h](j)}(h``bgpio_bits``h]j )}(hjh]h bgpio_bits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(hInumber of register bits used for a generic GPIO i.e. * 8h]hInumber of register bits used for a generic GPIO i.e. * 8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(h}``bgpio_lock`` used to lock chip->bgpio_data. Also, this is needed to keep shadowed and real data registers writes together. h](j)}(h``bgpio_lock``h]j )}(hjh]h bgpio_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(hhh]h)}(hmused to lock chip->bgpio_data. Also, this is needed to keep shadowed and real data registers writes together.h]hmused to lock chip->bgpio_data. Also, this is needed to keep shadowed and real data registers writes together.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(hQ``bgpio_data`` shadowed data register for generic GPIO to clear/set bits safely. h](j)}(h``bgpio_data``h]j )}(hj>h]h bgpio_data}(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:21: ./include/linux/gpio/driver.hhMhj8ubj")}(hhh]h)}(hAshadowed data register for generic GPIO to clear/set bits safely.h]hAshadowed data register for generic GPIO to clear/set bits safely.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjTubah}(h]h ]h"]h$]h&]uh1j!hj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMhj ubj)}(h``bgpio_dir`` shadowed direction register for generic GPIO to clear/set direction safely. A "1" in this word means the line is set as output. h](j)}(h ``bgpio_dir``h]j )}(hjxh]h bgpio_dir}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjrubj")}(hhh]h)}(hshadowed direction register for generic GPIO to clear/set direction safely. A "1" in this word means the line is set as output.h]hshadowed direction register for generic GPIO to clear/set direction safely. A “1” in this word means the line is set as output.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjrubeh}(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 )}(hjh]hirq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj 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 )}(hjh]hof_gpio_n_cells}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubj")}(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:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hjubh)}(h&gpios = <:c:type:`gpio` offset flags>;h](h gpios = <}(hjhhhNhNubh)}(h:c:type:`gpio`h]j )}(hjh]hgpio}(hj hhhNhNubah}(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:21: ./include/linux/gpio/driver.hhMhjubh offset flags>;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;hMhjubh)}(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:}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjubh)}(h/gpios = <:c:type:`gpio` instance offset flags>;h](h gpios = <}(hjUhhhNhNubh)}(h:c:type:`gpio`h]j )}(hj_h]hgpio}(hjahhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j hj]ubah}(h]h ]h"]h$]h&]refdoch׌ refdomainjreftypetype refexplicitrefwarnjjjgpiouh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjUubh instance offset flags>;}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj|hMhjubh)}(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:21: ./include/linux/gpio/driver.hhMhjubh)}(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 refexplicitrefwarnjjjgpiouh1hhjhMhjubh offset>;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj 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 )}(hjh]hof_node_instance_match}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM#hjubj")}(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).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM#hj 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:21: ./include/linux/gpio/driver.hhM*hj ubj")}(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.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hM*hj)ubah}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ]h"]h$]h&]uh1jhj(hM*hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(h**Description**h]j)}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM.hhhhubh)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhhhhubh)}(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..(}(hjzhhhNhNubj)}(h **ngpio**h]hngpio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh{ - 1). When those signals are referenced through calls like gpio_get_value(gpio), the offset is calculated by subtracting }(hjzhhhNhNubj)}(h**base**h]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh from the gpio number.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhhhhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"for_each_hwgpio_in_range (C macro)c.for_each_hwgpio_in_rangehNtauh1j hhhhhNhNubj)}(hhh](j")}(hfor_each_hwgpio_in_rangeh]j()}(hfor_each_hwgpio_in_rangeh]jQ)}(hfor_each_hwgpio_in_rangeh]jW)}(hjh]hfor_each_hwgpio_in_range}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMNubah}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMNubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMNhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhMNubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubh)}(h>``for_each_hwgpio_in_range (_chip, _i, _base, _size, _label)``h]j )}(hjh]h:for_each_hwgpio_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:21: ./include/linux/gpio/driver.hhMPhhhhubh 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:21: ./include/linux/gpio/driver.hhMFhjubah}(h]h ]h"]h$]h&]uh1jhj&hMFhhhhubj)}(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)}(hj3h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMJhj-ubj)}(hhh](j)}(h ``_chip`` Chip to iterate over. h](j)}(h ``_chip``h]j )}(hjRh]h_chip}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j hjPubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMGhjLubj")}(hhh]h)}(hChip to iterate over.h]hChip to iterate over.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMGhjhubah}(h]h ]h"]h$]h&]uh1j!hjLubeh}(h]h ]h"]h$]h&]uh1jhjghMGhjIubj)}(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:21: ./include/linux/gpio/driver.hhMHhjubj")}(hhh]h)}(h Loop counter.h]h Loop counter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjIubj)}(h$``_base`` First GPIO in the ranger. h](j)}(h ``_base``h]j )}(hjh]h_base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMIhjubj")}(hhh]h)}(hFirst GPIO in the ranger.h]hFirst GPIO in the ranger.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMIhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMIhjIubj)}(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:21: ./include/linux/gpio/driver.hhMJhjubj")}(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&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjIubj)}(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 )}(hjHh]h_label}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjFubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMKhjBubj")}(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.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMKhj^ubah}(h]h ]h"]h$]h&]uh1j!hjBubeh}(h]h ]h"]h$]h&]uh1jhj]hMKhjIubeh}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jfor_each_hwgpio (C macro)c.for_each_hwgpiohNtauh1j hhhhhNhNubj)}(hhh](j")}(hfor_each_hwgpioh]j()}(hfor_each_hwgpioh]jQ)}(hfor_each_hwgpioh]jW)}(hjh]hfor_each_hwgpio}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM[ubah}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhM[ubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhM[hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhM[ubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubh)}(h'``for_each_hwgpio (_chip, _i, _label)``h]j )}(hjh]h#for_each_hwgpio (_chip, _i, _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:21: ./include/linux/gpio/driver.hhM]hhhhubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMUhjubah}(h]h ]h"]h$]h&]uh1jhjhMUhhhhubj)}(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)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMYhjubj)}(hhh](j)}(h ``_chip`` Chip to iterate over. h](j)}(h ``_chip``h]j )}(hj+h]h_chip}(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:21: ./include/linux/gpio/driver.hhMVhj%ubj")}(hhh]h)}(hChip to iterate over.h]hChip to iterate over.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMVhjAubah}(h]h ]h"]h$]h&]uh1j!hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMVhj"ubj)}(h``_i`` Loop counter. h](j)}(h``_i``h]j )}(hjdh]h_i}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjbubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMWhj^ubj")}(hhh]h)}(h Loop counter.h]h Loop counter.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMWhjzubah}(h]h ]h"]h$]h&]uh1j!hj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhMWhj"ubj)}(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:21: ./include/linux/gpio/driver.hhMXhjubj")}(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&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMXhj"ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j*for_each_requested_gpio_in_range (C macro)"c.for_each_requested_gpio_in_rangehNtauh1j hhhhhNhNubj)}(hhh](j")}(h for_each_requested_gpio_in_rangeh]j()}(h for_each_requested_gpio_in_rangeh]jQ)}(h for_each_requested_gpio_in_rangeh]jW)}(hjh]h for_each_requested_gpio_in_range}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMfubah}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhj hMfubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hj hMfhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj hMfubeh}(h]h ](jmacroeh"]h$]h&]jjjj&jj&jjjuh1jhhhhhNhNubh)}(hF``for_each_requested_gpio_in_range (_chip, _i, _base, _size, _label)``h]j )}(hj,h]hBfor_each_requested_gpio_in_range (_chip, _i, _base, _size, _label)}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhhhhhubj)}(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}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM_hjBubah}(h]h ]h"]h$]h&]uh1jhjThM_hhhhubj)}(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)}(hjah]h Parameters}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMchj[ubj)}(hhh](j)}(h``_chip`` the chip to query h](j)}(h ``_chip``h]j )}(hjh]h_chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj~ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM`hjzubj")}(hhh]h)}(hthe chip to queryh]hthe chip to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM`hjubah}(h]h ]h"]h$]h&]uh1j!hjzubeh}(h]h ]h"]h$]h&]uh1jhjhM`hjwubj)}(h``_i`` loop variable 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:21: ./include/linux/gpio/driver.hhMahjubj")}(hhh]h)}(h loop variableh]h loop variable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMahjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMahjwubj)}(h"``_base`` first GPIO in the range h](j)}(h ``_base``h]j )}(hjh]h_base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMbhjubj")}(hhh]h)}(hfirst GPIO in the rangeh]hfirst GPIO in the range}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMbhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMbhjwubj)}(h:``_size`` amount of GPIOs to check starting from **base** h](j)}(h ``_size``h]j )}(hj+h]h_size}(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:21: ./include/linux/gpio/driver.hhMchj%ubj")}(hhh]h)}(h/amount of GPIOs to check starting from **base**h](h'amount of GPIOs to check starting from }(hjDhhhNhNubj)}(h**base**h]hbase}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1hhj@hMchjAubah}(h]h ]h"]h$]h&]uh1j!hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMchjwubj)}(h ``_label`` label of current GPIOh](j)}(h ``_label``h]j )}(hjrh]h_label}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j hjpubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMehjlubj")}(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:21: ./include/linux/gpio/driver.hhMdhjubah}(h]h ]h"]h$]h&]uh1j!hjlubeh}(h]h ]h"]h$]h&]uh1jhjhMehjwubeh}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiochip_add_data (C macro)c.gpiochip_add_datahNtauh1j hhhhhNhNubj)}(hhh](j")}(hgpiochip_add_datah]j()}(hgpiochip_add_datah]jQ)}(hgpiochip_add_datah]jW)}(hjh]hgpiochip_add_data}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMubah}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubh)}(h ``gpiochip_add_data (gc, data)``h]j )}(hjh]hgpiochip_add_data (gc, data)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhhhhubj)}(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:21: ./include/linux/gpio/driver.hhMthjubah}(h]h ]h"]h$]h&]uh1jhj*hMthhhhubj)}(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)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMxhj1ubj)}(hhh](j)}(h7``gc`` the chip to register, with gc->base initialized h](j)}(h``gc``h]j )}(hjVh]hgc}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjTubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMuhjPubj")}(hhh]h)}(h/the chip to register, with gc->base initializedh]h/the chip to register, with gc->base initialized}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMuhjlubah}(h]h ]h"]h$]h&]uh1j!hjPubeh}(h]h ]h"]h$]h&]uh1jhjkhMuhjMubj)}(h7``data`` driver-private data associated with this chip h](j)}(h``data``h]j )}(hjh]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMvhjubj")}(hhh]h)}(h-driver-private data associated with this chiph]h-driver-private data associated with this chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMvhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMvhjMubeh}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMxhj1ubh)}(h!potentially before irqs will workh]h!potentially before irqs will work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMxhj1ubh)}(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:21: ./include/linux/gpio/driver.hhMzhj1ubh)}(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:21: ./include/linux/gpio/driver.hhMyhj1ubh)}(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:21: ./include/linux/gpio/driver.hhM~hj1ubh)}(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.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhj1ubh)}(h **Return**h]j)}(hj6h]hReturn}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhj1ubh)}(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.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpio_pin_range (C struct)c.gpio_pin_rangehNtauh1j hhhhhNhNubj)}(hhh](j")}(hgpio_pin_rangeh]j()}(hstruct gpio_pin_rangeh](j.)}(hj1h]hstruct}(hj{hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjwhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwhhhjhMubjQ)}(hgpio_pin_rangeh]jW)}(hjuh]hgpio_pin_range}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjwhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjshhhjhMubah}(h]jnah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjphhubj)}(hhh]h)}(h#pin range controlled by a gpio chiph]h#pin range controlled by a gpio chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhjphhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hjubj)}(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; };}hjsbah}(h]h ]h"]h$]h&]jnjouh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hjubh)}(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:21: ./include/linux/gpio/driver.hhMhjubj)}(hhh](j)}(hA``node`` list for maintaining set of pin ranges, used internally h](j)}(h``node``h]j )}(hj*h]hnode}(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:21: ./include/linux/gpio/driver.hhMhj$ubj")}(hhh]h)}(h7list for maintaining set of pin ranges, used internallyh]h7list for maintaining set of pin ranges, used internally}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj@ubah}(h]h ]h"]h$]h&]uh1j!hj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj!ubj)}(h<``pctldev`` pinctrl device which handles corresponding pins h](j)}(h ``pctldev``h]j )}(hjch]hpctldev}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hj]ubj")}(hhh]h)}(h/pinctrl device which handles corresponding pinsh]h/pinctrl device which handles corresponding pins}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhM hjyubah}(h]h ]h"]h$]h&]uh1j!hj]ubeh}(h]h ]h"]h$]h&]uh1jhjxhM hj!ubj)}(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:21: ./include/linux/gpio/driver.hhM hjubj")}(hhh]h)}(h4actual range of pins controlled by a gpio controllerh]h4actual range of pins controlled by a gpio controller}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:21: ./include/linux/gpio/driver.hhM hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hj!ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpio_to_desc (C function)c.gpio_to_deschNtauh1j hhhhhNhNubj)}(hhh](j")}(h/struct gpio_desc * gpio_to_desc (unsigned gpio)h]j()}(h-struct gpio_desc *gpio_to_desc(unsigned gpio)h](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhKubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameNjj)}j]j ASTIdentifier)}j+ gpio_to_descsbc.gpio_to_descasbuh1hhjhhhjhKubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhKubhdesc_sig_punctuation)}(h*h]h*}(hjIhhhNhNubah}(h]h ]pah"]h$]h&]uh1jGhjhhhjhKubjQ)}(h gpio_to_desch]jW)}(hj6h]h gpio_to_desc}(hj\hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjXubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhKubhdesc_parameterlist)}(h(unsigned gpio)h]hdesc_parameter)}(h unsigned gpioh](hdesc_sig_keyword_type)}(hunsignedh]hunsigned}(hj}hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j{hjwubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwubjW)}(hgpioh]hgpio}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjwubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjqubah}(h]h ]h"]h$]h&]jnjouh1johjhhhjhKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhKubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhKhjhhubj)}(hhh]h)}(h'Convert a GPIO number to its descriptorh]h'Convert a GPIO number to its descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chKhjubj)}(hhh]j)}(h%``unsigned gpio`` global GPIO number h](j)}(h``unsigned gpio``h]j )}(hj h]h unsigned gpio}(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:24: ./drivers/gpio/gpiolib.chKhjubj")}(hhh]h)}(hglobal GPIO numberh]hglobal GPIO number}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj@ h]hReturn}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhjubh)}(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 }(hjV hhhNhNubj )}(h``NULL``h]hNULL}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjV ubh7 if no GPIO with the given number exists in the system.}(hjV hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!gpio_device_get_desc (C function)c.gpio_device_get_deschNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhj hKubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj modnameN classnameNjj)}j]j3)}j+gpio_device_get_descsbc.gpio_device_get_descasbuh1hhj hhhj hKubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhj hKubjH)}(hjKh]h*}(hj hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj hhhj hKubjQ)}(hgpio_device_get_desch]jW)}(hj h]hgpio_device_get_desc}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj hhhj hKubjp)}(h.(struct gpio_device *gdev, unsigned int hwnum)h](jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hj!hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj !ubj@)}(h h]h }(hj!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj !ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj/!hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,!ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj1!modnameN classnameNjj)}j]j c.gpio_device_get_descasbuh1hhj !ubj@)}(h h]h }(hjM!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj !ubjH)}(hjKh]h*}(hj[!hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj !ubjW)}(hgdevh]hgdev}(hjh!hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj !ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj !ubjv)}(hunsigned int hwnumh](j|)}(hunsignedh]hunsigned}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj}!ubj@)}(h h]h }(hj!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}!ubj|)}(hinth]hint}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj}!ubj@)}(h h]h }(hj!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}!ubjW)}(hhwnumh]hhwnum}(hj!hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj}!ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj !ubeh}(h]h ]h"]h$]h&]jnjouh1johj hhhj hKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj hhhj hKubah}(h]j ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj hKhj hhubj)}(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:24: ./drivers/gpio/gpiolib.chKhj!hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj!jj!jjjuh1jhhhhhNhNubj)}(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}(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:24: ./drivers/gpio/gpiolib.chKhj!ubj)}(hhh](j)}(hD``struct gpio_device *gdev`` GPIO device to get the descriptor from 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:24: ./drivers/gpio/gpiolib.chKhj"ubj")}(hhh]h)}(h&GPIO device to get the descriptor fromh]h&GPIO device to get the descriptor from}(hj="hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9"hKhj:"ubah}(h]h ]h"]h$]h&]uh1j!hj"ubeh}(h]h ]h"]h$]h&]uh1jhj9"hKhj"ubj)}(hA``unsigned int hwnum`` hardware number of the GPIO for this chip h](j)}(h``unsigned int hwnum``h]j )}(hj]"h]hunsigned int hwnum}(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:24: ./drivers/gpio/gpiolib.chKhjW"ubj")}(hhh]h)}(h)hardware number of the GPIO for this chiph]h)hardware number of the GPIO for this chip}(hjv"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr"hKhjs"ubah}(h]h ]h"]h$]h&]uh1j!hjW"ubeh}(h]h ]h"]h$]h&]uh1jhjr"hKhj"ubeh}(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:24: ./drivers/gpio/gpiolib.chKhj!ubh)}(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}(hj"hhhNhNubah}(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:24: ./drivers/gpio/gpiolib.chKhj!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:24: ./drivers/gpio/gpiolib.chKhj!ubh)}(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 }(hj"hhhNhNubhemphasis)}(h*NOT*h]hNOT}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hj"ubh 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.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jdesc_to_gpio (C function)c.desc_to_gpiohNtauh1j hhhhhNhNubj)}(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}(hj<#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj8#hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKubj@)}(h h]h }(hjK#hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj8#hhhjJ#hKubjQ)}(h desc_to_gpioh]jW)}(h desc_to_gpioh]h desc_to_gpio}(hj]#hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjY#ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj8#hhhjJ#hKubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hconsth]hconst}(hjy#hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hju#ubj@)}(h h]h }(hj#hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hju#ubj.)}(hj1h]hstruct}(hj#hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hju#ubj@)}(h h]h }(hj#hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hju#ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj#hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj#modnameN classnameNjj)}j]j3)}j+j_#sbc.desc_to_gpioasbuh1hhju#ubj@)}(h h]h }(hj#hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hju#ubjH)}(hjKh]h*}(hj#hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhju#ubjW)}(hdesch]hdesc}(hj#hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhju#ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjq#ubah}(h]h ]h"]h$]h&]jnjouh1johj8#hhhjJ#hKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj4#hhhjJ#hKubah}(h]j/#ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjJ#hKhj1#hhubj)}(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:24: ./drivers/gpio/gpiolib.chKhj$hhubah}(h]h ]h"]h$]h&]uh1jhj1#hhhjJ#hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj0$jj0$jjjuh1jhhhhhNhNubj)}(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&]uh1jhj8$ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhj4$ubj)}(hhh]j)}(h1``const struct gpio_desc *desc`` GPIO descriptor h](j)}(h ``const struct gpio_desc *desc``h]j )}(hjY$h]hconst struct gpio_desc *desc}(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:24: ./drivers/gpio/gpiolib.chKhjS$ubj")}(hhh]h)}(hGPIO descriptorh]hGPIO descriptor}(hjr$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjn$hKhjo$ubah}(h]h ]h"]h$]h&]uh1j!hjS$ubeh}(h]h ]h"]h$]h&]uh1jhjn$hKhjP$ubah}(h]h ]h"]h$]h&]uh1jhj4$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:24: ./drivers/gpio/gpiolib.chKhj4$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:24: ./drivers/gpio/gpiolib.chKhj4$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:24: ./drivers/gpio/gpiolib.chKhj4$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.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhj4$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_to_chip (C function)c.gpiod_to_chiphNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj%hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj$hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKubj@)}(h h]h }(hj%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$hhhj %hKubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hj%hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj!%modnameN classnameNjj)}j]j3)}j+ gpiod_to_chipsbc.gpiod_to_chipasbuh1hhj$hhhj %hKubj@)}(h h]h }(hj@%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$hhhj %hKubjH)}(hjKh]h*}(hjN%hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj$hhhj %hKubjQ)}(h gpiod_to_chiph]jW)}(hj=%h]h gpiod_to_chip}(hj_%hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj[%ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj$hhhj %hKubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjz%hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjv%ubj@)}(h h]h }(hj%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjv%ubj.)}(hj1h]hstruct}(hj%hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjv%ubj@)}(h h]h }(hj%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjv%ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj%hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj%modnameN classnameNjj)}j]j;%c.gpiod_to_chipasbuh1hhjv%ubj@)}(h h]h }(hj%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjv%ubjH)}(hjKh]h*}(hj%hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjv%ubjW)}(hdesch]hdesc}(hj%hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjv%ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjr%ubah}(h]h ]h"]h$]h&]jnjouh1johj$hhhj %hKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj$hhhj %hKubah}(h]j$ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj %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:24: ./drivers/gpio/gpiolib.chKhj&hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj %hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj.&jj.&jjjuh1jhhhhhNhNubj)}(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)}(hj8&h]h Parameters}(hj:&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6&ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhj2&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 )}(hjW&h]hconst struct gpio_desc *desc}(hjY&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjU&ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhjQ&ubj")}(hhh]h)}(h descriptor to return the chip ofh]h descriptor to return the chip of}(hjp&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjl&hKhjm&ubah}(h]h ]h"]h$]h&]uh1j!hjQ&ubeh}(h]h ]h"]h$]h&]uh1jhjl&hKhjN&ubah}(h]h ]h"]h$]h&]uh1jhj2&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:24: ./drivers/gpio/gpiolib.chKhj2&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&]uh1j#hj&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:24: ./drivers/gpio/gpiolib.chKhj2&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:24: ./drivers/gpio/gpiolib.chKhj2&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:24: ./drivers/gpio/gpiolib.chKhj2&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!gpiod_to_gpio_device (C function)c.gpiod_to_gpio_devicehNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj 'hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj'hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'hhhj'hMubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj+'hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj('ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj-'modnameN classnameNjj)}j]j3)}j+gpiod_to_gpio_devicesbc.gpiod_to_gpio_deviceasbuh1hhj'hhhj'hMubj@)}(h h]h }(hjL'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'hhhj'hMubjH)}(hjKh]h*}(hjZ'hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj'hhhj'hMubjQ)}(hgpiod_to_gpio_deviceh]jW)}(hjI'h]hgpiod_to_gpio_device}(hjk'hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjg'ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj'hhhj'hMubjp)}(h(struct gpio_desc *desc)h]jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hj'hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj'ubj@)}(h h]h }(hj'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj'hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj'modnameN classnameNjj)}j]jG'c.gpiod_to_gpio_deviceasbuh1hhj'ubj@)}(h h]h }(hj'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'ubjH)}(hjKh]h*}(hj'hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj'ubjW)}(hdesch]hdesc}(hj'hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj'ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj~'ubah}(h]h ]h"]h$]h&]jnjouh1johj'hhhj'hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj'hhhj'hMubah}(h]j&ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj'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:24: ./drivers/gpio/gpiolib.chKhj(hhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj'hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(jj(jjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chKhj#(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 )}(hjH(h]hstruct gpio_desc *desc}(hjJ(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjF(ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chKhjB(ubj")}(hhh]h)}(h/Descriptor for which to return the GPIO device.h]h/Descriptor for which to return the GPIO device.}(hja(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj](hKhj^(ubah}(h]h ]h"]h$]h&]uh1j!hjB(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:24: ./drivers/gpio/gpiolib.chKhj#(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&]uh1j#hj(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:24: ./drivers/gpio/gpiolib.chKhj#(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:24: ./drivers/gpio/gpiolib.chMhj#(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:24: ./drivers/gpio/gpiolib.chMhj#(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!gpio_device_get_base (C function)c.gpio_device_get_basehNtauh1j hhhhhNhNubj)}(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&]uh1j{hj(hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj(hhhj)hMubjQ)}(hgpio_device_get_baseh]jW)}(hgpio_device_get_baseh]hgpio_device_get_base}(hj")hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj)ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj(hhhj)hMubjp)}(h(struct gpio_device *gdev)h]jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hj>)hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj:)ubj@)}(h h]h }(hjK)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:)ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj\)hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjY)ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj^)modnameN classnameNjj)}j]j3)}j+j$)sbc.gpio_device_get_baseasbuh1hhj:)ubj@)}(h h]h }(hj|)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:)ubjH)}(hjKh]h*}(hj)hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj:)ubjW)}(hgdevh]hgdev}(hj)hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj:)ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj6)ubah}(h]h ]h"]h$]h&]jnjouh1johj(hhhj)hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj(hhhj)hMubah}(h]j(ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj)hMhj(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:24: ./drivers/gpio/gpiolib.chM hj)hhubah}(h]h ]h"]h$]h&]uh1jhj(hhhj)hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chMhj)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:24: ./drivers/gpio/gpiolib.chMhj)ubj")}(hhh]h)}(h GPIO deviceh]h GPIO device}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1j!hj)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:24: ./drivers/gpio/gpiolib.chMhj)ubh)}(hAFirst GPIO number in the global GPIO numberspace for this device.h]hAFirst GPIO number in the global GPIO numberspace for this device.}(hjS*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"gpio_device_get_label (C function)c.gpio_device_get_labelhNtauh1j hhhhhNhNubj)}(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](j.)}(hj{#h]hconst}(hj*hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj~*hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM!ubj@)}(h h]h }(hj*hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~*hhhj*hM!ubj|)}(hcharh]hchar}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj~*hhhj*hM!ubj@)}(h h]h }(hj*hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~*hhhj*hM!ubjH)}(hjKh]h*}(hj*hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj~*hhhj*hM!ubjQ)}(hgpio_device_get_labelh]jW)}(hgpio_device_get_labelh]hgpio_device_get_label}(hj*hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj*ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj~*hhhj*hM!ubjp)}(h(struct gpio_device *gdev)h]jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hj*hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj*ubj@)}(h h]h }(hj*hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj*ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj+hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj+modnameN classnameNjj)}j]j3)}j+j*sbc.gpio_device_get_labelasbuh1hhj*ubj@)}(h h]h }(hj%+hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj*ubjH)}(hjKh]h*}(hj3+hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj*ubjW)}(hgdevh]hgdev}(hj@+hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj*ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj*ubah}(h]h ]h"]h$]h&]jnjouh1johj~*hhhj*hM!ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjz*hhhj*hM!ubah}(h]ju*ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj*hM!hjw*hhubj)}(hhh]h)}(h!Get the label of this GPIO deviceh]h!Get the label of this GPIO device}(hjj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjg+hhubah}(h]h ]h"]h$]h&]uh1jhjw*hhhj*hM!ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj+jj+jjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chMhj+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:24: ./drivers/gpio/gpiolib.chMhj+ubj")}(hhh]h)}(h GPIO deviceh]h GPIO device}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j!hj+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:24: ./drivers/gpio/gpiolib.chMhj+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:24: ./drivers/gpio/gpiolib.chMhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!gpio_device_get_chip (C function)c.gpio_device_get_chiphNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj+,hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj',hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM7ubj@)}(h h]h }(hj9,hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj',hhhj8,hM7ubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjJ,hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjG,ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjL,modnameN classnameNjj)}j]j3)}j+gpio_device_get_chipsbc.gpio_device_get_chipasbuh1hhj',hhhj8,hM7ubj@)}(h h]h }(hjk,hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj',hhhj8,hM7ubjH)}(hjKh]h*}(hjy,hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj',hhhj8,hM7ubjQ)}(hgpio_device_get_chiph]jW)}(hjh,h]hgpio_device_get_chip}(hj,hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj',hhhj8,hM7ubjp)}(h(struct gpio_device *gdev)h]jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hj,hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj,ubj@)}(h h]h }(hj,hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj,hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj,modnameN classnameNjj)}j]jf,c.gpio_device_get_chipasbuh1hhj,ubj@)}(h h]h }(hj,hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubjH)}(hjKh]h*}(hj,hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj,ubjW)}(hgdevh]hgdev}(hj,hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj,ubah}(h]h ]h"]h$]h&]jnjouh1johj',hhhj8,hM7ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj#,hhhj8,hM7ubah}(h]j,ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj8,hM7hj ,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:24: ./drivers/gpio/gpiolib.chM(hj#-hhubah}(h]h ]h"]h$]h&]uh1jhj ,hhhj8,hM7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj>-jj>-jjjuh1jhhhhhNhNubj)}(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)}(hjH-h]h Parameters}(hjJ-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF-ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM,hjB-ubj)}(hhh]j)}(h)``struct gpio_device *gdev`` GPIO device h](j)}(h``struct gpio_device *gdev``h]j )}(hjg-h]hstruct gpio_device *gdev}(hji-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hje-ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM)hja-ubj")}(hhh]h)}(h GPIO deviceh]h GPIO device}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|-hM)hj}-ubah}(h]h ]h"]h$]h&]uh1j!hja-ubeh}(h]h ]h"]h$]h&]uh1jhj|-hM)hj^-ubah}(h]h ]h"]h$]h&]uh1jhjB-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:24: ./drivers/gpio/gpiolib.chM+hjB-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:24: ./drivers/gpio/gpiolib.chM+hjB-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:24: ./drivers/gpio/gpiolib.chM-hjB-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&]uh1j#hj-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&]uh1j#hj-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:24: ./drivers/gpio/gpiolib.chM.hjB-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:24: ./drivers/gpio/gpiolib.chM5hjB-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gpiod_get_direction (C function)c.gpiod_get_directionhNtauh1j hhhhhNhNubj)}(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&]uh1j{hj9.hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMuubj@)}(h h]h }(hjL.hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj9.hhhjK.hMuubjQ)}(hgpiod_get_directionh]jW)}(hgpiod_get_directionh]hgpiod_get_direction}(hj^.hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjZ.ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj9.hhhjK.hMuubjp)}(h(struct gpio_desc *desc)h]jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjz.hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjv.ubj@)}(h h]h }(hj.hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjv.ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj.hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj.modnameN classnameNjj)}j]j3)}j+j`.sbc.gpiod_get_directionasbuh1hhjv.ubj@)}(h h]h }(hj.hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjv.ubjH)}(hjKh]h*}(hj.hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjv.ubjW)}(hdesch]hdesc}(hj.hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjv.ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjr.ubah}(h]h ]h"]h$]h&]jnjouh1johj9.hhhjK.hMuubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj5.hhhjK.hMuubah}(h]j0.ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjK.hMuhj2.hhubj)}(hhh]h)}(h&return the current direction of a GPIOh]h&return the current direction of a GPIO}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMmhj.hhubah}(h]h ]h"]h$]h&]uh1jhj2.hhhjK.hMuubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chMqhj/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 hjbitmap representing valid GPIOs or NULL if all GPIOs are validh]h>bitmap representing valid GPIOs or NULL if all GPIOs are valid}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj 1ubh)}(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:24: ./drivers/gpio/gpiolib.chMhj 1ubh)}(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.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj 1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiochip_get_data (C function)c.gpiochip_get_datahNtauh1j hhhhhNhNubj)}(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}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj1hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj1hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj1hhhj1hMubjH)}(hjKh]h*}(hj 2hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj1hhhj1hMubjQ)}(hgpiochip_get_datah]jW)}(hgpiochip_get_datah]hgpiochip_get_data}(hj2hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj2ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj1hhhj1hMubjp)}(h(struct gpio_chip *gc)h]jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hj62hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj22ubj@)}(h h]h }(hjC2hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj22ubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjT2hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjQ2ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjV2modnameN classnameNjj)}j]j3)}j+j2sbc.gpiochip_get_dataasbuh1hhj22ubj@)}(h h]h }(hjt2hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj22ubjH)}(hjKh]h*}(hj2hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj22ubjW)}(hgch]hgc}(hj2hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj22ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj.2ubah}(h]h ]h"]h$]h&]jnjouh1johj1hhhj1hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj1hhhj1hMubah}(h]j1ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj1hMhj1hhubj)}(hhh]h)}(h#get per-subdriver data for the chiph]h#get per-subdriver data for the chip}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj2hhubah}(h]h ]h"]h$]h&]uh1jhj1hhhj1hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj2jj2jjjuh1jhhhhhNhNubj)}(hf**Parameters** ``struct gpio_chip *gc`` GPIO chip **Return** The per-subdriver data for the chip.h](h)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj2ubj)}(hhh]j)}(h#``struct gpio_chip *gc`` GPIO chip h](j)}(h``struct gpio_chip *gc``h]j )}(hj2h]hstruct gpio_chip *gc}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj2ubj")}(hhh]h)}(h GPIO chiph]h GPIO chip}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1j!hj2ubeh}(h]h ]h"]h$]h&]uh1jhj3hMhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h **Return**h]j)}(hj53h]hReturn}(hj73hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj33ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj2ubh)}(h$The per-subdriver data for the chip.h]h$The per-subdriver data for the chip.}(hjK3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiochip_remove (C function)c.gpiochip_removehNtauh1j hhhhhNhNubj)}(hhh](j")}(h+void gpiochip_remove (struct gpio_chip *gc)h]j()}(h*void gpiochip_remove(struct gpio_chip *gc)h](j|)}(hvoidh]hvoid}(hjz3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjv3hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj3hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjv3hhhj3hMubjQ)}(hgpiochip_removeh]jW)}(hgpiochip_removeh]hgpiochip_remove}(hj3hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj3ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjv3hhhj3hMubjp)}(h(struct gpio_chip *gc)h]jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hj3hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj3ubj@)}(h h]h }(hj3hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj3ubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hj3hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj3modnameN classnameNjj)}j]j3)}j+j3sbc.gpiochip_removeasbuh1hhj3ubj@)}(h h]h }(hj3hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj3ubjH)}(hjKh]h*}(hj4hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj3ubjW)}(hgch]hgc}(hj4hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj3ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj3ubah}(h]h ]h"]h$]h&]jnjouh1johjv3hhhj3hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjr3hhhj3hMubah}(h]jm3ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj3hMhjo3hhubj)}(hhh]h)}(hunregister a gpio_chiph]hunregister a gpio_chip}(hj:4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj74hhubah}(h]h ]h"]h$]h&]uh1jhjo3hhhj3hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjR4jjR4jjjuh1jhhhhhNhNubj)}(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)}(hj\4h]h Parameters}(hj^4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ4ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjV4ubj)}(hhh]j)}(h0``struct gpio_chip *gc`` the chip to unregister h](j)}(h``struct gpio_chip *gc``h]j )}(hj{4h]hstruct gpio_chip *gc}(hj}4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjy4ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhju4ubj")}(hhh]h)}(hthe chip to unregisterh]hthe chip to unregister}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hMhj4ubah}(h]h ]h"]h$]h&]uh1j!hju4ubeh}(h]h ]h"]h$]h&]uh1jhj4hMhjr4ubah}(h]h ]h"]h$]h&]uh1jhjV4ubh)}(h**Description**h]j)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjV4ubh)}(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.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjV4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpio_device_find (C function)c.gpio_device_findhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj4hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj4hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj 5hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj4hhhj5hMubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj5hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj5modnameN classnameNjj)}j]j3)}j+gpio_device_findsbc.gpio_device_findasbuh1hhj4hhhj5hMubj@)}(h h]h }(hj;5hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj4hhhj5hMubjH)}(hjKh]h*}(hjI5hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj4hhhj5hMubjQ)}(hgpio_device_findh]jW)}(hj85h]hgpio_device_find}(hjZ5hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjV5ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj4hhhj5hMubjp)}(hH(const void *data, int (*match)(struct gpio_chip *gc, const void *data))h](jv)}(hconst void *datah](j.)}(hj{#h]hconst}(hju5hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjq5ubj@)}(h h]h }(hj5hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjq5ubj|)}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjq5ubj@)}(h h]h }(hj5hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjq5ubjH)}(hjKh]h*}(hj5hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjq5ubjW)}(hdatah]hdata}(hj5hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjq5ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjm5ubjv)}(h4int (*match)(struct gpio_chip *gc, const void *data)h](j|)}(hinth]hint}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj5ubj@)}(h h]h }(hj5hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubjH)}(h(h]h(}(hj5hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubjH)}(hjKh]h*}(hj5hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubjW)}(hmatchh]hmatch}(hj 6hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj5ubjH)}(h)h]h)}(hj6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubjH)}(hj5h]h(}(hj%6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubj.)}(hj1h]hstruct}(hj26hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj5ubj@)}(h h]h }(hj?6hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjP6hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjM6ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjR6modnameN classnameNjj)}j]j65c.gpio_device_findasbuh1hhj5ubj@)}(h h]h }(hjn6hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubjH)}(hjKh]h*}(hj|6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubjW)}(hgch]hgc}(hj6hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj5ubjH)}(h,h]h,}(hj6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubj@)}(h h]h }(hj6hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubj.)}(hj{#h]hconst}(hj6hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj5ubj@)}(h h]h }(hj6hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubj|)}(hvoidh]hvoid}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj5ubj@)}(h h]h }(hj6hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubjH)}(hjKh]h*}(hj6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubjW)}(hdatah]hdata}(hj6hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj5ubjH)}(hj6h]h)}(hj7hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj5ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjm5ubeh}(h]h ]h"]h$]h&]jnjouh1johj4hhhj5hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj4hhhj5hMubah}(h]j4ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj5hMhj4hhubj)}(hhh]h)}(hfind a specific GPIO deviceh]hfind a specific GPIO device}(hj.7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj+7hhubah}(h]h ]h"]h$]h&]uh1jhj4hhhj5hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjF7jjF7jjjuh1jhhhhhNhNubj)}(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)}(hjP7h]h Parameters}(hjR7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN7ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubj)}(hhh](j)}(h4``const void *data`` data to pass to match function h](j)}(h``const void *data``h]j )}(hjo7h]hconst void *data}(hjq7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjm7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhji7ubj")}(hhh]h)}(hdata to pass to match functionh]hdata to pass to match function}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j!hji7ubeh}(h]h ]h"]h$]h&]uh1jhj7hMhjf7ubj)}(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 )}(hj7h]h4int (*match)(struct gpio_chip *gc, const void *data)}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj7ubj")}(hhh]h)}(h$Callback function to check gpio_chiph]h$Callback function to check gpio_chip}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j!hj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hMhjf7ubeh}(h]h ]h"]h$]h&]uh1jhjJ7ubh)}(h **Return**h]j)}(hj7h]hReturn}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubh)}(h$New reference to struct gpio_device.h]h$New reference to struct gpio_device.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubh)}(h**Description**h]j)}(hj 8h]h Description}(hj 8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubh)}(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 8hhhNhNubj)}(h **match**h]hmatch}(hj(8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 8ubh 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 8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubh)}(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.}(hjA8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubh)}(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().}(hjP8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjJ7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j&gpio_device_find_by_label (C function)c.gpio_device_find_by_labelhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj8hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj{8hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM+ubj@)}(h h]h }(hj8hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj{8hhhj8hM+ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj8hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj8modnameN classnameNjj)}j]j3)}j+gpio_device_find_by_labelsbc.gpio_device_find_by_labelasbuh1hhj{8hhhj8hM+ubj@)}(h h]h }(hj8hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj{8hhhj8hM+ubjH)}(hjKh]h*}(hj8hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj{8hhhj8hM+ubjQ)}(hgpio_device_find_by_labelh]jW)}(hj8h]hgpio_device_find_by_label}(hj8hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj8ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj{8hhhj8hM+ubjp)}(h(const char *label)h]jv)}(hconst char *labelh](j.)}(hj{#h]hconst}(hj8hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj8ubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj8ubj|)}(hcharh]hchar}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj8ubj@)}(h h]h }(hj"9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj8ubjH)}(hjKh]h*}(hj09hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj8ubjW)}(hlabelh]hlabel}(hj=9hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj8ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj8ubah}(h]h ]h"]h$]h&]jnjouh1johj{8hhhj8hM+ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjw8hhhj8hM+ubah}(h]jr8ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj8hM+hjt8hhubj)}(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}(hjg9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM#hjd9hhubah}(h]h ]h"]h$]h&]uh1jhjt8hhhj8hM+ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9jj9jjjuh1jhhhhhNhNubj)}(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)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM'hj9ubj)}(hhh]j)}(h&``const char *label`` Label to lookup h](j)}(h``const char *label``h]j )}(hj9h]hconst char *label}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM%hj9ubj")}(hhh]h)}(hLabel to lookuph]hLabel to lookup}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hM%hj9ubah}(h]h ]h"]h$]h&]uh1j!hj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hM%hj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubh)}(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:24: ./drivers/gpio/gpiolib.chM'hj9ubh)}(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().}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM'hj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j'gpio_device_find_by_fwnode (C function)c.gpio_device_find_by_fwnodehNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj(:hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj$:hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM?ubj@)}(h h]h }(hj6:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$:hhhj5:hM?ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hjG:hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjD:ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjI:modnameN classnameNjj)}j]j3)}j+gpio_device_find_by_fwnodesbc.gpio_device_find_by_fwnodeasbuh1hhj$:hhhj5:hM?ubj@)}(h h]h }(hjh:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$:hhhj5:hM?ubjH)}(hjKh]h*}(hjv:hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj$:hhhj5:hM?ubjQ)}(hgpio_device_find_by_fwnodeh]jW)}(hje:h]hgpio_device_find_by_fwnode}(hj:hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj:ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj$:hhhj5:hM?ubjp)}(h$(const struct fwnode_handle *fwnode)h]jv)}(h"const struct fwnode_handle *fwnodeh](j.)}(hj{#h]hconst}(hj:hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj:ubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:ubj.)}(hj1h]hstruct}(hj:hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj:ubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:ubh)}(hhh]jW)}(h fwnode_handleh]h fwnode_handle}(hj:hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj:modnameN classnameNjj)}j]jc:c.gpio_device_find_by_fwnodeasbuh1hhj:ubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:ubjH)}(hjKh]h*}(hj;hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj:ubjW)}(hfwnodeh]hfwnode}(hj;hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj:ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj:ubah}(h]h ]h"]h$]h&]jnjouh1johj$:hhhj5:hM?ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj :hhhj5:hM?ubah}(h]j:ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj5:hM?hj: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}(hj>;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM7hj;;hhubah}(h]h ]h"]h$]h&]uh1jhj:hhhj5:hM?ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjV;jjV;jjjuh1jhhhhhNhNubj)}(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)}(hj`;h]h Parameters}(hjb;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^;ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM;hjZ;ubj)}(hhh]j)}(h?``const struct fwnode_handle *fwnode`` Firmware node to lookup h](j)}(h&``const struct fwnode_handle *fwnode``h]j )}(hj;h]h"const struct 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:24: ./drivers/gpio/gpiolib.chM9hjy;ubj")}(hhh]h)}(hFirmware node to lookuph]hFirmware node to lookup}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hM9hj;ubah}(h]h ]h"]h$]h&]uh1j!hjy;ubeh}(h]h ]h"]h$]h&]uh1jhj;hM9hjv;ubah}(h]h ]h"]h$]h&]uh1jhjZ;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:24: ./drivers/gpio/gpiolib.chM;hjZ;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:24: ./drivers/gpio/gpiolib.chM;hjZ;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpio_device_get (C function)c.gpio_device_gethNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj;hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj;hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMLubj@)}(h h]h }(hj <hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;hhhj <hMLubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj<hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj <modnameN classnameNjj)}j]j3)}j+gpio_device_getsbc.gpio_device_getasbuh1hhj;hhhj <hMLubj@)}(h h]h }(hj?<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;hhhj <hMLubjH)}(hjKh]h*}(hjM<hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj;hhhj <hMLubjQ)}(hgpio_device_geth]jW)}(hj<<h]hgpio_device_get}(hj^<hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjZ<ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj;hhhj <hMLubjp)}(h(struct gpio_device *gdev)h]jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hjy<hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hju<ubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hju<ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj<hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj<modnameN classnameNjj)}j]j:<c.gpio_device_getasbuh1hhju<ubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hju<ubjH)}(hjKh]h*}(hj<hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhju<ubjW)}(hgdevh]hgdev}(hj<hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhju<ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjq<ubah}(h]h ]h"]h$]h&]jnjouh1johj;hhhj <hMLubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj;hhhj <hMLubah}(h]j;ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj <hMLhj;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:24: ./drivers/gpio/gpiolib.chMFhj<hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhj <hMLubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=jj=jjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chMJhj=ubj)}(hhh]j)}(hF``struct gpio_device *gdev`` GPIO device to increase the refcount for h](j)}(h``struct gpio_device *gdev``h]j )}(hj;=h]hstruct gpio_device *gdev}(hj==hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9=ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMGhj5=ubj")}(hhh]h)}(h(GPIO device to increase the refcount forh]h(GPIO device to increase the refcount for}(hjT=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP=hMGhjQ=ubah}(h]h ]h"]h$]h&]uh1j!hj5=ubeh}(h]h ]h"]h$]h&]uh1jhjP=hMGhj2=ubah}(h]h ]h"]h$]h&]uh1jhj=ubh)}(h **Return**h]j)}(hjv=h]hReturn}(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:24: ./drivers/gpio/gpiolib.chMIhj=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:24: ./drivers/gpio/gpiolib.chMIhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpio_device_put (C function)c.gpio_device_puthNtauh1j hhhhhNhNubj)}(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&]uh1j{hj=hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMWubj@)}(h h]h }(hj=hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj=hhhj=hMWubjQ)}(hgpio_device_puth]jW)}(hgpio_device_puth]hgpio_device_put}(hj=hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj=ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj=hhhj=hMWubjp)}(h(struct gpio_device *gdev)h]jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hj >hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj>ubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj(>hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj%>ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj*>modnameN classnameNjj)}j]j3)}j+j=sbc.gpio_device_putasbuh1hhj>ubj@)}(h h]h }(hjH>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>ubjH)}(hjKh]h*}(hjV>hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj>ubjW)}(hgdevh]hgdev}(hjc>hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj>ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj>ubah}(h]h ]h"]h$]h&]jnjouh1johj=hhhj=hMWubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj=hhhj=hMWubah}(h]j=ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj=hMWhj=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:24: ./drivers/gpio/gpiolib.chMShj>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj=hMWubeh}(h]h ](jfunctioneh"]h$]h&]jjjj>jj>jjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chMWhj>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:24: ./drivers/gpio/gpiolib.chMYhj>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:24: ./drivers/gpio/gpiolib.chMUhj>ubah}(h]h ]h"]h$]h&]uh1j!hj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hMYhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"gpio_device_to_device (C function)c.gpio_device_to_devicehNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj(?hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj$?hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhubj@)}(h h]h }(hj6?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$?hhhj5?hMhubh)}(hhh]jW)}(hdeviceh]hdevice}(hjG?hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjD?ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjI?modnameN classnameNjj)}j]j3)}j+gpio_device_to_devicesbc.gpio_device_to_deviceasbuh1hhj$?hhhj5?hMhubj@)}(h h]h }(hjh?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$?hhhj5?hMhubjH)}(hjKh]h*}(hjv?hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj$?hhhj5?hMhubjQ)}(hgpio_device_to_deviceh]jW)}(hje?h]hgpio_device_to_device}(hj?hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj?ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj$?hhhj5?hMhubjp)}(h(struct gpio_device *gdev)h]jv)}(hstruct gpio_device *gdevh](j.)}(hj1h]hstruct}(hj?hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj?ubj@)}(h h]h }(hj?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj?ubh)}(hhh]jW)}(h gpio_deviceh]h gpio_device}(hj?hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj?modnameN classnameNjj)}j]jc?c.gpio_device_to_deviceasbuh1hhj?ubj@)}(h h]h }(hj?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj?ubjH)}(hjKh]h*}(hj?hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj?ubjW)}(hgdevh]hgdev}(hj?hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj?ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj?ubah}(h]h ]h"]h$]h&]jnjouh1johj$?hhhj5?hMhubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj ?hhhj5?hMhubah}(h]j?ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj5?hMhhj?hhubj)}(hhh]h)}(h5Retrieve the address of the underlying struct device.h]h5Retrieve the address of the underlying struct device.}(hj#@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM^hj @hhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj5?hMhubeh}(h]h ](jfunctioneh"]h$]h&]jjjj;@jj;@jjjuh1jhhhhhNhNubj)}(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)}(hjE@h]h Parameters}(hjG@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC@ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMbhj?@ubj)}(hhh]j)}(hJ``struct gpio_device *gdev`` GPIO device for which to return the address. h](j)}(h``struct gpio_device *gdev``h]j )}(hjd@h]hstruct gpio_device *gdev}(hjf@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjb@ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM`hj^@ubj")}(hhh]h)}(h,GPIO device for which to return the address.h]h,GPIO device for which to return the address.}(hj}@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjy@hM`hjz@ubah}(h]h ]h"]h$]h&]uh1j!hj^@ubeh}(h]h ]h"]h$]h&]uh1jhjy@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:24: ./drivers/gpio/gpiolib.chMbhj?@ubh)}(h_This does not increase the reference count of the GPIO device nor the underlying struct device.h]h_This does not increase the reference count of the GPIO device nor the underlying struct device.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMbhj?@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:24: ./drivers/gpio/gpiolib.chMehj?@ubh)}(h2Address of struct device backing this GPIO device.h]h2Address of struct device backing this GPIO device.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMehj?@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j(gpiochip_irqchip_add_domain (C function)c.gpiochip_irqchip_add_domainhNtauh1j hhhhhNhNubj)}(hhh](j")}(hQint gpiochip_irqchip_add_domain (struct gpio_chip *gc, struct irq_domain *domain)h]j()}(hPint gpiochip_irqchip_add_domain(struct gpio_chip *gc, struct irq_domain *domain)h](j|)}(hinth]hint}(hj AhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjAhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMbubj@)}(h h]h }(hjAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAhhhjAhMbubjQ)}(hgpiochip_irqchip_add_domainh]jW)}(hgpiochip_irqchip_add_domainh]hgpiochip_irqchip_add_domain}(hj,AhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj(Aubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjAhhhjAhMbubjp)}(h1(struct gpio_chip *gc, struct irq_domain *domain)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjHAhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjDAubj@)}(h h]h }(hjUAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjDAubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjfAhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjcAubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjhAmodnameN classnameNjj)}j]j3)}j+j.Asbc.gpiochip_irqchip_add_domainasbuh1hhjDAubj@)}(h h]h }(hjAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjDAubjH)}(hjKh]h*}(hjAhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjDAubjW)}(hgch]hgc}(hjAhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjDAubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj@Aubjv)}(hstruct irq_domain *domainh](j.)}(hj1h]hstruct}(hjAhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjAubj@)}(h h]h }(hjAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAubh)}(hhh]jW)}(h irq_domainh]h irq_domain}(hjAhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjAmodnameN classnameNjj)}j]jAc.gpiochip_irqchip_add_domainasbuh1hhjAubj@)}(h h]h }(hjAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAubjH)}(hjKh]h*}(hjBhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjAubjW)}(hdomainh]hdomain}(hjBhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjAubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj@Aubeh}(h]h ]h"]h$]h&]jnjouh1johjAhhhjAhMbubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjAhhhjAhMbubah}(h]j@ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjAhMbhjAhhubj)}(hhh]h)}(hadds an irqdomain to a gpiochiph]hadds an irqdomain to a gpiochip}(hj;BhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMYhj8Bhhubah}(h]h ]h"]h$]h&]uh1jhjAhhhjAhMbubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSBjjSBjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct gpio_chip *gc`` the gpiochip to add the irqchip to ``struct irq_domain *domain`` the irqdomain to add to the gpiochip **Description** This function adds an IRQ domain to the gpiochip. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hj]Bh]h Parameters}(hj_BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[Bubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM]hjWBubj)}(hhh](j)}(h<``struct gpio_chip *gc`` the gpiochip to add the irqchip to h](j)}(h``struct gpio_chip *gc``h]j )}(hj|Bh]hstruct gpio_chip *gc}(hj~BhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjzBubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMZhjvBubj")}(hhh]h)}(h"the gpiochip to add the irqchip toh]h"the gpiochip to add the irqchip to}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMZhjBubah}(h]h ]h"]h$]h&]uh1j!hjvBubeh}(h]h ]h"]h$]h&]uh1jhjBhMZhjsBubj)}(hC``struct irq_domain *domain`` the irqdomain to add to the gpiochip h](j)}(h``struct irq_domain *domain``h]j )}(hjBh]hstruct irq_domain *domain}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjBubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM[hjBubj")}(hhh]h)}(h$the irqdomain to add to the gpiochiph]h$the irqdomain to add to the gpiochip}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM[hjBubah}(h]h ]h"]h$]h&]uh1j!hjBubeh}(h]h ]h"]h$]h&]uh1jhjBhM[hjsBubeh}(h]h ]h"]h$]h&]uh1jhjWBubh)}(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:24: ./drivers/gpio/gpiolib.chM]hjWBubh)}(h1This function adds an IRQ domain to the gpiochip.h]h1This function adds an IRQ domain to the gpiochip.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM]hjWBubh)}(h **Return**h]j)}(hjCh]hReturn}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM_hjWBubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj-ChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM_hjWBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j%gpiochip_generic_request (C function)c.gpiochip_generic_requesthNtauh1j hhhhhNhNubj)}(hhh](j")}(hHint gpiochip_generic_request (struct gpio_chip *gc, unsigned int offset)h]j()}(hGint gpiochip_generic_request(struct gpio_chip *gc, unsigned int offset)h](j|)}(hinth]hint}(hj\ChhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjXChhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjkChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjXChhhjjChMubjQ)}(hgpiochip_generic_requesth]jW)}(hgpiochip_generic_requesth]hgpiochip_generic_request}(hj}ChhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjyCubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjXChhhjjChMubjp)}(h+(struct gpio_chip *gc, unsigned int offset)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjChhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjCubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjChhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjCubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjCmodnameN classnameNjj)}j]j3)}j+jCsbc.gpiochip_generic_requestasbuh1hhjCubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubjH)}(hjKh]h*}(hjChhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjCubjW)}(hgch]hgc}(hjChhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjCubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjCubjv)}(hunsigned int offseth](j|)}(hunsignedh]hunsigned}(hj DhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjDubj@)}(h h]h }(hjDhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjDubj|)}(hinth]hint}(hj'DhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjDubj@)}(h h]h }(hj5DhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjDubjW)}(hoffseth]hoffset}(hjCDhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjDubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjCubeh}(h]h ]h"]h$]h&]jnjouh1johjXChhhjjChMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjTChhhjjChMubah}(h]jOCah ](j|j}eh"]h$]h&]jj)jhuh1j!hjjChMhjQChhubj)}(hhh]h)}(h#request the gpio function for a pinh]h#request the gpio function for a pin}(hjmDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjjDhhubah}(h]h ]h"]h$]h&]uh1jhjQChhhjjChMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjDjjDjjjuh1jhhhhhNhNubj)}(h**Parameters** ``struct gpio_chip *gc`` the gpiochip owning the GPIO ``unsigned int offset`` the offset of the GPIO to request for GPIO function **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjDh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjDubj)}(hhh](j)}(h6``struct gpio_chip *gc`` the gpiochip owning the GPIO h](j)}(h``struct gpio_chip *gc``h]j )}(hjDh]hstruct gpio_chip *gc}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjDubj")}(hhh]h)}(hthe gpiochip owning the GPIOh]hthe gpiochip owning the GPIO}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1j!hjDubeh}(h]h ]h"]h$]h&]uh1jhjDhMhjDubj)}(hL``unsigned int offset`` the offset of the GPIO to request for GPIO function h](j)}(h``unsigned int offset``h]j )}(hjDh]hunsigned int offset}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjDubj")}(hhh]h)}(h3the offset of the GPIO to request for GPIO functionh]h3the offset of the GPIO to request for GPIO function}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1j!hjDubeh}(h]h ]h"]h$]h&]uh1jhjDhMhjDubeh}(h]h ]h"]h$]h&]uh1jhjDubh)}(h **Return**h]j)}(hj"Eh]hReturn}(hj$EhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Eubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjDubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj8EhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"gpiochip_generic_free (C function)c.gpiochip_generic_freehNtauh1j hhhhhNhNubj)}(hhh](j")}(hFvoid gpiochip_generic_free (struct gpio_chip *gc, unsigned int offset)h]j()}(hEvoid gpiochip_generic_free(struct gpio_chip *gc, unsigned int offset)h](j|)}(hvoidh]hvoid}(hjgEhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjcEhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjvEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjcEhhhjuEhMubjQ)}(hgpiochip_generic_freeh]jW)}(hgpiochip_generic_freeh]hgpiochip_generic_free}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjEubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjcEhhhjuEhMubjp)}(h+(struct gpio_chip *gc, unsigned int offset)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjEhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjEubj@)}(h h]h }(hjEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjEmodnameN classnameNjj)}j]j3)}j+jEsbc.gpiochip_generic_freeasbuh1hhjEubj@)}(h h]h }(hjEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEubjH)}(hjKh]h*}(hjEhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjEubjW)}(hgch]hgc}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjEubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjEubjv)}(hunsigned int offseth](j|)}(hunsignedh]hunsigned}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjFubj@)}(h h]h }(hj$FhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjFubj|)}(hinth]hint}(hj2FhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjFubj@)}(h h]h }(hj@FhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjFubjW)}(hoffseth]hoffset}(hjNFhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjFubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjEubeh}(h]h ]h"]h$]h&]jnjouh1johjcEhhhjuEhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj_EhhhjuEhMubah}(h]jZEah ](j|j}eh"]h$]h&]jj)jhuh1j!hjuEhMhj\Ehhubj)}(hhh]h)}(h!free the gpio function from a pinh]h!free the gpio function from a pin}(hjxFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjuFhhubah}(h]h ]h"]h$]h&]uh1jhj\EhhhjuEhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjFjjFjjjuh1jhhhhhNhNubj)}(h**Parameters** ``struct gpio_chip *gc`` the gpiochip to request the gpio function for ``unsigned int offset`` the offset of the GPIO to free from GPIO functionh](h)}(h**Parameters**h]j)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjFubj)}(hhh](j)}(hG``struct gpio_chip *gc`` the gpiochip to request the gpio function for h](j)}(h``struct gpio_chip *gc``h]j )}(hjF+h]hstruct gpio_chip *gc}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjFubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjFubj")}(hhh]h)}(h-the gpiochip to request the gpio function forh]h-the gpiochip to request the gpio function for}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjFubah}(h]h ]h"]h$]h&]uh1j!hjFubeh}(h]h ]h"]h$]h&]uh1jhjFhMhjFubj)}(hI``unsigned int offset`` the offset of the GPIO to free from GPIO functionh](j)}(h``unsigned int offset``h]j )}(hjFh]hunsigned int offset}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjFubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjFubj")}(hhh]h)}(h1the offset of the GPIO to free from GPIO functionh]h1the offset of the GPIO to free from GPIO function}(hj GhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjGubah}(h]h ]h"]h$]h&]uh1j!hjFubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjFubeh}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j$gpiochip_generic_config (C function)c.gpiochip_generic_confighNtauh1j hhhhhNhNubj)}(hhh](j")}(h]int gpiochip_generic_config (struct gpio_chip *gc, unsigned int offset, unsigned long config)h]j()}(h\int gpiochip_generic_config(struct gpio_chip *gc, unsigned int offset, unsigned long config)h](j|)}(hinth]hint}(hjLGhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjHGhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj[GhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjHGhhhjZGhMubjQ)}(hgpiochip_generic_configh]jW)}(hgpiochip_generic_configh]hgpiochip_generic_config}(hjmGhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjiGubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjHGhhhjZGhMubjp)}(hA(struct gpio_chip *gc, unsigned int offset, unsigned long config)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjGhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjGubj@)}(h h]h }(hjGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjGhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjGmodnameN classnameNjj)}j]j3)}j+joGsbc.gpiochip_generic_configasbuh1hhjGubj@)}(h h]h }(hjGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubjH)}(hjKh]h*}(hjGhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjGubjW)}(hgch]hgc}(hjGhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjGubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjGubjv)}(hunsigned int offseth](j|)}(hunsignedh]hunsigned}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjGubj@)}(h h]h }(hj HhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubj|)}(hinth]hint}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjGubj@)}(h h]h }(hj%HhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubjW)}(hoffseth]hoffset}(hj3HhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjGubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjGubjv)}(hunsigned long configh](j|)}(hunsignedh]hunsigned}(hjLHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjHHubj@)}(h h]h }(hjZHhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjHHubj|)}(hlongh]hlong}(hjhHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjHHubj@)}(h h]h }(hjvHhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjHHubjW)}(hconfigh]hconfig}(hjHhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjHHubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjGubeh}(h]h ]h"]h$]h&]jnjouh1johjHGhhhjZGhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjDGhhhjZGhMubah}(h]j?Gah ](j|j}eh"]h$]h&]jj)jhuh1j!hjZGhMhjAGhhubj)}(hhh]h)}(happly configuration for a pinh]happly configuration for a pin}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjHhhubah}(h]h ]h"]h$]h&]uh1jhjAGhhhjZGhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHjjHjjjuh1jhhhhhNhNubj)}(hX **Parameters** ``struct gpio_chip *gc`` the gpiochip owning the GPIO ``unsigned int offset`` the offset of the GPIO to apply the configuration ``unsigned long config`` the configuration to be applied **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjHh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjHubj)}(hhh](j)}(h6``struct gpio_chip *gc`` the gpiochip owning the GPIO h](j)}(h``struct gpio_chip *gc``h]j )}(hjHh]hstruct gpio_chip *gc}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjHubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjHubj")}(hhh]h)}(hthe gpiochip owning the GPIOh]hthe gpiochip owning the GPIO}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjIubah}(h]h ]h"]h$]h&]uh1j!hjHubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjHubj)}(hJ``unsigned int offset`` the offset of the GPIO to apply the configuration h](j)}(h``unsigned int offset``h]j )}(hj(Ih]hunsigned int offset}(hj*IhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&Iubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj"Iubj")}(hhh]h)}(h1the offset of the GPIO to apply the configurationh]h1the offset of the GPIO to apply the configuration}(hjAIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=IhMhj>Iubah}(h]h ]h"]h$]h&]uh1j!hj"Iubeh}(h]h ]h"]h$]h&]uh1jhj=IhMhjHubj)}(h9``unsigned long config`` the configuration to be applied h](j)}(h``unsigned long config``h]j )}(hjaIh]hunsigned long config}(hjcIhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_Iubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj[Iubj")}(hhh]h)}(hthe configuration to be appliedh]hthe configuration to be applied}(hjzIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvIhMhjwIubah}(h]h ]h"]h$]h&]uh1j!hj[Iubeh}(h]h ]h"]h$]h&]uh1jhjvIhMhjHubeh}(h]h ]h"]h$]h&]uh1jhjHubh)}(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:24: ./drivers/gpio/gpiolib.chMhjHubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j(gpiochip_add_pingroup_range (C function)c.gpiochip_add_pingroup_rangehNtauh1j hhhhhNhNubj)}(hhh](j")}(hint gpiochip_add_pingroup_range (struct gpio_chip *gc, struct pinctrl_dev *pctldev, unsigned int gpio_offset, const char *pin_group)h]j()}(hint gpiochip_add_pingroup_range(struct gpio_chip *gc, struct pinctrl_dev *pctldev, unsigned int gpio_offset, const char *pin_group)h](j|)}(hinth]hint}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjIhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjIhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjIhhhjIhMubjQ)}(hgpiochip_add_pingroup_rangeh]jW)}(hgpiochip_add_pingroup_rangeh]hgpiochip_add_pingroup_range}(hjJhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjIubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjIhhhjIhMubjp)}(hd(struct gpio_chip *gc, struct pinctrl_dev *pctldev, unsigned int gpio_offset, const char *pin_group)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjJhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjJubj@)}(h h]h }(hj+JhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjJmodnameN classnameNjj)}j]j3)}j+jJsbc.gpiochip_add_pingroup_rangeasbuh1hhjJubj@)}(h h]h }(hj\JhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJubjH)}(hjKh]h*}(hjjJhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjJubjW)}(hgch]hgc}(hjwJhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjJubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjJubjv)}(hstruct pinctrl_dev *pctldevh](j.)}(hj1h]hstruct}(hjJhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjJubj@)}(h h]h }(hjJhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJubh)}(hhh]jW)}(h pinctrl_devh]h pinctrl_dev}(hjJhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjJmodnameN classnameNjj)}j]jXJc.gpiochip_add_pingroup_rangeasbuh1hhjJubj@)}(h h]h }(hjJhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJubjH)}(hjKh]h*}(hjJhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjJubjW)}(hpctldevh]hpctldev}(hjJhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjJubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjJubjv)}(hunsigned int gpio_offseth](j|)}(hunsignedh]hunsigned}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjJubj@)}(h h]h }(hjKhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJubj|)}(hinth]hint}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjJubj@)}(h h]h }(hj*KhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjJubjW)}(h gpio_offseth]h gpio_offset}(hj8KhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjJubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjJubjv)}(hconst char *pin_grouph](j.)}(hj{#h]hconst}(hjQKhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjMKubj@)}(h h]h }(hj^KhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjMKubj|)}(hcharh]hchar}(hjlKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjMKubj@)}(h h]h }(hjzKhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjMKubjH)}(hjKh]h*}(hjKhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjMKubjW)}(h pin_grouph]h pin_group}(hjKhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjMKubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjJubeh}(h]h ]h"]h$]h&]jnjouh1johjIhhhjIhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjIhhhjIhMubah}(h]jIah ](j|j}eh"]h$]h&]jj)jhuh1j!hjIhMhjIhhubj)}(hhh]h)}(h$add a range for GPIO <-> pin mappingh]h$add a range for GPIO <-> pin mapping}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjIhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKjjKjjjuh1jhhhhhNhNubj)}(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)}(hjKh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKubj)}(hhh](j)}(h;``struct gpio_chip *gc`` the gpiochip to add the range for h](j)}(h``struct gpio_chip *gc``h]j )}(hjLh]hstruct gpio_chip *gc}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjKubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKubj")}(hhh]h)}(h!the gpiochip to add the range forh]h!the gpiochip to add the range for}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjLubah}(h]h ]h"]h$]h&]uh1j!hjKubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjKubj)}(h=``struct pinctrl_dev *pctldev`` the pin controller to map to h](j)}(h``struct pinctrl_dev *pctldev``h]j )}(hj9Lh]hstruct pinctrl_dev *pctldev}(hj;LhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj7Lubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj3Lubj")}(hhh]h)}(hthe pin controller to map toh]hthe pin controller to map to}(hjRLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNLhMhjOLubah}(h]h ]h"]h$]h&]uh1j!hj3Lubeh}(h]h ]h"]h$]h&]uh1jhjNLhMhjKubj)}(hT``unsigned int gpio_offset`` the start offset in the current gpio_chip number space h](j)}(h``unsigned int gpio_offset``h]j )}(hjrLh]hunsigned int gpio_offset}(hjtLhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjpLubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjlLubj")}(hhh]h)}(h6the start offset in the current gpio_chip number spaceh]h6the start offset in the current gpio_chip number space}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjLubah}(h]h ]h"]h$]h&]uh1j!hjlLubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjKubj)}(hJ``const char *pin_group`` name of the pin group inside the pin controller h](j)}(h``const char *pin_group``h]j )}(hjLh]hconst char *pin_group}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjLubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjLubj")}(hhh]h)}(h/name of the pin group inside the pin controllerh]h/name of the pin group inside the pin controller}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjLubah}(h]h ]h"]h$]h&]uh1j!hjLubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjKubeh}(h]h ]h"]h$]h&]uh1jhjKubh)}(h**Description**h]j)}(hjLh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKubh)}(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.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKubh)}(h **Return**h]j)}(hj Mh]hReturn}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Mubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj#MhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j#gpiochip_add_pin_range (C function)c.gpiochip_add_pin_rangehNtauh1j hhhhhNhNubj)}(hhh](j")}(hint gpiochip_add_pin_range (struct gpio_chip *gc, const char *pinctl_name, unsigned int gpio_offset, unsigned int pin_offset, unsigned int npins)h]j()}(hint gpiochip_add_pin_range(struct gpio_chip *gc, const char *pinctl_name, unsigned int gpio_offset, unsigned int pin_offset, unsigned int npins)h](j|)}(hinth]hint}(hjRMhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjNMhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjaMhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjNMhhhj`MhM ubjQ)}(hgpiochip_add_pin_rangeh]jW)}(hgpiochip_add_pin_rangeh]hgpiochip_add_pin_range}(hjsMhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjoMubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjNMhhhj`MhM ubjp)}(hv(struct gpio_chip *gc, const char *pinctl_name, unsigned int gpio_offset, unsigned int pin_offset, unsigned int npins)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjMhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjMubj@)}(h h]h }(hjMhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjMubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjMhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjMmodnameN classnameNjj)}j]j3)}j+juMsbc.gpiochip_add_pin_rangeasbuh1hhjMubj@)}(h h]h }(hjMhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjMubjH)}(hjKh]h*}(hjMhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjMubjW)}(hgch]hgc}(hjMhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjMubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMubjv)}(hconst char *pinctl_nameh](j.)}(hj{#h]hconst}(hjNhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjMubj@)}(h h]h }(hjNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjMubj|)}(hcharh]hchar}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjMubj@)}(h h]h }(hj*NhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjMubjH)}(hjKh]h*}(hj8NhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjMubjW)}(h pinctl_nameh]h pinctl_name}(hjENhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjMubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMubjv)}(hunsigned int gpio_offseth](j|)}(hunsignedh]hunsigned}(hj^NhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjZNubj@)}(h h]h }(hjlNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjZNubj|)}(hinth]hint}(hjzNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjZNubj@)}(h h]h }(hjNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjZNubjW)}(h gpio_offseth]h gpio_offset}(hjNhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjZNubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMubjv)}(hunsigned int pin_offseth](j|)}(hunsignedh]hunsigned}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjNubj@)}(h h]h }(hjNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjNubj|)}(hinth]hint}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjNubj@)}(h h]h }(hjNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjNubjW)}(h pin_offseth]h pin_offset}(hjNhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjNubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMubjv)}(hunsigned int npinsh](j|)}(hunsignedh]hunsigned}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjNubj@)}(h h]h }(hjOhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjNubj|)}(hinth]hint}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjNubj@)}(h h]h }(hj*OhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjNubjW)}(hnpinsh]hnpins}(hj8OhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjNubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMubeh}(h]h ]h"]h$]h&]jnjouh1johjNMhhhj`MhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjJMhhhj`MhM ubah}(h]jEMah ](j|j}eh"]h$]h&]jj)jhuh1j!hj`MhM hjGMhhubj)}(hhh]h)}(h$add a range for GPIO <-> pin mappingh]h$add a range for GPIO <-> pin mapping}(hjbOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj_Ohhubah}(h]h ]h"]h$]h&]uh1jhjGMhhhj`MhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjzOjjzOjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct gpio_chip *gc`` the gpiochip to add the range for ``const char *pinctl_name`` the dev_name() of the pin controller to map to ``unsigned int gpio_offset`` the start offset in the current gpio_chip number space ``unsigned int pin_offset`` the start offset in the pin controller number space ``unsigned int npins`` the number of pins from the offset of each pin space (GPIO and pin controller) to accumulate in this range **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 a negative errno on failure.h](h)}(h**Parameters**h]j)}(hjOh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj~Oubj)}(hhh](j)}(h;``struct gpio_chip *gc`` the gpiochip to add the range for h](j)}(h``struct gpio_chip *gc``h]j )}(hjOh]hstruct gpio_chip *gc}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjOubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjOubj")}(hhh]h)}(h!the gpiochip to add the range forh]h!the gpiochip to add the range for}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1j!hjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhjOubj)}(hK``const char *pinctl_name`` the dev_name() of the pin controller to map to h](j)}(h``const char *pinctl_name``h]j )}(hjOh]hconst char *pinctl_name}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjOubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjOubj")}(hhh]h)}(h.the dev_name() of the pin controller to map toh]h.the dev_name() of the pin controller to map to}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1j!hjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhjOubj)}(hT``unsigned int gpio_offset`` the start offset in the current gpio_chip number space h](j)}(h``unsigned int gpio_offset``h]j )}(hjPh]hunsigned int gpio_offset}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjPubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjPubj")}(hhh]h)}(h6the start offset in the current gpio_chip number spaceh]h6the start offset in the current gpio_chip number space}(hj.PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*PhMhj+Pubah}(h]h ]h"]h$]h&]uh1j!hjPubeh}(h]h ]h"]h$]h&]uh1jhj*PhMhjOubj)}(hP``unsigned int pin_offset`` the start offset in the pin controller number space h](j)}(h``unsigned int pin_offset``h]j )}(hjNPh]hunsigned int pin_offset}(hjPPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjLPubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjHPubj")}(hhh]h)}(h3the start offset in the pin controller number spaceh]h3the start offset in the pin controller number space}(hjgPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcPhMhjdPubah}(h]h ]h"]h$]h&]uh1j!hjHPubeh}(h]h ]h"]h$]h&]uh1jhjcPhMhjOubj)}(h``unsigned int npins`` the number of pins from the offset of each pin space (GPIO and pin controller) to accumulate in this range h](j)}(h``unsigned int npins``h]j )}(hjPh]hunsigned int npins}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjPubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjPubj")}(hhh]h)}(hjthe number of pins from the offset of each pin space (GPIO and pin controller) to accumulate in this rangeh]hjthe number of pins from the offset of each pin space (GPIO and pin controller) to accumulate in this range}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjPubah}(h]h ]h"]h$]h&]uh1j!hjPubeh}(h]h ]h"]h$]h&]uh1jhjPhMhjOubeh}(h]h ]h"]h$]h&]uh1jhj~Oubh)}(h**Description**h]j)}(hjPh]h Description}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj~Oubh)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj~Oubh)}(h **Return**h]j)}(hjPh]hReturn}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj~Oubh)}(h-0 on success, or a negative errno on failure.h]h-0 on success, or a negative errno on failure.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj~Oubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j'gpiochip_remove_pin_ranges (C function)c.gpiochip_remove_pin_rangeshNtauh1j hhhhhNhNubj)}(hhh](j")}(h6void gpiochip_remove_pin_ranges (struct gpio_chip *gc)h]j()}(h5void gpiochip_remove_pin_ranges(struct gpio_chip *gc)h](j|)}(hvoidh]hvoid}(hj/QhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj+Qhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM0 ubj@)}(h h]h }(hj>QhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj+Qhhhj=QhM0 ubjQ)}(hgpiochip_remove_pin_rangesh]jW)}(hgpiochip_remove_pin_rangesh]hgpiochip_remove_pin_ranges}(hjPQhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjLQubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj+Qhhhj=QhM0 ubjp)}(h(struct gpio_chip *gc)h]jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjlQhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhQubj@)}(h h]h }(hjyQhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhQubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjQhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjQmodnameN classnameNjj)}j]j3)}j+jRQsbc.gpiochip_remove_pin_rangesasbuh1hhjhQubj@)}(h h]h }(hjQhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhQubjH)}(hjKh]h*}(hjQhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhQubjW)}(hgch]hgc}(hjQhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjhQubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjdQubah}(h]h ]h"]h$]h&]jnjouh1johj+Qhhhj=QhM0 ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj'Qhhhj=QhM0 ubah}(h]j"Qah ](j|j}eh"]h$]h&]jj)jhuh1j!hj=QhM0 hj$Qhhubj)}(hhh]h)}(h$remove all the GPIO <-> pin mappingsh]h$remove all the GPIO <-> pin mappings}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM- hjQhhubah}(h]h ]h"]h$]h&]uh1jhj$Qhhhj=QhM0 ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjRjjRjjjuh1jhhhhhNhNubj)}(hR**Parameters** ``struct gpio_chip *gc`` the chip to remove all the mappings forh](h)}(h**Parameters**h]j)}(hjRh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM1 hj Rubj)}(hhh]j)}(h@``struct gpio_chip *gc`` the chip to remove all the mappings forh](j)}(h``struct gpio_chip *gc``h]j )}(hj0Rh]hstruct gpio_chip *gc}(hj2RhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj.Rubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM3 hj*Rubj")}(hhh]h)}(h'the chip to remove all the mappings forh]h'the chip to remove all the mappings for}(hjIRhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM. hjFRubah}(h]h ]h"]h$]h&]uh1j!hj*Rubeh}(h]h ]h"]h$]h&]uh1jhjERhM3 hj'Rubah}(h]h ]h"]h$]h&]uh1jhj Rubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j$gpiochip_dup_line_label (C function)c.gpiochip_dup_line_labelhNtauh1j hhhhhNhNubj)}(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}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjRhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjRhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjRhhhjRhM ubjH)}(hjKh]h*}(hjRhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjRhhhjRhM ubjQ)}(hgpiochip_dup_line_labelh]jW)}(hgpiochip_dup_line_labelh]hgpiochip_dup_line_label}(hjRhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjRubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjRhhhjRhM ubjp)}(h+(struct gpio_chip *gc, unsigned int offset)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjRhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjRubj@)}(h h]h }(hjRhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjRubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjRhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjRubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjRmodnameN classnameNjj)}j]j3)}j+jRsbc.gpiochip_dup_line_labelasbuh1hhjRubj@)}(h h]h }(hjShhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjRubjH)}(hjKh]h*}(hj ShhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjRubjW)}(hgch]hgc}(hj-ShhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjRubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjRubjv)}(hunsigned int offseth](j|)}(hunsignedh]hunsigned}(hjFShhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjBSubj@)}(h h]h }(hjTShhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjBSubj|)}(hinth]hint}(hjbShhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjBSubj@)}(h h]h }(hjpShhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjBSubjW)}(hoffseth]hoffset}(hj~ShhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjBSubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjRubeh}(h]h ]h"]h$]h&]jnjouh1johjRhhhjRhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjRhhhjRhM ubah}(h]j}Rah ](j|j}eh"]h$]h&]jj)jhuh1j!hjRhM hjRhhubj)}(hhh]h)}(h!Get a copy of the consumer label.h]h!Get a copy of the consumer label.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjShhubah}(h]h ]h"]h$]h&]uh1jhjRhhhjRhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1jhhhhhNhNubj)}(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)}(hjSh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjSubj)}(hhh](j)}(h:``struct gpio_chip *gc`` GPIO chip controlling this line. h](j)}(h``struct gpio_chip *gc``h]j )}(hjSh]hstruct gpio_chip *gc}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j hjSubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjSubj")}(hhh]h)}(h GPIO chip controlling this line.h]h GPIO chip controlling this line.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShM hjSubah}(h]h ]h"]h$]h&]uh1j!hjSubeh}(h]h ]h"]h$]h&]uh1jhjShM hjSubj)}(h5``unsigned int offset`` Hardware offset of the line. h](j)}(h``unsigned int offset``h]j )}(hj"Th]hunsigned int offset}(hj$ThhhNhNubah}(h]h ]h"]h$]h&]uh1j hj Tubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjTubj")}(hhh]h)}(hHardware offset of the line.h]hHardware offset of the line.}(hj;ThhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ThM hj8Tubah}(h]h ]h"]h$]h&]uh1j!hjTubeh}(h]h ]h"]h$]h&]uh1jhj7ThM hjSubeh}(h]h ]h"]h$]h&]uh1jhjSubh)}(h **Return**h]j)}(hj]Th]hReturn}(hj_ThhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[Tubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjSubh)}(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 }(hjsThhhNhNubj )}(h ``ENOMEM``h]hENOMEM}(hj{ThhhNhNubah}(h]h ]h"]h$]h&]uh1j hjsTubh.}(hjsThhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjSubh)}(h**Description**h]j)}(hjTh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjSubh)}(h'Must not be called from atomic context.h]h'Must not be called from atomic context.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j&gpiochip_request_own_desc (C function)c.gpiochip_request_own_deschNtauh1j hhhhhNhNubj)}(hhh](j")}(hstruct gpio_desc * gpiochip_request_own_desc (struct gpio_chip *gc, unsigned int hwnum, const char *label, enum gpio_lookup_flags lflags, enum gpiod_flags dflags)h]j()}(hstruct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *gc, unsigned int hwnum, const char *label, enum gpio_lookup_flags lflags, enum gpiod_flags dflags)h](j.)}(hj1h]hstruct}(hjThhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjThhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjThhhjThM ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjThhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjTubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjTmodnameN classnameNjj)}j]j3)}j+gpiochip_request_own_descsbc.gpiochip_request_own_descasbuh1hhjThhhjThM ubj@)}(h h]h }(hjUhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjThhhjThM ubjH)}(hjKh]h*}(hj)UhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjThhhjThM ubjQ)}(hgpiochip_request_own_desch]jW)}(hjUh]hgpiochip_request_own_desc}(hj:UhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj6Uubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjThhhjThM ubjp)}(hu(struct gpio_chip *gc, unsigned int hwnum, const char *label, enum gpio_lookup_flags lflags, enum gpiod_flags dflags)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjUUhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjQUubj@)}(h h]h }(hjbUhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjQUubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjsUhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjpUubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjuUmodnameN classnameNjj)}j]jUc.gpiochip_request_own_descasbuh1hhjQUubj@)}(h h]h }(hjUhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjQUubjH)}(hjKh]h*}(hjUhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjQUubjW)}(hgch]hgc}(hjUhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjQUubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMUubjv)}(hunsigned int hwnumh](j|)}(hunsignedh]hunsigned}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjUubj@)}(h h]h }(hjUhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjUubj|)}(hinth]hint}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjUubj@)}(h h]h }(hjUhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjUubjW)}(hhwnumh]hhwnum}(hjUhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjUubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMUubjv)}(hconst char *labelh](j.)}(hj{#h]hconst}(hjVhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjVubj@)}(h h]h }(hj#VhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjVubj|)}(hcharh]hchar}(hj1VhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjVubj@)}(h h]h }(hj?VhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjVubjH)}(hjKh]h*}(hjMVhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjVubjW)}(hlabelh]hlabel}(hjZVhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjVubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMUubjv)}(henum gpio_lookup_flags lflagsh](j.)}(henumh]henum}(hjsVhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjoVubj@)}(h h]h }(hjVhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoVubh)}(hhh]jW)}(hgpio_lookup_flagsh]hgpio_lookup_flags}(hjVhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjVubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjVmodnameN classnameNjj)}j]jUc.gpiochip_request_own_descasbuh1hhjoVubj@)}(h h]h }(hjVhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoVubjW)}(hlflagsh]hlflags}(hjVhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjoVubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMUubjv)}(henum gpiod_flags dflagsh](j.)}(hjuVh]henum}(hjVhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjVubj@)}(h h]h }(hjVhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjVubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjVhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjVubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjVmodnameN classnameNjj)}j]jUc.gpiochip_request_own_descasbuh1hhjVubj@)}(h h]h }(hjWhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjVubjW)}(hdflagsh]hdflags}(hj!WhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjVubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjMUubeh}(h]h ]h"]h$]h&]jnjouh1johjThhhjThM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjThhhjThM ubah}(h]jTah ](j|j}eh"]h$]h&]jj)jhuh1j!hjThM hjThhubj)}(hhh]h)}(h-Allow GPIO chip to request its own descriptorh]h-Allow GPIO chip to request its own descriptor}(hjKWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjHWhhubah}(h]h ]h"]h$]h&]uh1jhjThhhjThM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjcWjjcWjjjuh1jhhhhhNhNubj)}(hX**Parameters** ``struct gpio_chip *gc`` GPIO chip ``unsigned int hwnum`` hardware number of the GPIO for which to request the descriptor ``const char *label`` label for the GPIO ``enum gpio_lookup_flags lflags`` lookup flags for this GPIO or 0 if default, this can be used to specify things like line inversion semantics with the machine flags such as GPIO_OUT_LOW ``enum gpiod_flags dflags`` descriptor request flags for this GPIO or 0 if default, this can be used to specify consumer semantics such as open drain **Description** Function allows GPIO chip drivers to request and use their own GPIO descriptors via gpiolib API. Difference to gpiod_request() is that this function will not increase reference count of the GPIO chip module. This allows the GPIO chip module to be unloaded as needed (we assume that the GPIO chip driver handles freeing the GPIOs it has requested). **Return** A pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error code on failure.h](h)}(h**Parameters**h]j)}(hjmWh]h Parameters}(hjoWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkWubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgWubj)}(hhh](j)}(h#``struct gpio_chip *gc`` GPIO chip h](j)}(h``struct gpio_chip *gc``h]j )}(hjWh]hstruct gpio_chip *gc}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjWubj")}(hhh]h)}(h GPIO chiph]h GPIO chip}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhM hjWubah}(h]h ]h"]h$]h&]uh1j!hjWubeh}(h]h ]h"]h$]h&]uh1jhjWhM hjWubj)}(hW``unsigned int hwnum`` hardware number of the GPIO for which to request the descriptor h](j)}(h``unsigned int hwnum``h]j )}(hjWh]hunsigned int hwnum}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjWubj")}(hhh]h)}(h?hardware number of the GPIO for which to request the descriptorh]h?hardware number of the GPIO for which to request the descriptor}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhM hjWubah}(h]h ]h"]h$]h&]uh1j!hjWubeh}(h]h ]h"]h$]h&]uh1jhjWhM hjWubj)}(h)``const char *label`` label for the GPIO h](j)}(h``const char *label``h]j )}(hjWh]hconst char *label}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjWubj")}(hhh]h)}(hlabel for the GPIOh]hlabel for the GPIO}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhM hjXubah}(h]h ]h"]h$]h&]uh1j!hjWubeh}(h]h ]h"]h$]h&]uh1jhjXhM hjWubj)}(h``enum gpio_lookup_flags lflags`` lookup flags for this GPIO or 0 if default, this can be used to specify things like line inversion semantics with the machine flags such as GPIO_OUT_LOW h](j)}(h!``enum gpio_lookup_flags lflags``h]j )}(hj7Xh]henum gpio_lookup_flags lflags}(hj9XhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5Xubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj1Xubj")}(hhh]h)}(hlookup flags for this GPIO or 0 if default, this can be used to specify things like line inversion semantics with the machine flags such as GPIO_OUT_LOWh]hlookup flags for this GPIO or 0 if default, this can be used to specify things like line inversion semantics with the machine flags such as GPIO_OUT_LOW}(hjPXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjMXubah}(h]h ]h"]h$]h&]uh1j!hj1Xubeh}(h]h ]h"]h$]h&]uh1jhjLXhM hjWubj)}(h``enum gpiod_flags dflags`` descriptor request flags for this GPIO or 0 if default, this can be used to specify consumer semantics such as open drain h](j)}(h``enum gpiod_flags dflags``h]j )}(hjqXh]henum gpiod_flags dflags}(hjsXhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjoXubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjkXubj")}(hhh]h)}(hydescriptor request flags for this GPIO or 0 if default, this can be used to specify consumer semantics such as open drainh]hydescriptor request flags for this GPIO or 0 if default, this can be used to specify consumer semantics such as open drain}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjXubah}(h]h ]h"]h$]h&]uh1j!hjkXubeh}(h]h ]h"]h$]h&]uh1jhjXhM hjWubeh}(h]h ]h"]h$]h&]uh1jhjgWubh)}(h**Description**h]j)}(hjXh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgWubh)}(hX[Function allows GPIO chip drivers to request and use their own GPIO descriptors via gpiolib API. Difference to gpiod_request() is that this function will not increase reference count of the GPIO chip module. This allows the GPIO chip module to be unloaded as needed (we assume that the GPIO chip driver handles freeing the GPIOs it has requested).h]hX[Function allows GPIO chip drivers to request and use their own GPIO descriptors via gpiolib API. Difference to gpiod_request() is that this function will not increase reference count of the GPIO chip module. This allows the GPIO chip module to be unloaded as needed (we assume that the GPIO chip driver handles freeing the GPIOs it has requested).}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgWubh)}(h **Return**h]j)}(hjXh]hReturn}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgWubh)}(hYA pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error code on failure.h]hYA pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error code on failure.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j#gpiochip_free_own_desc (C function)c.gpiochip_free_own_deschNtauh1j hhhhhNhNubj)}(hhh](j")}(h4void gpiochip_free_own_desc (struct gpio_desc *desc)h]j()}(h3void gpiochip_free_own_desc(struct gpio_desc *desc)h](j|)}(hvoidh]hvoid}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjYhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM1 ubj@)}(h h]h }(hj(YhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjYhhhj'YhM1 ubjQ)}(hgpiochip_free_own_desch]jW)}(hgpiochip_free_own_desch]hgpiochip_free_own_desc}(hj:YhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj6Yubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjYhhhj'YhM1 ubjp)}(h(struct gpio_desc *desc)h]jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjVYhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjRYubj@)}(h h]h }(hjcYhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjRYubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjtYhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjqYubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjvYmodnameN classnameNjj)}j]j3)}j+j\hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM} ubj@)}(h h]h }(hjQ\hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>\hhhjP\hM} ubjQ)}(hgpiod_direction_output_rawh]jW)}(hgpiod_direction_output_rawh]hgpiod_direction_output_raw}(hjc\hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj_\ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj>\hhhjP\hM} ubjp)}(h#(struct gpio_desc *desc, int value)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hj\hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj{\ubj@)}(h h]h }(hj\hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj{\ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj\hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj\modnameN classnameNjj)}j]j3)}j+je\sbc.gpiod_direction_output_rawasbuh1hhj{\ubj@)}(h h]h }(hj\hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj{\ubjH)}(hjKh]h*}(hj\hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj{\ubjW)}(hdesch]hdesc}(hj\hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj{\ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjw\ubjv)}(h int valueh](j|)}(hinth]hint}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj\ubj@)}(h h]h }(hj\hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubjW)}(hvalueh]hvalue}(hj ]hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj\ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjw\ubeh}(h]h ]h"]h$]h&]jnjouh1johj>\hhhjP\hM} ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj:\hhhjP\hM} ubah}(h]j5\ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjP\hM} hj7\hhubj)}(hhh]h)}(h set the GPIO direction to outputh]h set the GPIO direction to output}(hj7]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMr hj4]hhubah}(h]h ]h"]h$]h&]uh1jhj7\hhhjP\hM} ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjO]jjO]jjjuh1jhhhhhNhNubj)}(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)}(hjY]h]h Parameters}(hj[]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW]ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMv hjS]ubj)}(hhh](j)}(h1``struct gpio_desc *desc`` GPIO to set to output h](j)}(h``struct gpio_desc *desc``h]j )}(hjx]h]hstruct gpio_desc *desc}(hjz]hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjv]ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMs hjr]ubj")}(hhh]h)}(hGPIO to set to outputh]hGPIO to set to output}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMs hj]ubah}(h]h ]h"]h$]h&]uh1j!hjr]ubeh}(h]h ]h"]h$]h&]uh1jhj]hMs hjo]ubj)}(h/``int value`` initial output value of the GPIO h](j)}(h ``int value``h]j )}(hj]h]h int value}(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:24: ./drivers/gpio/gpiolib.chMt hj]ubj")}(hhh]h)}(h initial output value of the GPIOh]h initial output value of the GPIO}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMt hj]ubah}(h]h ]h"]h$]h&]uh1j!hj]ubeh}(h]h ]h"]h$]h&]uh1jhj]hMt hjo]ubeh}(h]h ]h"]h$]h&]uh1jhjS]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:24: ./drivers/gpio/gpiolib.chMv hjS]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:24: ./drivers/gpio/gpiolib.chMv hjS]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:24: ./drivers/gpio/gpiolib.chMz hjS]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:24: ./drivers/gpio/gpiolib.chMz hjS]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j#gpiod_direction_output (C function)c.gpiod_direction_outputhNtauh1j hhhhhNhNubj)}(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}(hjX^hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjT^hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjg^hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjT^hhhjf^hM ubjQ)}(hgpiod_direction_outputh]jW)}(hgpiod_direction_outputh]hgpiod_direction_output}(hjy^hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhju^ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjT^hhhjf^hM ubjp)}(h#(struct gpio_desc *desc, int value)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hj^hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj^ubj@)}(h h]h }(hj^hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj^ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj^hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj^modnameN classnameNjj)}j]j3)}j+j{^sbc.gpiod_direction_outputasbuh1hhj^ubj@)}(h h]h }(hj^hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj^ubjH)}(hjKh]h*}(hj^hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj^ubjW)}(hdesch]hdesc}(hj^hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj^ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj^ubjv)}(h int valueh](j|)}(hinth]hint}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj_ubj@)}(h h]h }(hj_hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj_ubjW)}(hvalueh]hvalue}(hj#_hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj_ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj^ubeh}(h]h ]h"]h$]h&]jnjouh1johjT^hhhjf^hM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjP^hhhjf^hM ubah}(h]jK^ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjf^hM hjM^hhubj)}(hhh]h)}(h set the GPIO direction to outputh]h set the GPIO direction to output}(hjM_hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjJ_hhubah}(h]h ]h"]h$]h&]uh1jhjM^hhhjf^hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjje_jje_jjjuh1jhhhhhNhNubj)}(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)}(hjo_h]h Parameters}(hjq_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm_ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hji_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:24: ./drivers/gpio/gpiolib.chM hj_ubj")}(hhh]h)}(hGPIO to set to outputh]hGPIO to set to output}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hM hj_ubah}(h]h ]h"]h$]h&]uh1j!hj_ubeh}(h]h ]h"]h$]h&]uh1jhj_hM hj_ubj)}(h/``int value`` initial output value of the GPIO h](j)}(h ``int value``h]j )}(hj_h]h int value}(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:24: ./drivers/gpio/gpiolib.chM hj_ubj")}(hhh]h)}(h initial output value of the GPIOh]h initial output value of the GPIO}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hM hj_ubah}(h]h ]h"]h$]h&]uh1j!hj_ubeh}(h]h ]h"]h$]h&]uh1jhj_hM hj_ubeh}(h]h ]h"]h$]h&]uh1jhji_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:24: ./drivers/gpio/gpiolib.chM hji_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 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.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hji_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:24: ./drivers/gpio/gpiolib.chM hji_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:24: ./drivers/gpio/gpiolib.chM hji_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j)gpiod_enable_hw_timestamp_ns (C function)c.gpiod_enable_hw_timestamp_nshNtauh1j hhhhhNhNubj)}(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}(hjn`hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjj`hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hj}`hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjj`hhhj|`hM ubjQ)}(hgpiod_enable_hw_timestamp_nsh]jW)}(hgpiod_enable_hw_timestamp_nsh]hgpiod_enable_hw_timestamp_ns}(hj`hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj`ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjj`hhhj|`hM ubjp)}(h-(struct gpio_desc *desc, unsigned long flags)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hj`hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj`ubj@)}(h h]h }(hj`hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj`ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj`hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj`modnameN classnameNjj)}j]j3)}j+j`sbc.gpiod_enable_hw_timestamp_nsasbuh1hhj`ubj@)}(h h]h }(hj`hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj`ubjH)}(hjKh]h*}(hj`hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj`ubjW)}(hdesch]hdesc}(hjahhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj`ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj`ubjv)}(hunsigned long flagsh](j|)}(hunsignedh]hunsigned}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjaubj@)}(h h]h }(hj+ahhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjaubj|)}(hlongh]hlong}(hj9ahhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjaubj@)}(h h]h }(hjGahhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjaubjW)}(hflagsh]hflags}(hjUahhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjaubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj`ubeh}(h]h ]h"]h$]h&]jnjouh1johjj`hhhj|`hM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjf`hhhj|`hM ubah}(h]ja`ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj|`hM hjc`hhubj)}(hhh]h)}(h)Enable hardware timestamp in nanoseconds.h]h)Enable hardware timestamp in nanoseconds.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj|ahhubah}(h]h ]h"]h$]h&]uh1jhjc`hhhj|`hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjajjajjjuh1jhhhhhNhNubj)}(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)}(hjah]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjaubj)}(hhh](j)}(h+``struct gpio_desc *desc`` GPIO to enable. h](j)}(h``struct gpio_desc *desc``h]j )}(hjah]hstruct gpio_desc *desc}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjaubj")}(hhh]h)}(hGPIO to enable.h]hGPIO to enable.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahM hjaubah}(h]h ]h"]h$]h&]uh1j!hjaubeh}(h]h ]h"]h$]h&]uh1jhjahM hjaubj)}(h4``unsigned long flags`` Flags related to GPIO edge. h](j)}(h``unsigned long flags``h]j )}(hjah]hunsigned long flags}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjaubj")}(hhh]h)}(hFlags related to GPIO edge.h]hFlags related to GPIO edge.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhM hjbubah}(h]h ]h"]h$]h&]uh1j!hjaubeh}(h]h ]h"]h$]h&]uh1jhjbhM hjaubeh}(h]h ]h"]h$]h&]uh1jhjaubh)}(h **Return**h]j)}(hj4bh]hReturn}(hj6bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2bubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjaubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjJbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j*gpiod_disable_hw_timestamp_ns (C function)c.gpiod_disable_hw_timestamp_nshNtauh1j hhhhhNhNubj)}(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}(hjybhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjbhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubhhhjbhM ubjQ)}(hgpiod_disable_hw_timestamp_nsh]jW)}(hgpiod_disable_hw_timestamp_nsh]hgpiod_disable_hw_timestamp_ns}(hjbhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjbubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjubhhhjbhM ubjp)}(h-(struct gpio_desc *desc, unsigned long flags)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjbhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjbubj@)}(h h]h }(hjbhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjbubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjbhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjbubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjbmodnameN classnameNjj)}j]j3)}j+jbsbc.gpiod_disable_hw_timestamp_nsasbuh1hhjbubj@)}(h h]h }(hjbhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjbubjH)}(hjKh]h*}(hjchhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjbubjW)}(hdesch]hdesc}(hjchhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjbubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjbubjv)}(hunsigned long flagsh](j|)}(hunsignedh]hunsigned}(hj(chhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj$cubj@)}(h h]h }(hj6chhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$cubj|)}(hlongh]hlong}(hjDchhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj$cubj@)}(h h]h }(hjRchhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$cubjW)}(hflagsh]hflags}(hj`chhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj$cubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjbubeh}(h]h ]h"]h$]h&]jnjouh1johjubhhhjbhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjqbhhhjbhM ubah}(h]jlbah ](j|j}eh"]h$]h&]jj)jhuh1j!hjbhM hjnbhhubj)}(hhh]h)}(hDisable hardware timestamp.h]hDisable hardware timestamp.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjchhubah}(h]h ]h"]h$]h&]uh1jhjnbhhhjbhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjcjjcjjjuh1jhhhhhNhNubj)}(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)}(hjch]h Parameters}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjcubj)}(hhh](j)}(h,``struct gpio_desc *desc`` GPIO to disable. h](j)}(h``struct gpio_desc *desc``h]j )}(hjch]hstruct gpio_desc *desc}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j hjcubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjcubj")}(hhh]h)}(hGPIO to disable.h]hGPIO to disable.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchM hjcubah}(h]h ]h"]h$]h&]uh1j!hjcubeh}(h]h ]h"]h$]h&]uh1jhjchM hjcubj)}(h[``unsigned long flags`` Flags related to GPIO edge, same value as used during enable call. 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:24: ./drivers/gpio/gpiolib.chM hjcubj")}(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.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhM hjdubah}(h]h ]h"]h$]h&]uh1j!hjcubeh}(h]h ]h"]h$]h&]uh1jhjdhM hjcubeh}(h]h ]h"]h$]h&]uh1jhjcubh)}(h **Return**h]j)}(hj?dh]hReturn}(hjAdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=dubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjcubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjUdhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_set_config (C function)c.gpiod_set_confighNtauh1j hhhhhNhNubj)}(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}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjdhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM/ ubj@)}(h h]h }(hjdhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjdhhhjdhM/ ubjQ)}(hgpiod_set_configh]jW)}(hgpiod_set_configh]hgpiod_set_config}(hjdhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjdubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjdhhhjdhM/ ubjp)}(h.(struct gpio_desc *desc, unsigned long config)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjdhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjdubj@)}(h h]h }(hjdhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjdubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjdhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjdubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjdmodnameN classnameNjj)}j]j3)}j+jdsbc.gpiod_set_configasbuh1hhjdubj@)}(h h]h }(hjdhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjdubjH)}(hjKh]h*}(hj ehhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjdubjW)}(hdesch]hdesc}(hjehhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjdubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjdubjv)}(hunsigned long configh](j|)}(hunsignedh]hunsigned}(hj3ehhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj/eubj@)}(h h]h }(hjAehhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj/eubj|)}(hlongh]hlong}(hjOehhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj/eubj@)}(h h]h }(hj]ehhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj/eubjW)}(hconfigh]hconfig}(hjkehhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj/eubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjdubeh}(h]h ]h"]h$]h&]jnjouh1johjdhhhjdhM/ ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj|dhhhjdhM/ ubah}(h]jwdah ](j|j}eh"]h$]h&]jj)jhuh1j!hjdhM/ hjydhhubj)}(hhh]h)}(hsets **config** for a GPIOh](hsets }(hjehhhNhNubj)}(h **config**h]hconfig}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubh for a GPIO}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM' hjehhubah}(h]h ]h"]h$]h&]uh1jhjydhhhjdhM/ ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjejjejjjuh1jhhhhhNhNubj)}(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)}(hjeh]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM+ hjeubj)}(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 )}(hjeh]hstruct gpio_desc *desc}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j hjeubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM( hjeubj")}(hhh]h)}(h9descriptor of the GPIO for which to set the configurationh]h9descriptor of the GPIO for which to set the configuration}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehM( hjeubah}(h]h ]h"]h$]h&]uh1j!hjeubeh}(h]h ]h"]h$]h&]uh1jhjehM( hjeubj)}(hF``unsigned long config`` Same packed config format as generic pinconf h](j)}(h``unsigned long config``h]j )}(hj!fh]hunsigned long config}(hj#fhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjfubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM) hjfubj")}(hhh]h)}(h,Same packed config format as generic pinconfh]h,Same packed config format as generic pinconf}(hj:fhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6fhM) hj7fubah}(h]h ]h"]h$]h&]uh1j!hjfubeh}(h]h ]h"]h$]h&]uh1jhj6fhM) hjeubeh}(h]h ]h"]h$]h&]uh1jhjeubh)}(h **Return**h]j)}(hj\fh]hReturn}(hj^fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZfubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM+ hjeubh)}(hX0 on success, ``-ENOTSUPP`` if the controller doesn't support setting the configuration.h](h0 on success, }(hjrfhhhNhNubj )}(h ``-ENOTSUPP``h]h -ENOTSUPP}(hjzfhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjrfubh? if the controller doesn’t support setting the configuration.}(hjrfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM+ hjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_set_debounce (C function)c.gpiod_set_debouncehNtauh1j hhhhhNhNubj)}(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}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjfhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMU ubj@)}(h h]h }(hjfhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjfhhhjfhMU ubjQ)}(hgpiod_set_debounceh]jW)}(hgpiod_set_debounceh]hgpiod_set_debounce}(hjfhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjfubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjfhhhjfhMU ubjp)}(h/(struct gpio_desc *desc, unsigned int debounce)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjfhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjfubj@)}(h h]h }(hjfhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjfubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjghhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj gubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjgmodnameN classnameNjj)}j]j3)}j+jfsbc.gpiod_set_debounceasbuh1hhjfubj@)}(h h]h }(hj.ghhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjfubjH)}(hjKh]h*}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj;khhubah}(h]h ]h"]h$]h&]uh1jhjsjhhhjjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjVkjjVkjjjuh1jhhhhhNhNubj)}(hJ**Parameters** ``struct gpio_desc *desc`` the gpio descriptor to changeh](h)}(h**Parameters**h]j)}(hj`kh]h Parameters}(hjbkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^kubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjZkubj)}(hhh]j)}(h8``struct gpio_desc *desc`` the gpio descriptor to changeh](j)}(h``struct gpio_desc *desc``h]j )}(hjkh]hstruct gpio_desc *desc}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}kubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjykubj")}(hhh]h)}(hthe gpio descriptor to changeh]hthe gpio descriptor to change}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjkubah}(h]h ]h"]h$]h&]uh1j!hjykubeh}(h]h ]h"]h$]h&]uh1jhjkhM hjvkubah}(h]h ]h"]h$]h&]uh1jhjZkubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gpiod_get_raw_value (C function)c.gpiod_get_raw_valuehNtauh1j hhhhhNhNubj)}(hhh](j")}(h6int gpiod_get_raw_value (const struct gpio_desc *desc)h]j()}(h5int gpiod_get_raw_value(const struct gpio_desc *desc)h](j|)}(hinth]hint}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjkhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMu ubj@)}(h h]h }(hjkhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjkhhhjkhMu ubjQ)}(hgpiod_get_raw_valueh]jW)}(hgpiod_get_raw_valueh]hgpiod_get_raw_value}(hjkhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjkubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjkhhhjkhMu ubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjlhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjlubj@)}(h h]h }(hj#lhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubj.)}(hj1h]hstruct}(hj1lhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjlubj@)}(h h]h }(hj>lhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjOlhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjLlubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjQlmodnameN classnameNjj)}j]j3)}j+jksbc.gpiod_get_raw_valueasbuh1hhjlubj@)}(h h]h }(hjolhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubjH)}(hjKh]h*}(hj}lhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjlubjW)}(hdesch]hdesc}(hjlhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjlubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjlubah}(h]h ]h"]h$]h&]jnjouh1johjkhhhjkhMu ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjkhhhjkhMu ubah}(h]jkah ](j|j}eh"]h$]h&]jj)jhuh1j!hjkhMu hjkhhubj)}(hhh]h)}(hreturn a gpio's raw valueh]hreturn a gpio’s raw value}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMk hjlhhubah}(h]h ]h"]h$]h&]uh1jhjkhhhjkhMu ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjljjljjjuh1jhhhhhNhNubj)}(hXp**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 can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep.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:24: ./drivers/gpio/gpiolib.chMo hjlubj)}(hhh]j)}(hC``const struct gpio_desc *desc`` gpio whose value will be returned 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:24: ./drivers/gpio/gpiolib.chMl hjlubj")}(hhh]h)}(h!gpio whose value will be returnedh]h!gpio whose value will be returned}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj mhMl hj mubah}(h]h ]h"]h$]h&]uh1j!hjlubeh}(h]h ]h"]h$]h&]uh1jhj mhMl hjlubah}(h]h ]h"]h$]h&]uh1jhjlubh)}(h **Return**h]j)}(hj0mh]hReturn}(hj2mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.mubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMn hjlubh)}(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.}(hjFmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMn hjlubh)}(h**Description**h]j)}(hjWmh]h Description}(hjYmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUmubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMq hjlubh)}(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.}(hjmmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMr hjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_get_value (C function)c.gpiod_get_valuehNtauh1j hhhhhNhNubj)}(hhh](j")}(h2int gpiod_get_value (const struct gpio_desc *desc)h]j()}(h1int gpiod_get_value(const struct gpio_desc *desc)h](j|)}(hinth]hint}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjmhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjmhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjmhhhjmhM ubjQ)}(hgpiod_get_valueh]jW)}(hgpiod_get_valueh]hgpiod_get_value}(hjmhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjmubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjmhhhjmhM ubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjmhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjmubj@)}(h h]h }(hjmhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjmubj.)}(hj1h]hstruct}(hjmhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjmubj@)}(h h]h }(hjnhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjmubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjnhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjnubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjnmodnameN classnameNjj)}j]j3)}j+jmsbc.gpiod_get_valueasbuh1hhjmubj@)}(h h]h }(hj2nhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjmubjH)}(hjKh]h*}(hj@nhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjmubjW)}(hdesch]hdesc}(hjMnhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjmubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjmubah}(h]h ]h"]h$]h&]jnjouh1johjmhhhjmhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjmhhhjmhM ubah}(h]jmah ](j|j}eh"]h$]h&]jj)jhuh1j!hjmhM hjmhhubj)}(hhh]h)}(hreturn a gpio's valueh]hreturn a gpio’s value}(hjwnhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjtnhhubah}(h]h ]h"]h$]h&]uh1jhjmhhhjmhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjnjjnjjjuh1jhhhhhNhNubj)}(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 can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep.h](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjnubj)}(hhh]j)}(hC``const struct gpio_desc *desc`` gpio whose value will be returned h](j)}(h ``const struct gpio_desc *desc``h]j )}(hjnh]hconst struct gpio_desc *desc}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjnubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjnubj")}(hhh]h)}(h!gpio whose value will be returnedh]h!gpio whose value will be returned}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhM hjnubah}(h]h ]h"]h$]h&]uh1j!hjnubeh}(h]h ]h"]h$]h&]uh1jhjnhM hjnubah}(h]h ]h"]h$]h&]uh1jhjnubh)}(h **Return**h]j)}(hjnh]hReturn}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjnubh)}(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.}(hj ohhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjnubh)}(h**Description**h]j)}(hjoh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjnubh)}(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.}(hj0ohhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjnubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j&gpiod_get_raw_array_value (C function)c.gpiod_get_raw_array_valuehNtauh1j hhhhhNhNubj)}(hhh](j")}(hint gpiod_get_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_get_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}(hj_ohhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj[ohhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjnohhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj[ohhhjmohM ubjQ)}(hgpiod_get_raw_array_valueh]jW)}(hgpiod_get_raw_array_valueh]hgpiod_get_raw_array_value}(hjohhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj|oubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj[ohhhjmohM ubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjoubj@)}(h h]h }(hjohhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoubj|)}(hinth]hint}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjoubj@)}(h h]h }(hjohhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoubjW)}(h array_sizeh]h array_size}(hjohhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjoubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjoubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hjohhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjoubj@)}(h h]h }(hjohhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj phhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjpubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj pmodnameN classnameNjj)}j]j3)}j+josbc.gpiod_get_raw_array_valueasbuh1hhjoubj@)}(h h]h }(hj+phhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoubjH)}(hjKh]h*}(hj9phhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjoubjH)}(hjKh]h*}(hjFphhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjoubjW)}(h desc_arrayh]h desc_array}(hjSphhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjoubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjoubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hjlphhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhpubj@)}(h h]h }(hjyphhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhpubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hjphhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjpubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjpmodnameN classnameNjj)}j]j'pc.gpiod_get_raw_array_valueasbuh1hhjhpubj@)}(h h]h }(hjphhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhpubjH)}(hjKh]h*}(hjphhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhpubjW)}(h array_infoh]h array_info}(hjphhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjhpubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjoubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjpubj@)}(h h]h }(hjphhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjpubj|)}(hlongh]hlong}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjpubj@)}(h h]h }(hjqhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjpubjH)}(hjKh]h*}(hjqhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjpubjW)}(h value_bitmaph]h value_bitmap}(hj!qhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjpubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjoubeh}(h]h ]h"]h$]h&]jnjouh1johj[ohhhjmohM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjWohhhjmohM ubah}(h]jRoah ](j|j}eh"]h$]h&]jj)jhuh1j!hjmohM hjTohhubj)}(hhh]h)}(h&read raw values from an array of GPIOsh]h&read raw values from an array of GPIOs}(hjKqhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjHqhhubah}(h]h ]h"]h$]h&]uh1jhjTohhhjmohM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjcqjjcqjjjuh1jhhhhhNhNubj)}(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 can be called from contexts where we cannot sleep, and it will complain if the GPIO chip functions potentially sleep. **Return** 0 on success, or negative errno on failure.h](h)}(h**Parameters**h]j)}(hjmqh]h Parameters}(hjoqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkqubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgqubj)}(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 )}(hjqh]hunsigned int array_size}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjqubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjqubj")}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM hjqubah}(h]h ]h"]h$]h&]uh1j!hjqubeh}(h]h ]h"]h$]h&]uh1jhjqhM hjqubj)}(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}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjqubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjqubj")}(hhh]h)}(h3array of GPIO descriptors whose values will be readh]h3array of GPIO descriptors whose values will be read}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM hjqubah}(h]h ]h"]h$]h&]uh1j!hjqubeh}(h]h ]h"]h$]h&]uh1jhjqhM hjqubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j )}(hjqh]hstruct gpio_array *array_info}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjqubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjqubj")}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM hjrubah}(h]h ]h"]h$]h&]uh1j!hjqubeh}(h]h ]h"]h$]h&]uh1jhjrhM hjqubj)}(h@``unsigned long *value_bitmap`` bitmap to store the read values h](j)}(h``unsigned long *value_bitmap``h]j )}(hj7rh]hunsigned long *value_bitmap}(hj9rhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5rubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj1rubj")}(hhh]h)}(hbitmap to store the read valuesh]hbitmap to store the read values}(hjPrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLrhM hjMrubah}(h]h ]h"]h$]h&]uh1j!hj1rubeh}(h]h ]h"]h$]h&]uh1jhjLrhM hjqubeh}(h]h ]h"]h$]h&]uh1jhjgqubh)}(h**Description**h]j)}(hjrrh]h Description}(hjtrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjprubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgqubh)}(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.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgqubh)}(hThis function can be called from contexts where we cannot sleep, and it will complain if the GPIO chip functions potentially sleep.h]hThis function can be called from contexts where we cannot sleep, and it will complain if the GPIO chip functions potentially sleep.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgqubh)}(h **Return**h]j)}(hjrh]hReturn}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgqubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjgqubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"gpiod_get_array_value (C function)c.gpiod_get_array_valuehNtauh1j hhhhhNhNubj)}(hhh](j")}(hint gpiod_get_array_value (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(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](j|)}(hinth]hint}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjrhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjrhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjrhhhjrhM ubjQ)}(hgpiod_get_array_valueh]jW)}(hgpiod_get_array_valueh]hgpiod_get_array_value}(hjshhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj subah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjrhhhjrhM ubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hj*shhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj&subj@)}(h h]h }(hj8shhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj&subj|)}(hinth]hint}(hjFshhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj&subj@)}(h h]h }(hjTshhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj&subjW)}(h array_sizeh]h array_size}(hjbshhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj&subeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj"subjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hj{shhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjwsubj@)}(h h]h }(hjshhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwsubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjshhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjsubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjsmodnameN classnameNjj)}j]j3)}j+jssbc.gpiod_get_array_valueasbuh1hhjwsubj@)}(h h]h }(hjshhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwsubjH)}(hjKh]h*}(hjshhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjwsubjH)}(hjKh]h*}(hjshhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjwsubjW)}(h desc_arrayh]h desc_array}(hjshhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjwsubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj"subjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hjshhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjsubj@)}(h h]h }(hjthhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjsubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hjthhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjtubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjtmodnameN classnameNjj)}j]jsc.gpiod_get_array_valueasbuh1hhjsubj@)}(h h]h }(hj6thhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjsubjH)}(hjKh]h*}(hjDthhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjsubjW)}(h array_infoh]h array_info}(hjQthhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjsubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj"subjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjjthhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjftubj@)}(h h]h }(hjxthhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjftubj|)}(hlongh]hlong}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjftubj@)}(h h]h }(hjthhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjftubjH)}(hjKh]h*}(hjthhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjftubjW)}(h value_bitmaph]h value_bitmap}(hjthhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjftubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj"subeh}(h]h ]h"]h$]h&]jnjouh1johjrhhhjrhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjrhhhjrhM ubah}(h]jrah ](j|j}eh"]h$]h&]jj)jhuh1j!hjrhM hjrhhubj)}(hhh]h)}(h"read values from an array of GPIOsh]h"read values from an array of GPIOs}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjthhubah}(h]h ]h"]h$]h&]uh1jhjrhhhjrhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtjjtjjjuh1jhhhhhNhNubj)}(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 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 it will complain if the GPIO chip functions potentially sleep. **Return** 0 on success, or negative errno on failure.h](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:24: ./drivers/gpio/gpiolib.chM hjtubj)}(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 )}(hjuh]hunsigned int array_size}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjuubj")}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hj3uhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/uhM hj0uubah}(h]h ]h"]h$]h&]uh1j!hjuubeh}(h]h ]h"]h$]h&]uh1jhj/uhM hjuubj)}(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 )}(hjSuh]hstruct gpio_desc **desc_array}(hjUuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQuubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjMuubj")}(hhh]h)}(h3array of GPIO descriptors whose values will be readh]h3array of GPIO descriptors whose values will be read}(hjluhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhuhM hjiuubah}(h]h ]h"]h$]h&]uh1j!hjMuubeh}(h]h ]h"]h$]h&]uh1jhjhuhM hjuubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j )}(hjuh]hstruct gpio_array *array_info}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjuubj")}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhM hjuubah}(h]h ]h"]h$]h&]uh1j!hjuubeh}(h]h ]h"]h$]h&]uh1jhjuhM hjuubj)}(h@``unsigned long *value_bitmap`` bitmap to store the read values h](j)}(h``unsigned long *value_bitmap``h]j )}(hjuh]hunsigned long *value_bitmap}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjuubj")}(hhh]h)}(hbitmap to store the read valuesh]hbitmap to store the read values}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhM hjuubah}(h]h ]h"]h$]h&]uh1j!hjuubeh}(h]h ]h"]h$]h&]uh1jhjuhM hjuubeh}(h]h ]h"]h$]h&]uh1jhjtubh)}(h**Description**h]j)}(hjvh]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjtubh)}(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.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjtubh)}(hThis function can be called from contexts where we cannot sleep, and it will complain if the GPIO chip functions potentially sleep.h]hThis function can be called from contexts where we cannot sleep, and it will complain if the GPIO chip functions potentially sleep.}(hj%vhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjtubh)}(h **Return**h]j)}(hj6vh]hReturn}(hj8vhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4vubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjtubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjLvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gpiod_set_raw_value (C function)c.gpiod_set_raw_valuehNtauh1j hhhhhNhNubj)}(hhh](j")}(h;int gpiod_set_raw_value (struct gpio_desc *desc, int value)h]j()}(h:int gpiod_set_raw_value(struct gpio_desc *desc, int value)h](j|)}(hinth]hint}(hj{vhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjwvhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjvhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwvhhhjvhMubjQ)}(hgpiod_set_raw_valueh]jW)}(hgpiod_set_raw_valueh]hgpiod_set_raw_value}(hjvhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjvubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjwvhhhjvhMubjp)}(h#(struct gpio_desc *desc, int value)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjvhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjvubj@)}(h h]h }(hjvhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjvubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjvhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjvmodnameN classnameNjj)}j]j3)}j+jvsbc.gpiod_set_raw_valueasbuh1hhjvubj@)}(h h]h }(hjvhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjvubjH)}(hjKh]h*}(hjwhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjvubjW)}(hdesch]hdesc}(hjwhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjvubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjvubjv)}(h int valueh](j|)}(hinth]hint}(hj*whhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj&wubj@)}(h h]h }(hj8whhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj&wubjW)}(hvalueh]hvalue}(hjFwhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj&wubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjvubeh}(h]h ]h"]h$]h&]jnjouh1johjwvhhhjvhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjsvhhhjvhMubah}(h]jnvah ](j|j}eh"]h$]h&]jj)jhuh1j!hjvhMhjpvhhubj)}(hhh]h)}(hassign a gpio's raw valueh]hassign a gpio’s raw value}(hjpwhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjmwhhubah}(h]h ]h"]h$]h&]uh1jhjpvhhhjvhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjwjjwjjjuh1jhhhhhNhNubj)}(hX**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 can be called from contexts where we cannot sleep, and will complain if the GPIO chip functions potentially sleep. **Return** 0 on success, negative error number on failure.h](h)}(h**Parameters**h]j)}(hjwh]h Parameters}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubj)}(hhh](j)}(h=``struct gpio_desc *desc`` gpio whose value will be assigned h](j)}(h``struct gpio_desc *desc``h]j )}(hjwh]hstruct gpio_desc *desc}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjwubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubj")}(hhh]h)}(h!gpio whose value will be assignedh]h!gpio whose value will be assigned}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjwubah}(h]h ]h"]h$]h&]uh1j!hjwubeh}(h]h ]h"]h$]h&]uh1jhjwhMhjwubj)}(h``int value`` value to assign h](j)}(h ``int value``h]j )}(hjwh]h int value}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjwubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubj")}(hhh]h)}(hvalue to assignh]hvalue to assign}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjxubah}(h]h ]h"]h$]h&]uh1j!hjwubeh}(h]h ]h"]h$]h&]uh1jhjwhMhjwubeh}(h]h ]h"]h$]h&]uh1jhjwubh)}(h**Description**h]j)}(hj%xh]h Description}(hj'xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#xubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubh)}(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.}(hj;xhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubh)}(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.}(hjJxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubh)}(h **Return**h]j)}(hj[xh]hReturn}(hj]xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYxubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubh)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hjqxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjwubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_set_value (C function)c.gpiod_set_valuehNtauh1j hhhhhNhNubj)}(hhh](j")}(h7int gpiod_set_value (struct gpio_desc *desc, int value)h]j()}(h6int gpiod_set_value(struct gpio_desc *desc, int value)h](j|)}(hinth]hint}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjxhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjxhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjxhhhjxhMubjQ)}(hgpiod_set_valueh]jW)}(hgpiod_set_valueh]hgpiod_set_value}(hjxhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjxubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjxhhhjxhMubjp)}(h#(struct gpio_desc *desc, int value)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjxhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjxubj@)}(h h]h }(hjxhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjxubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjxhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjxubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjxmodnameN classnameNjj)}j]j3)}j+jxsbc.gpiod_set_valueasbuh1hhjxubj@)}(h h]h }(hjyhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjxubjH)}(hjKh]h*}(hj)yhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjxubjW)}(hdesch]hdesc}(hj6yhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjxubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjxubjv)}(h int valueh](j|)}(hinth]hint}(hjOyhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjKyubj@)}(h h]h }(hj]yhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjKyubjW)}(hvalueh]hvalue}(hjkyhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjKyubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjxubeh}(h]h ]h"]h$]h&]jnjouh1johjxhhhjxhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjxhhhjxhMubah}(h]jxah ](j|j}eh"]h$]h&]jj)jhuh1j!hjxhMhjxhhubj)}(hhh]h)}(hassign a gpio's valueh]hassign a gpio’s value}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyhhubah}(h]h ]h"]h$]h&]uh1jhjxhhhjxhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjyjjyjjjuh1jhhhhhNhNubj)}(hX**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, OPEN_DRAIN and OPEN_SOURCE flags 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, negative error number on failure.h](h)}(h**Parameters**h]j)}(hjyh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubj)}(hhh](j)}(h=``struct gpio_desc *desc`` gpio whose value will be assigned h](j)}(h``struct gpio_desc *desc``h]j )}(hjyh]hstruct gpio_desc *desc}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjyubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubj")}(hhh]h)}(h!gpio whose value will be assignedh]h!gpio whose value will be assigned}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhjyubah}(h]h ]h"]h$]h&]uh1j!hjyubeh}(h]h ]h"]h$]h&]uh1jhjyhMhjyubj)}(h``int value`` value to assign h](j)}(h ``int value``h]j )}(hjzh]h int value}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj zubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj zubj")}(hhh]h)}(hvalue to assignh]hvalue to assign}(hj(zhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$zhMhj%zubah}(h]h ]h"]h$]h&]uh1j!hj zubeh}(h]h ]h"]h$]h&]uh1jhj$zhMhjyubeh}(h]h ]h"]h$]h&]uh1jhjyubh)}(h**Description**h]j)}(hjJzh]h Description}(hjLzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHzubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubh)}(hmSet the logical value of the GPIO, i.e. taking its ACTIVE_LOW, OPEN_DRAIN and OPEN_SOURCE flags into account.h]hmSet the logical value of the GPIO, i.e. taking its ACTIVE_LOW, OPEN_DRAIN and OPEN_SOURCE flags into account.}(hj`zhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubh)}(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.}(hjozhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubh)}(h **Return**h]j)}(hjzh]hReturn}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~zubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubh)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjyubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j&gpiod_set_raw_array_value (C function)c.gpiod_set_raw_array_valuehNtauh1j hhhhhNhNubj)}(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}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjzhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjzhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjzhhhjzhMubjQ)}(hgpiod_set_raw_array_valueh]jW)}(hgpiod_set_raw_array_valueh]hgpiod_set_raw_array_value}(hjzhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjzubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjzhhhjzhMubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjzubj@)}(h h]h }(hj{hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjzubj|)}(hinth]hint}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjzubj@)}(h h]h }(hj,{hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjzubjW)}(h array_sizeh]h array_size}(hj:{hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjzubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjzubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hjS{hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjO{ubj@)}(h h]h }(hj`{hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjO{ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjq{hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjn{ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjs{modnameN classnameNjj)}j]j3)}j+jzsbc.gpiod_set_raw_array_valueasbuh1hhjO{ubj@)}(h h]h }(hj{hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjO{ubjH)}(hjKh]h*}(hj{hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjO{ubjH)}(hjKh]h*}(hj{hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjO{ubjW)}(h desc_arrayh]h desc_array}(hj{hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjO{ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjzubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hj{hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj{ubj@)}(h h]h }(hj{hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj{ubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hj{hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj{modnameN classnameNjj)}j]j{c.gpiod_set_raw_array_valueasbuh1hhj{ubj@)}(h h]h }(hj|hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj{ubjH)}(hjKh]h*}(hj|hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj{ubjW)}(h array_infoh]h array_info}(hj)|hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj{ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjzubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjB|hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj>|ubj@)}(h h]h }(hjP|hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>|ubj|)}(hlongh]hlong}(hj^|hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj>|ubj@)}(h h]h }(hjl|hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>|ubjH)}(hjKh]h*}(hjz|hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj>|ubjW)}(h value_bitmaph]h value_bitmap}(hj|hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj>|ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjzubeh}(h]h ]h"]h$]h&]jnjouh1johjzhhhjzhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjzhhhjzhMubah}(h]jzah ](j|j}eh"]h$]h&]jj)jhuh1j!hjzhMhjzhhubj)}(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:24: ./drivers/gpio/gpiolib.chM hj|hhubah}(h]h ]h"]h$]h&]uh1jhjzhhhjzhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1jhhhhhNhNubj)}(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&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj|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 )}(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:24: ./drivers/gpio/gpiolib.chM hj|ubj")}(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&]uh1hhj}hM hj}ubah}(h]h ]h"]h$]h&]uh1j!hj|ubeh}(h]h ]h"]h$]h&]uh1jhj}hM hj|ubj)}(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:24: ./drivers/gpio/gpiolib.chM hj%}ubj")}(hhh]h)}(h7array of GPIO descriptors whose values will be assignedh]h7array of GPIO descriptors whose values will be assigned}(hjD}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@}hM hjA}ubah}(h]h ]h"]h$]h&]uh1j!hj%}ubeh}(h]h ]h"]h$]h&]uh1jhj@}hM hj|ubj)}(h^``struct gpio_array *array_info`` information on applicability of fast bitmap processing path h](j)}(h!``struct gpio_array *array_info``h]j )}(hjd}h]hstruct gpio_array *array_info}(hjf}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjb}ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hj^}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&]uh1hhjy}hM hjz}ubah}(h]h ]h"]h$]h&]uh1j!hj^}ubeh}(h]h ]h"]h$]h&]uh1jhjy}hM hj|ubj)}(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:24: ./drivers/gpio/gpiolib.chM hj}ubj")}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hM hj}ubah}(h]h ]h"]h$]h&]uh1j!hj}ubeh}(h]h ]h"]h$]h&]uh1jhj}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:24: ./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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj|ubh)}(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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj|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:24: ./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:24: ./drivers/gpio/gpiolib.chMhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"gpiod_set_array_value (C function)c.gpiod_set_array_valuehNtauh1j hhhhhNhNubj)}(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}(hjS~hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjO~hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM4ubj@)}(h h]h }(hjb~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjO~hhhja~hM4ubjQ)}(hgpiod_set_array_valueh]jW)}(hgpiod_set_array_valueh]hgpiod_set_array_value}(hjt~hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjp~ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjO~hhhja~hM4ubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj~ubj@)}(h h]h }(hj~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~ubj|)}(hinth]hint}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj~ubj@)}(h h]h }(hj~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~ubjW)}(h array_sizeh]h array_size}(hj~hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj~ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj~ubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hj~hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj~ubj@)}(h h]h }(hj~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj~hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jv~sbc.gpiod_set_array_valueasbuh1hhj~ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~ubjH)}(hjKh]h*}(hj-hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj~ubjH)}(hjKh]h*}(hj:hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj~ubjW)}(h desc_arrayh]h desc_array}(hjGhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj~ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj~ubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hj`hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj\ubj@)}(h h]h }(hjmhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hj~hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jc.gpiod_set_array_valueasbuh1hhj\ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj\ubjW)}(h array_infoh]h array_info}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj\ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj~ubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj~ubeh}(h]h ]h"]h$]h&]jnjouh1johjO~hhhja~hM4ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjK~hhhja~hM4ubah}(h]jF~ah ](j|j}eh"]h$]h&]jj)jhuh1j!hja~hM4hjH~hhubj)}(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:24: ./drivers/gpio/gpiolib.chM%hj<hhubah}(h]h ]h"]h$]h&]uh1jhjH~hhhja~hM4ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjWjjWjjjuh1jhhhhhNhNubj)}(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)}(hjah]h Parameters}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM)hj[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 hj~ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM&hjzubj")}(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&]uh1j!hjzubeh}(h]h ]h"]h$]h&]uh1jhjhM&hjwubj)}(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:24: ./drivers/gpio/gpiolib.chM'hjubj")}(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΀hM'hjπubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj΀hM'hjwubj)}(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:24: ./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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM(hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM(hjwubj)}(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:24: ./drivers/gpio/gpiolib.chM)hj%ubj")}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hM)hjAubah}(h]h ]h"]h$]h&]uh1j!hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hM)hjwubeh}(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&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM+hj[ubh)}(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:24: ./drivers/gpio/gpiolib.chM+hj[ubh)}(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:24: ./drivers/gpio/gpiolib.chM.hj[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:24: ./drivers/gpio/gpiolib.chM1hj[ubh)}(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:24: ./drivers/gpio/gpiolib.chM1hj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_cansleep (C function)c.gpiod_cansleephNtauh1j hhhhhNhNubj)}(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&]uh1j{hj݁hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMHubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj݁hhhjhMHubjQ)}(hgpiod_cansleeph]jW)}(hgpiod_cansleeph]hgpiod_cansleep}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj݁hhhjhMHubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hj+hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj.)}(hj1h]hstruct}(hj9hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjFhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjWhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjTubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjYmodnameN classnameNjj)}j]j3)}j+jsbc.gpiod_cansleepasbuh1hhjubj@)}(h h]h }(hjwhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johj݁hhhjhMHubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjفhhhjhMHubah}(h]jԁah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMHhjցhhubj)}(hhh]h)}(h*report whether gpio value access may sleeph]h*report whether gpio value access may sleep}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMBhjhhubah}(h]h ]h"]h$]h&]uh1jhjցhhhjhMHubeh}(h]h ](jfunctioneh"]h$]h&]jjjjԂjjԂjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMFhj؂ubj)}(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:24: ./drivers/gpio/gpiolib.chMChjubj")}(hhh]h)}(h gpio to checkh]h gpio to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMChjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMChjubah}(h]h ]h"]h$]h&]uh1jhj؂ubh)}(h **Return**h]j)}(hj8h]hReturn}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMEhj؂ubh)}(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.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMEhj؂ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j$gpiod_set_consumer_name (C function)c.gpiod_set_consumer_namehNtauh1j hhhhhNhNubj)}(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&]uh1j{hjyhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMWubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjyhhhjhMWubjQ)}(hgpiod_set_consumer_nameh]jW)}(hgpiod_set_consumer_nameh]hgpiod_set_consumer_name}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjyhhhjhMWubjp)}(h*(struct gpio_desc *desc, const char *name)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjǃhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj؃hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjՃubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjڃmodnameN classnameNjj)}j]j3)}j+jsbc.gpiod_set_consumer_nameasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *nameh](j.)}(hj{#h]hconst}(hj,hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj(ubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj(ubj|)}(hcharh]hchar}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj(ubj@)}(h h]h }(hjUhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj(ubjH)}(hjKh]h*}(hjchhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj(ubjW)}(hnameh]hname}(hjphhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj(ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjyhhhjhMWubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjuhhhjhMWubah}(h]jpah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMWhjrhhubj)}(hhh]h)}(h(set the consumer name for the descriptorh]h(set the consumer name for the descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMPhjhhubah}(h]h ]h"]h$]h&]uh1jhjrhhhjhMWubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMThjubj)}(hhh](j)}(h<``struct gpio_desc *desc`` gpio to set the consumer name on 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:24: ./drivers/gpio/gpiolib.chMQhjՄ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&]uh1hhjhMQhjubah}(h]h ]h"]h$]h&]uh1j!hjՄubeh}(h]h ]h"]h$]h&]uh1jhjhMQhj҄ubj)}(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:24: ./drivers/gpio/gpiolib.chMRhjubj")}(hhh]h)}(hthe new consumer nameh]hthe new consumer name}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMRhj*ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj)hMRhj҄ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjOh]hReturn}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMThjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMThjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_to_irq (C function)c.gpiod_to_irqhNtauh1j hhhhhNhNubj)}(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&]uh1j{hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMlubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMlubjQ)}(h gpiod_to_irqh]jW)}(h gpiod_to_irqh]h gpiod_to_irq}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMlubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjхhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjͅubj@)}(h h]h }(hjޅhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjͅubj.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjͅubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjͅubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj modnameN classnameNjj)}j]j3)}j+jsbc.gpiod_to_irqasbuh1hhjͅubj@)}(h h]h }(hj*hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjͅubjH)}(hjKh]h*}(hj8hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjͅubjW)}(hdesch]hdesc}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjͅubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjɅubah}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMlubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMlubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMlhjhhubj)}(hhh]h)}(h&return the IRQ corresponding to a GPIOh]h&return the IRQ corresponding to a GPIO}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMfhjlhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMlubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chMjhjubj)}(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:24: ./drivers/gpio/gpiolib.chMghjubj")}(hhh]h)}(h3gpio whose IRQ will be returned (already requested)h]h3gpio whose IRQ will be returned (already requested)}(hjɆhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjņhMghjƆubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjņhMghjubah}(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:24: ./drivers/gpio/gpiolib.c3hMihjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMihjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!gpiochip_lock_as_irq (C function)c.gpiochip_lock_as_irqhNtauh1j hhhhhNhNubj)}(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}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj,hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,hhhj>hMubjQ)}(hgpiochip_lock_as_irqh]jW)}(hgpiochip_lock_as_irqh]hgpiochip_lock_as_irq}(hjQhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjMubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj,hhhj>hMubjp)}(h+(struct gpio_chip *gc, unsigned int offset)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjmhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjiubj@)}(h h]h }(hjzhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jSsbc.gpiochip_lock_as_irqasbuh1hhjiubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjiubjW)}(hgch]hgc}(hjƇhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjiubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjeubjv)}(hunsigned int offseth](j|)}(hunsignedh]hunsigned}(hj߇hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjۇubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjۇubj|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjۇubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjۇubjW)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjۇubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjeubeh}(h]h ]h"]h$]h&]jnjouh1johj,hhhj>hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj(hhhj>hMubah}(h]j#ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj>hMhj%hhubj)}(hhh]h)}(hlock a GPIO to be used as IRQh]hlock a GPIO to be used as IRQ}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj>hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj>hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjYjjYjjjuh1jhhhhhNhNubj)}(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)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj]ubj)}(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:24: ./drivers/gpio/gpiolib.chMhj|ubj")}(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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hj|ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjyubj)}(h>``unsigned int offset`` the offset of the GPIO to lock as IRQ h](j)}(h``unsigned int offset``h]j )}(hjh]hunsigned int offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubj")}(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ЈhMhjшubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjЈhMhjyubeh}(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:24: ./drivers/gpio/gpiolib.chMhj]ubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj]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:24: ./drivers/gpio/gpiolib.chMhj]ubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j#gpiochip_unlock_as_irq (C function)c.gpiochip_unlock_as_irqhNtauh1j hhhhhNhNubj)}(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}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj^hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjqhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj^hhhjphMubjQ)}(hgpiochip_unlock_as_irqh]jW)}(hgpiochip_unlock_as_irqh]hgpiochip_unlock_as_irq}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj^hhhjphMubjp)}(h+(struct gpio_chip *gc, unsigned int offset)h](jv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.gpiochip_unlock_as_irqasbuh1hhjubj@)}(h h]h }(hj݉hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hgch]hgc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned int offseth](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubj|)}(hinth]hint}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj ubj@)}(h h]h }(hj;hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubjW)}(hoffseth]hoffset}(hjIhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj^hhhjphMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjZhhhjphMubah}(h]jUah ](j|j}eh"]h$]h&]jj)jhuh1j!hjphMhjWhhubj)}(hhh]h)}(hunlock a GPIO used as IRQh]hunlock a GPIO used as IRQ}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjphhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjphMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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:24: ./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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(h$the chip the GPIO to lock belongs toh]h$the chip the GPIO to lock belongs to}(hj͊hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjɊhMhjʊubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjɊhMhjubj)}(h>``unsigned int offset`` the offset of the GPIO to lock as IRQ h](j)}(h``unsigned int offset``h]j )}(hjh]hunsigned int offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(h%the offset of the GPIO to lock as IRQh]h%the offset of the GPIO to lock as IRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(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&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./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.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j)gpiod_get_raw_value_cansleep (C function)c.gpiod_get_raw_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjihhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM@ubj@)}(h h]h }(hj|hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjihhhj{hM@ubjQ)}(hgpiod_get_raw_value_cansleeph]jW)}(hgpiod_get_raw_value_cansleeph]hgpiod_get_raw_value_cansleep}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjihhhj{hM@ubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj.)}(hj1h]hstruct}(hjŋhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjҋhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.gpiod_get_raw_value_cansleepasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johjihhhj{hM@ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjehhhj{hM@ubah}(h]j`ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj{hM@hjbhhubj)}(hhh]h)}(hreturn a gpio's raw valueh]hreturn a gpio’s raw value}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM7hjEhhubah}(h]h ]h"]h$]h&]uh1jhjbhhhj{hM@ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj`jj`jjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chM;hjdubj)}(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:24: ./drivers/gpio/gpiolib.chM8hjubj")}(hhh]h)}(h!gpio whose value will be returnedh]h!gpio whose value will be returned}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM8hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM8hjubah}(h]h ]h"]h$]h&]uh1jhjdubh)}(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:24: ./drivers/gpio/gpiolib.chM:hjdubh)}(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.}(hjڌhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM:hjdubh)}(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:24: ./drivers/gpio/gpiolib.chM=hjdubh)}(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:24: ./drivers/gpio/gpiolib.chM>hjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j%gpiod_get_value_cansleep (C function)c.gpiod_get_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj,hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMRubj@)}(h h]h }(hj?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,hhhj>hMRubjQ)}(hgpiod_get_value_cansleeph]jW)}(hgpiod_get_value_cansleeph]hgpiod_get_value_cansleep}(hjQhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjMubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj,hhhj>hMRubjp)}(h(const struct gpio_desc *desc)h]jv)}(hconst struct gpio_desc *desch](j.)}(hj{#h]hconst}(hjmhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjiubj@)}(h h]h }(hjzhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubj.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjiubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jSsbc.gpiod_get_value_cansleepasbuh1hhjiubj@)}(h h]h }(hjƍhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubjH)}(hjKh]h*}(hjԍhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjiubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjiubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjeubah}(h]h ]h"]h$]h&]jnjouh1johj,hhhj>hMRubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj(hhhj>hMRubah}(h]j#ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj>hMRhj%hhubj)}(hhh]h)}(hreturn a gpio's valueh]hreturn a gpio’s value}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMIhjhhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj>hMRubeh}(h]h ](jfunctioneh"]h$]h&]jjjj#jj#jjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMMhj'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 )}(hjLh]hconst struct gpio_desc *desc}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjJubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMJhjFubj")}(hhh]h)}(h!gpio whose value will be returnedh]h!gpio whose value will be returned}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMJhjbubah}(h]h ]h"]h$]h&]uh1j!hjFubeh}(h]h ]h"]h$]h&]uh1jhjahMJhjCubah}(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:24: ./drivers/gpio/gpiolib.chMLhj'ubh)}(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:24: ./drivers/gpio/gpiolib.chMLhj'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:24: ./drivers/gpio/gpiolib.chMOhj'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.}(hjĎhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMPhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j/gpiod_get_raw_array_value_cansleep (C function)$c.gpiod_get_raw_array_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMrubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMrubjQ)}(h"gpiod_get_raw_array_value_cansleeph]jW)}(h"gpiod_get_raw_array_value_cansleeph]h"gpiod_get_raw_array_value_cansleep}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMrubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj,ubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubj|)}(hinth]hint}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj,ubj@)}(h h]h }(hjZhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubjW)}(h array_sizeh]h array_size}(hjhhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj(ubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj}ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsb$c.gpiod_get_raw_array_value_cansleepasbuh1hhj}ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}ubjH)}(hjKh]h*}(hj͏hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj}ubjH)}(hjKh]h*}(hjڏhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj}ubjW)}(h desc_arrayh]h desc_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj}ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj(ubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj modnameN classnameNjj)}j]j$c.gpiod_get_raw_array_value_cansleepasbuh1hhjubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjJhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h array_infoh]h array_info}(hjWhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj(ubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjlubj@)}(h h]h }(hj~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubj|)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjlubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjlubjW)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjlubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj(ubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMrubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMrubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMrhjhhubj)}(hhh]h)}(h&read raw values from an array of GPIOsh]h&read raw values from an array of GPIOs}(hjߐhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMdhjܐhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMrubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMhhjubj)}(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 hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMehjubj")}(hhh]h)}(h9number of elements in the descriptor array / value bitmaph]h9number of elements in the descriptor array / value bitmap}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMehj6ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj5hMehjubj)}(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 )}(hjYh]hstruct gpio_desc **desc_array}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMfhjSubj")}(hhh]h)}(h3array of GPIO descriptors whose values will be readh]h3array of GPIO descriptors whose values will be read}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMfhjoubah}(h]h ]h"]h$]h&]uh1j!hjSubeh}(h]h ]h"]h$]h&]uh1jhjnhMfhjubj)}(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:24: ./drivers/gpio/gpiolib.chMghjubj")}(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&]uh1hhjhMghjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMghjubj)}(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 hjɑubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhhjőubj")}(hhh]h)}(hbitmap to store the read valuesh]hbitmap to store the read values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhhjubah}(h]h ]h"]h$]h&]uh1j!hjőubeh}(h]h ]h"]h$]h&]uh1jhjhMhhjubeh}(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:24: ./drivers/gpio/gpiolib.chMjhjubh)}(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:24: ./drivers/gpio/gpiolib.chMjhjubh)}(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:24: ./drivers/gpio/gpiolib.chMmhjubh)}(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:24: ./drivers/gpio/gpiolib.chMohjubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMohjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j+gpiod_get_array_value_cansleep (C function) c.gpiod_get_array_value_cansleephNtauh1j hhhhhNhNubj)}(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&]uh1j{hj}hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}hhhjhMubjQ)}(hgpiod_get_array_value_cansleeph]jW)}(hgpiod_get_array_value_cansleeph]hgpiod_get_array_value_cansleep}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj}hhhjhMubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj̒hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hinth]hint}(hjڒhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(h array_sizeh]h array_size}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj-hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj/modnameN classnameNjj)}j]j3)}j+jsb c.gpiod_get_array_value_cansleepasbuh1hhj ubj@)}(h h]h }(hjMhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubjH)}(hjKh]h*}(hj[hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj ubjH)}(hjKh]h*}(hjhhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj ubjW)}(h desc_arrayh]h desc_array}(hjuhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jI c.gpiod_get_array_value_cansleepasbuh1hhjubj@)}(h h]h }(hjʓhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjؓhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h array_infoh]h array_info}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h value_bitmaph]h value_bitmap}(hjChhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj}hhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjyhhhjhMubah}(h]jtah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjvhhubj)}(hhh]h)}(h"read values from an array of GPIOsh]h"read values from an array of GPIOs}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjjhhubah}(h]h ]h"]h$]h&]uh1jhjvhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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:24: ./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 )}(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:24: ./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&]uh1hhjÔhMhjĔubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjÔhMhjubj)}(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 )}(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:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(h3array of GPIO descriptors whose values will be readh]h3array of GPIO descriptors whose values will be read}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(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}(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:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(h;information on applicability of fast bitmap processing pathh]h;information on applicability of fast bitmap processing path}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMhj6ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj5hMhjubj)}(h@``unsigned long *value_bitmap`` bitmap to store the read values h](j)}(h``unsigned long *value_bitmap``h]j )}(hjYh]hunsigned long *value_bitmap}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjWubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjSubj")}(hhh]h)}(hbitmap to store the read valuesh]hbitmap to store the read values}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjoubah}(h]h ]h"]h$]h&]uh1j!hjSubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjubeh}(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:24: ./drivers/gpio/gpiolib.chMhjubh)}(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:24: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubh)}(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:24: ./drivers/gpio/gpiolib.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&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j)gpiod_set_raw_value_cansleep (C function)c.gpiod_set_raw_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhjhMubjQ)}(hgpiod_set_raw_value_cansleeph]jW)}(hgpiod_set_raw_value_cansleeph]hgpiod_set_raw_value_cansleep}(hj0hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj hhhjhMubjp)}(h#(struct gpio_desc *desc, int value)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjLhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjHubj@)}(h h]h }(hjYhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjHubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjgubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjlmodnameN classnameNjj)}j]j3)}j+j2sbc.gpiod_set_raw_value_cansleepasbuh1hhjHubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjHubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjHubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjHubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjDubjv)}(h int valueh](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj̖hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hvalueh]hvalue}(hjږhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjDubeh}(h]h ]h"]h$]h&]jnjouh1johj hhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(hhh]h)}(hassign a gpio's raw valueh]hassign a gpio’s raw value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMhj ubj)}(hhh](j)}(h=``struct gpio_desc *desc`` gpio whose value will be assigned h](j)}(h``struct gpio_desc *desc``h]j )}(hjEh]hstruct gpio_desc *desc}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj?ubj")}(hhh]h)}(h!gpio whose value will be assignedh]h!gpio whose value will be assigned}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1j!hj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhMhj<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:24: ./drivers/gpio/gpiolib.chMhjxubj")}(hhh]h)}(hvalue to assignh]hvalue to assign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjxubeh}(h]h ]h"]h$]h&]uh1jhjhMhj<ubeh}(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:24: ./drivers/gpio/gpiolib.chMhj ubh)}(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.}(hjϗhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./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.}(hjޗhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj 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:24: ./drivers/gpio/gpiolib.chMhj ubh)}(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:24: ./drivers/gpio/gpiolib.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j%gpiod_set_value_cansleep (C function)c.gpiod_set_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj0hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj0hhhjBhMubjQ)}(hgpiod_set_value_cansleeph]jW)}(hgpiod_set_value_cansleeph]hgpiod_set_value_cansleep}(hjUhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjQubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj0hhhjBhMubjp)}(h#(struct gpio_desc *desc, int value)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjqhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjmubj@)}(h h]h }(hj~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjmubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jWsbc.gpiod_set_value_cansleepasbuh1hhjmubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjmubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjmubjW)}(hdesch]hdesc}(hjʘhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjmubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjiubjv)}(h int valueh](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjߘubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjߘubjW)}(hvalueh]hvalue}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjߘubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjiubeh}(h]h ]h"]h$]h&]jnjouh1johj0hhhjBhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj,hhhjBhMubah}(h]j'ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjBhMhj)hhubj)}(hhh]h)}(hassign a gpio's valueh]hassign a gpio’s value}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj&hhubah}(h]h ]h"]h$]h&]uh1jhj)hhhjBhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjAjjAjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMhjEubj)}(hhh](j)}(h=``struct gpio_desc *desc`` gpio whose value will be assigned h](j)}(h``struct gpio_desc *desc``h]j )}(hjjh]hstruct gpio_desc *desc}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjdubj")}(hhh]h)}(h!gpio whose value will be assignedh]h!gpio whose value will be assigned}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjdubeh}(h]h ]h"]h$]h&]uh1jhjhMhjaubj)}(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:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(hvalue to assignh]hvalue to assign}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjaubeh}(h]h ]h"]h$]h&]uh1jhjEubh)}(h**Description**h]j)}(hjޙh]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:24: ./drivers/gpio/gpiolib.chMhjEubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjEubh)}(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:24: ./drivers/gpio/gpiolib.chMhjEubh)}(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:24: ./drivers/gpio/gpiolib.chMhjEubh)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j/gpiod_set_raw_array_value_cansleep (C function)$c.gpiod_set_raw_array_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjUhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjUhhhjghMubjQ)}(h"gpiod_set_raw_array_value_cansleeph]jW)}(h"gpiod_set_raw_array_value_cansleeph]h"gpiod_set_raw_array_value_cansleep}(hjzhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjvubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjUhhhjghMubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(h array_sizeh]h array_size}(hjΚhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+j|sb$c.gpiod_set_raw_array_value_cansleepasbuh1hhjubj@)}(h h]h }(hj%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj3hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjH)}(hjKh]h*}(hj@hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h desc_arrayh]h desc_array}(hjMhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hjfhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjbubj@)}(h h]h }(hjshhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjbubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j!$c.gpiod_set_raw_array_value_cansleepasbuh1hhjbubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjbubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjbubjW)}(h array_infoh]h array_info}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjbubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hj֛hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjқubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjқubj|)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjқubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjқubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjқubjW)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjқubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjUhhhjghMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjQhhhjghMubah}(h]jLah ](j|j}eh"]h$]h&]jj)jhuh1j!hjghMhjNhhubj)}(hhh]h)}(h"assign values to an array of GPIOsh]h"assign values to an array of GPIOs}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjBhhubah}(h]h ]h"]h$]h&]uh1jhjNhhhjghMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]jj]jjjuh1jhhhhhNhNubj)}(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)}(hjgh]h Parameters}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjaubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj}ubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjԜhMhj}ubj)}(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:24: ./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&]uh1hhj hMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hMhj}ubj)}(h;``unsigned long *value_bitmap`` bitmap of values to assign h](j)}(h``unsigned long *value_bitmap``h]j )}(hj1h]hunsigned long *value_bitmap}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj+ubj")}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjGubah}(h]h ]h"]h$]h&]uh1j!hj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhMhj}ubeh}(h]h ]h"]h$]h&]uh1jhjaubh)}(h**Description**h]j)}(hjlh]h Description}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjaubh)}(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:24: ./drivers/gpio/gpiolib.chMhjaubh)}(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:24: ./drivers/gpio/gpiolib.chMhjaubh)}(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:24: ./drivers/gpio/gpiolib.chMhjaubh)}(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:24: ./drivers/gpio/gpiolib.chMhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j+gpiod_set_array_value_cansleep (C function) c.gpiod_set_array_value_cansleephNtauh1j hhhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjQ)}(hgpiod_set_array_value_cansleeph]jW)}(hgpiod_set_array_value_cansleeph]hgpiod_set_array_value_cansleep}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMubjp)}(ht(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap)h](jv)}(hunsigned int array_sizeh](j|)}(hunsignedh]hunsigned}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj ubj@)}(h h]h }(hj2hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubj|)}(hinth]hint}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj ubj@)}(h h]h }(hjNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubjW)}(h array_sizeh]h array_size}(hj\hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_desc **desc_arrayh](j.)}(hj1h]hstruct}(hjuhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjqubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjqubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+j sb c.gpiod_set_array_value_cansleepasbuh1hhjqubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjqubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjqubjH)}(hjKh]h*}(hjΞhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjqubjW)}(h desc_arrayh]h desc_array}(hj۞hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjqubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_array *array_infoh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_arrayh]h gpio_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j c.gpiod_set_array_value_cansleepasbuh1hhjubj@)}(h h]h }(hj0hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj>hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h array_infoh]h array_info}(hjKhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned long *value_bitmaph](j|)}(hunsignedh]hunsigned}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj`ubj@)}(h h]h }(hjrhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj`ubj|)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj`ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj`ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj`ubjW)}(h value_bitmaph]h value_bitmap}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj`ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjߝhhhjhMubah}(h]jڝah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjܝhhubj)}(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:24: ./drivers/gpio/gpiolib.chMhjПhhubah}(h]h ]h"]h$]h&]uh1jhjܝhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./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 )}(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:24: ./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&]uh1hhj)hMhj*ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj ubj)}(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 )}(hjMh]hstruct gpio_desc **desc_array}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjKubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjGubj")}(hhh]h)}(h7array of GPIO descriptors whose values will be assignedh]h7array of GPIO descriptors whose values will be assigned}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjcubah}(h]h ]h"]h$]h&]uh1j!hjGubeh}(h]h ]h"]h$]h&]uh1jhjbhMhj ubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj ubj)}(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:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(hbitmap of values to assignh]hbitmap of values to assign}(hjؠhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjԠhMhjՠubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjԠhMhj 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&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubh)}(h **Return**h]j)}(hj0h]hReturn}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubh)}(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:24: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j#gpiod_add_lookup_table (C function)c.gpiod_add_lookup_tablehNtauh1j hhhhhNhNubj)}(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}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjqhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjqhhhjhMubjQ)}(hgpiod_add_lookup_tableh]jW)}(hgpiod_add_lookup_tableh]hgpiod_add_lookup_table}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjqhhhjhMubjp)}(h"(struct gpiod_lookup_table *table)h]jv)}(h struct gpiod_lookup_table *tableh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hgpiod_lookup_tableh]hgpiod_lookup_table}(hjСhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj͡ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjҡmodnameN classnameNjj)}j]j3)}j+jsbc.gpiod_add_lookup_tableasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(htableh]htable}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johjqhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjmhhhjhMubah}(h]jhah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjjhhubj)}(hhh]h)}(hregister GPIO device consumersh]hregister GPIO device consumers}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj2hhubah}(h]h ]h"]h$]h&]uh1jhjjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjMjjMjjjuh1jhhhhhNhNubj)}(hU**Parameters** ``struct gpiod_lookup_table *table`` table of consumers to registerh](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjQubj)}(hhh]j)}(hC``struct gpiod_lookup_table *table`` table of consumers to registerh](j)}(h$``struct gpiod_lookup_table *table``h]j )}(hjvh]h struct gpiod_lookup_table *table}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjtubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjpubj")}(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:24: ./drivers/gpio/gpiolib.chMhjubah}(h]h ]h"]h$]h&]uh1j!hjpubeh}(h]h ]h"]h$]h&]uh1jhjhMhjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j&gpiod_remove_lookup_table (C function)c.gpiod_remove_lookup_tablehNtauh1j hhhhhNhNubj)}(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&]uh1j{hj̢hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM&ubj@)}(h h]h }(hjߢhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj̢hhhjޢhM&ubjQ)}(hgpiod_remove_lookup_tableh]jW)}(hgpiod_remove_lookup_tableh]hgpiod_remove_lookup_table}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj̢hhhjޢhM&ubjp)}(h"(struct gpiod_lookup_table *table)h]jv)}(h struct gpiod_lookup_table *tableh](j.)}(hj1h]hstruct}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubh)}(hhh]jW)}(hgpiod_lookup_tableh]hgpiod_lookup_table}(hj+hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj-modnameN classnameNjj)}j]j3)}j+jsbc.gpiod_remove_lookup_tableasbuh1hhj ubj@)}(h h]h }(hjKhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubjH)}(hjKh]h*}(hjYhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj ubjW)}(htableh]htable}(hjfhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johj̢hhhjޢhM&ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjȢhhhjޢhM&ubah}(h]jâah ](j|j}eh"]h$]h&]jj)jhuh1j!hjޢhM&hjŢ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:24: ./drivers/gpio/gpiolib.chM#hjhhubah}(h]h ]h"]h$]h&]uh1jhjŢhhhjޢhM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chM'hjubj)}(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 hjϣubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM)hjˣubj")}(hhh]h)}(h table of consumers to unregisterh]h table of consumers to unregister}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM$hjubah}(h]h ]h"]h$]h&]uh1j!hjˣubeh}(h]h ]h"]h$]h&]uh1jhjhM)hjȣubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_add_hogs (C function)c.gpiod_add_hogshNtauh1j hhhhhNhNubj)}(hhh](j")}(h,void gpiod_add_hogs (struct gpiod_hog *hogs)h]j()}(h+void gpiod_add_hogs(struct gpiod_hog *hogs)h](j|)}(hvoidh]hvoid}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj'hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM8ubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'hhhj9hM8ubjQ)}(hgpiod_add_hogsh]jW)}(hgpiod_add_hogsh]hgpiod_add_hogs}(hjLhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjHubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj'hhhj9hM8ubjp)}(h(struct gpiod_hog *hogs)h]jv)}(hstruct gpiod_hog *hogsh](j.)}(hj1h]hstruct}(hjhhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjdubj@)}(h h]h }(hjuhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjdubh)}(hhh]jW)}(h gpiod_hogh]h gpiod_hog}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jNsbc.gpiod_add_hogsasbuh1hhjdubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjdubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjdubjW)}(hhogsh]hhogs}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjdubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj`ubah}(h]h ]h"]h$]h&]jnjouh1johj'hhhj9hM8ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj#hhhj9hM8ubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hj9hM8hj hhubj)}(hhh]h)}(h-register a set of GPIO hogs from machine codeh]h-register a set of GPIO hogs from machine code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM5hjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj9hM8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hh**Parameters** ``struct gpiod_hog *hogs`` table of gpio hog entries with a zeroed sentinel at the endh](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:24: ./drivers/gpio/gpiolib.chM9hjubj)}(hhh]j)}(hV``struct gpiod_hog *hogs`` table of gpio hog entries with a zeroed sentinel at the endh](j)}(h``struct gpiod_hog *hogs``h]j )}(hj,h]hstruct gpiod_hog *hogs}(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:24: ./drivers/gpio/gpiolib.chM;hj&ubj")}(hhh]h)}(h;table of gpio hog entries with a zeroed sentinel at the endh]h;table of gpio hog entries with a zeroed sentinel at the end}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM6hjBubah}(h]h ]h"]h$]h&]uh1j!hj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhM;hj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j#fwnode_gpiod_get_index (C function)c.fwnode_gpiod_get_indexhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMDubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMDubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+fwnode_gpiod_get_indexsbc.fwnode_gpiod_get_indexasbuh1hhjhhhjhMDubj@)}(h h]h }(hjƥhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMDubjH)}(hjKh]h*}(hjԥhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhjhMDubjQ)}(hfwnode_gpiod_get_indexh]jW)}(hjåh]hfwnode_gpiod_get_index}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMDubjp)}(hh(struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h](jv)}(hstruct fwnode_handle *fwnodeh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h fwnode_handleh]h fwnode_handle}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj modnameN classnameNjj)}j]jc.fwnode_gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjJhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hfwnodeh]hfwnode}(hjWhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjphhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjlubj@)}(h h]h }(hj}hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjlubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjlubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjlubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(h int indexh](j|)}(hinth]hint}(hjͦhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjɦubj@)}(h h]h }(hjۦhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjɦubjW)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjɦubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj"modnameN classnameNjj)}j]jc.fwnode_gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hflagsh]hflags}(hjLhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *labelh](j.)}(hj{#h]hconst}(hjehhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjaubj@)}(h h]h }(hjrhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjaubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjaubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjaubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjaubjW)}(hlabelh]hlabel}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjaubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMDubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj~hhhjhMDubah}(h]jyah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMDhj{hhubj)}(hhh]h)}(h obtain a GPIO from firmware nodeh]h obtain a GPIO from firmware node}(hjӧhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM0hjЧhhubah}(h]h ]h"]h$]h&]uh1jhj{hhhjhMDubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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:24: ./drivers/gpio/gpiolib.chM4hjubj)}(hhh](j)}(h=``struct fwnode_handle *fwnode`` handle of the firmware node h](j)}(h ``struct fwnode_handle *fwnode``h]j )}(hjh]hstruct fwnode_handle *fwnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM1hjubj")}(hhh]h)}(hhandle of the firmware nodeh]hhandle of the firmware node}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hM1hj*ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj)hM1hj ubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j )}(hjMh]hconst char *con_id}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjKubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM2hjGubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhM2hjcubah}(h]h ]h"]h$]h&]uh1j!hjGubeh}(h]h ]h"]h$]h&]uh1jhjbhM2hj ubj)}(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:24: ./drivers/gpio/gpiolib.chM3hjubj")}(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&]uh1hhjhM3hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM3hj ubj)}(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&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM4hjubj")}(hhh]h)}(hGPIO initialization flagsh]hGPIO initialization flags}(hjبhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjԨhM4hjըubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjԨhM4hj ubj)}(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&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM5hjubj")}(hhh]h)}(h%label to attach to the requested GPIOh]h%label to attach to the requested GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM5hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hM5hj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj3h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM7hjubh)}(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.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM7hjubh)}(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.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM:hjubh)}(h*In case of error an ERR_PTR() is returned.h]h*In case of error an ERR_PTR() is returned.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM>hjubh)}(h **Return**h]j)}(hjxh]hReturn}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM@hjubh)}(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:24: ./drivers/gpio/gpiolib.chM>hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_count (C function) c.gpiod_counthNtauh1j hhhhhNhNubj)}(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&]uh1j{hj˩hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMWubj@)}(h h]h }(hjީhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj˩hhhjݩhMWubjQ)}(h gpiod_counth]jW)}(h gpiod_counth]h gpiod_count}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj˩hhhjݩhMWubjp)}(h((struct device *dev, const char *con_id)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hj*hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj,modnameN classnameNjj)}j]j3)}j+jsb c.gpiod_countasbuh1hhjubj@)}(h h]h }(hjJhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjXhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjehhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hj~hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjzubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjzubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjzubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjzubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjzubjW)}(hcon_idh]hcon_id}(hjªhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjzubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj˩hhhjݩhMWubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjǩhhhjݩhMWubah}(h]j©ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjݩhMWhjĩ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:24: ./drivers/gpio/gpiolib.chMOhjhhubah}(h]h ]h"]h$]h&]uh1jhjĩhhhjݩhMWubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMShjubj)}(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:24: ./drivers/gpio/gpiolib.chMPhj'ubj")}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMPhjCubah}(h]h ]h"]h$]h&]uh1j!hj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhMPhj$ubj)}(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&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMQhj`ubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMQhj|ubah}(h]h ]h"]h$]h&]uh1j!hj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hMQhj$ubeh}(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:24: ./drivers/gpio/gpiolib.chMShjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMShjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_get (C function) c.gpiod_gethNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMuubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMuubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+ gpiod_getsb c.gpiod_getasbuh1hhjhhhjhMuubj@)}(h h]h }(hj&hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMuubjH)}(hjKh]h*}(hj4hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhjhMuubjQ)}(h gpiod_geth]jW)}(hj#h]h gpiod_get}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjAubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMuubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hj`hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj\ubj@)}(h h]h }(hjmhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubh)}(hhh]jW)}(hdeviceh]hdevice}(hj~hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j! c.gpiod_getasbuh1hhj\ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj\ubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj\ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjXubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjЬhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj̬ubj@)}(h h]h }(hjݬhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj̬ubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj̬ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj̬ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj̬ubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj̬ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjXubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hj-hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj)ubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj)ubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjKhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjMmodnameN classnameNjj)}j]j! c.gpiod_getasbuh1hhj)ubj@)}(h h]h }(hjihhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj)ubjW)}(hflagsh]hflags}(hjwhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj)ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjXubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMuubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjޫhhhjhMuubah}(h]j٫ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMuhj۫hhubj)}(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:24: ./drivers/gpio/gpiolib.chMkhjhhubah}(h]h ]h"]h$]h&]uh1jhj۫hhhjhMuubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMohjubj)}(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:24: ./drivers/gpio/gpiolib.chMlhjܭubj")}(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&]uh1hhjhMlhjubah}(h]h ]h"]h$]h&]uh1j!hjܭubeh}(h]h ]h"]h$]h&]uh1jhjhMlhj٭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:24: ./drivers/gpio/gpiolib.chMmhjubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hMmhj1ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj0hMmhj٭ubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j )}(hjTh]henum gpiod_flags flags}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjRubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMnhjNubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihMnhjjubah}(h]h ]h"]h$]h&]uh1j!hjNubeh}(h]h ]h"]h$]h&]uh1jhjihMnhj٭ubeh}(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:24: ./drivers/gpio/gpiolib.chMphjubh)}(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:24: ./drivers/gpio/gpiolib.chMphjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_get_optional (C function)c.gpiod_get_optionalhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+gpiod_get_optionalsbc.gpiod_get_optionalasbuh1hhjhhhjhMubj@)}(h h]h }(hj&hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjH)}(hjKh]h*}(hj4hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhjhMubjQ)}(hgpiod_get_optionalh]jW)}(hj#h]hgpiod_get_optional}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjAubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hj`hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj\ubj@)}(h h]h }(hjmhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubh)}(hhh]jW)}(hdeviceh]hdevice}(hj~hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j!c.gpiod_get_optionalasbuh1hhj\ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj\ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj\ubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj\ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjXubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjЯhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj̯ubj@)}(h h]h }(hjݯhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj̯ubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj̯ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj̯ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj̯ubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj̯ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjXubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hj-hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj)ubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj)ubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjKhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjMmodnameN classnameNjj)}j]j!c.gpiod_get_optionalasbuh1hhj)ubj@)}(h h]h }(hjihhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj)ubjW)}(hflagsh]hflags}(hjwhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj)ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjXubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjޮhhhjhMubah}(h]jٮah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjۮhhubj)}(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:24: ./drivers/gpio/gpiolib.chM}hjhhubah}(h]h ]h"]h$]h&]uh1jhjۮhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM~hjܰubj")}(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&]uh1hhjhM~hjubah}(h]h ]h"]h$]h&]uh1j!hjܰubeh}(h]h ]h"]h$]h&]uh1jhjhM~hjٰ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:24: ./drivers/gpio/gpiolib.chMhjubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hMhj1ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj0hMhjٰubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j )}(hjTh]henum gpiod_flags flags}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjRubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjNubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihMhjjubah}(h]h ]h"]h$]h&]uh1j!hjNubeh}(h]h ]h"]h$]h&]uh1jhjihMhjٰ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&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjubh)}(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:24: ./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:24: ./drivers/gpio/gpiolib.chMhjubh)}(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}(hjԱhhhNhNubah}(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:24: ./drivers/gpio/gpiolib.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hh(h]h}(h]h ]h"]h$]h&]entries](jgpiod_get_index (C function)c.gpiod_get_indexhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj hhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhjhMubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj,hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj.modnameN classnameNjj)}j]j3)}j+gpiod_get_indexsbc.gpiod_get_indexasbuh1hhj hhhjhMubj@)}(h h]h }(hjMhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhjhMubjH)}(hjKh]h*}(hj[hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj hhhjhMubjQ)}(hgpiod_get_indexh]jW)}(hjJh]hgpiod_get_index}(hjlhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjhubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj hhhjhMubjp)}(hR(struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jHc.gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hjòhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjѲhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hj޲hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj.hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hj;hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned int idxh](j|)}(hunsignedh]hunsigned}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjPubj@)}(h h]h }(hjbhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjPubj|)}(hinth]hint}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjPubj@)}(h h]h }(hj~hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjPubjW)}(hidxh]hidx}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjPubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjóhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjųmodnameN classnameNjj)}j]jHc.gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj hhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(hhh]h)}(h.obtain a GPIO from a multi-index GPIO functionh]h.obtain a GPIO from a multi-index GPIO function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1jjjuh1jhhhhhNhNubj)}(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)}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj5ubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j )}(hjZh]hstruct device *dev}(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:24: ./drivers/gpio/gpiolib.chMhjTubj")}(hhh]h)}(h2GPIO consumer, can be NULL for system-global GPIOsh]h2GPIO consumer, can be NULL for system-global GPIOs}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjpubah}(h]h ]h"]h$]h&]uh1j!hjTubeh}(h]h ]h"]h$]h&]uh1jhjohMhjQubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubj)}(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:24: ./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&]uh1j!hjƴubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubeh}(h]h ]h"]h$]h&]uh1jhj5ubh)}(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:24: ./drivers/gpio/gpiolib.chMhj5ubh)}(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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj5ubh)}(h **Return**h]j)}(hjgh]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj5ubh)}(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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j%gpiod_get_index_optional (C function)c.gpiod_get_index_optionalhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj˵hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjȵubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj͵modnameN classnameNjj)}j]j3)}j+gpiod_get_index_optionalsbc.gpiod_get_index_optionalasbuh1hhjhhhjhM ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhjhM ubjQ)}(hgpiod_get_index_optionalh]jW)}(hjh]hgpiod_get_index_optional}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhM ubjp)}(hT(struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hj&hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj"ubj@)}(h h]h }(hj3hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj"ubh)}(hhh]jW)}(hdeviceh]hdevice}(hjDhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjFmodnameN classnameNjj)}j]jc.gpiod_get_index_optionalasbuh1hhj"ubj@)}(h h]h }(hjbhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj"ubjH)}(hjKh]h*}(hjphhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj"ubjW)}(hdevh]hdev}(hj}hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj"ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjͶhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hjڶhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned int indexh](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hindexh]hindex}(hj+hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjDhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj@ubj@)}(h h]h }(hjQhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj@ubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjbhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjdmodnameN classnameNjj)}j]jc.gpiod_get_index_optionalasbuh1hhj@ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj@ubjW)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj@ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhM ubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhM hjhhubj)}(hhh]h)}(h8obtain an optional GPIO from a multi-index GPIO functionh]h8obtain an optional GPIO from a multi-index GPIO function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjзjjзjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMhjԷ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:24: ./drivers/gpio/gpiolib.chMhjubj")}(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&]uh1j!hjubeh}(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 )}(hj2h]hconst char *con_id}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj,ubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjHubah}(h]h ]h"]h$]h&]uh1j!hj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjubj)}(hC``unsigned int index`` index of the GPIO to obtain in the consumer h](j)}(h``unsigned int index``h]j )}(hjkh]hunsigned int index}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjiubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjeubj")}(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&]uh1j!hjeubeh}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjԷubh)}(h**Description**h]j)}(hj߸h]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:24: ./drivers/gpio/gpiolib.chMhjԷubh)}(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:24: ./drivers/gpio/gpiolib.chMhjԷ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:24: ./drivers/gpio/gpiolib.chMhjԷubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjԷubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_get_array (C function)c.gpiod_get_arrayhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjKhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjGhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMbubj@)}(h h]h }(hjYhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGhhhjXhMbubh)}(hhh]jW)}(h gpio_descsh]h gpio_descs}(hjjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjgubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjlmodnameN classnameNjj)}j]j3)}j+gpiod_get_arraysbc.gpiod_get_arrayasbuh1hhjGhhhjXhMbubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGhhhjXhMbubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjGhhhjXhMbubjQ)}(hgpiod_get_arrayh]jW)}(hjh]hgpiod_get_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjGhhhjXhMbubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjŹhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjҹhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jc.gpiod_get_arrayasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hj5hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj1ubj@)}(h h]h }(hjBhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj1ubj|)}(hcharh]hchar}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj1ubj@)}(h h]h }(hj^hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj1ubjH)}(hjKh]h*}(hjlhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj1ubjW)}(hcon_idh]hcon_id}(hjyhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj1ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jc.gpiod_get_arrayasbuh1hhjubj@)}(h h]h }(hjκhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hflagsh]hflags}(hjܺhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjGhhhjXhMbubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjChhhjXhMbubah}(h]j>ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjXhMbhj@hhubj)}(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:24: ./drivers/gpio/gpiolib.chMUhjhhubah}(h]h ]h"]h$]h&]uh1jhj@hhhjXhMbubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMYhj"ubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j )}(hjGh]hstruct device *dev}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjEubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMVhjAubj")}(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&]uh1hhj\hMVhj]ubah}(h]h ]h"]h$]h&]uh1j!hjAubeh}(h]h ]h"]h$]h&]uh1jhj\hMVhj>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 hj~ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMWhjzubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1j!hjzubeh}(h]h ]h"]h$]h&]uh1jhjhMWhj>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:24: ./drivers/gpio/gpiolib.chMXhjubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjһhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjλhMXhjϻubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjλhMXhj>ubeh}(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:24: ./drivers/gpio/gpiolib.chMZhj"ubh)}(hDThis function acquires all the GPIOs defined under a given function.h]hDThis function acquires all the GPIOs defined under a given function.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMZhj"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:24: ./drivers/gpio/gpiolib.chM\hj"ubh)}(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 }(hj1hhhNhNubj)}(h **con_id**h]hcon_id}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh 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.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM\hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j%gpiod_get_array_optional (C function)c.gpiod_get_array_optionalhNtauh1j hhhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjrhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjnhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjnhhhjhMubh)}(hhh]jW)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+gpiod_get_array_optionalsbc.gpiod_get_array_optionalasbuh1hhjnhhhjhMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjnhhhjhMubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjnhhhjhMubjQ)}(hgpiod_get_array_optionalh]jW)}(hjh]hgpiod_get_array_optional}(hjѼhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjͼubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjnhhhjhMubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj modnameN classnameNjj)}j]jc.gpiod_get_array_optionalasbuh1hhjubj@)}(h h]h }(hj(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj6hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjChhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hj\hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjXubj@)}(h h]h }(hjihhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjXubj|)}(hcharh]hchar}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjXubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjXubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjXubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjXubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjƽhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hj׽hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjԽubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjٽmodnameN classnameNjj)}j]jc.gpiod_get_array_optionalasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjnhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjjhhhjhMubah}(h]jeah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjghhubj)}(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:24: ./drivers/gpio/gpiolib.chMhj*hhubah}(h]h ]h"]h$]h&]uh1jhjghhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjEjjEjjjuh1jhhhhhNhNubj)}(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)}(hjOh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjIubj)}(hhh](j)}(hJ``struct device *dev`` GPIO consumer, can be NULL for system-global GPIOs h](j)}(h``struct device *dev``h]j )}(hjnh]hstruct device *dev}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjhubj")}(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&]uh1j!hjhubeh}(h]h ]h"]h$]h&]uh1jhjhMhjeubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjeubj)}(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 hj޾ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjھubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjھubeh}(h]h ]h"]h$]h&]uh1jhjhMhjeubeh}(h]h ]h"]h$]h&]uh1jhjIubh)}(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:24: ./drivers/gpio/gpiolib.chMhjIubh)}(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.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjIubh)}(h **Return**h]j)}(hjBh]hReturn}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjIubh)}(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 }(hjXhhhNhNubj)}(h **con_id**h]hcon_id}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh 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.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjIubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_put (C function) c.gpiod_puthNtauh1j hhhhhNhNubj)}(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&]uh1j{hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjQ)}(h gpiod_puth]jW)}(h gpiod_puth]h gpiod_put}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMubjp)}(h(struct gpio_desc *desc)h]jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjֿhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjҿubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjҿubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsb c.gpiod_putasbuh1hhjҿubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjҿubjH)}(hjKh]h*}(hj"hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjҿubjW)}(hdesch]hdesc}(hj/hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjҿubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjοubah}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(hhh]h)}(hdispose of a GPIO descriptorh]hdispose of a GPIO descriptor}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhjVhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1jhhhhhNhNubj)}(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)}(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:24: ./drivers/gpio/gpiolib.chMhjuubj)}(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:24: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjuubh)}(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:24: ./drivers/gpio/gpiolib.chMhjuubh)}(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:24: ./drivers/gpio/gpiolib.chMhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_put_array (C function)c.gpiod_put_arrayhNtauh1j hhhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMubj@)}(h h]h }(hj)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhj(hMubjQ)}(hgpiod_put_arrayh]jW)}(hgpiod_put_arrayh]hgpiod_put_array}(hj;hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj7ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhj(hMubjp)}(h(struct gpio_descs *descs)h]jv)}(hstruct gpio_descs *descsh](j.)}(hj1h]hstruct}(hjWhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjSubj@)}(h h]h }(hjdhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjSubh)}(hhh]jW)}(h gpio_descsh]h gpio_descs}(hjuhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjrubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjwmodnameN classnameNjj)}j]j3)}j+j=sbc.gpiod_put_arrayasbuh1hhjSubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjSubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjSubjW)}(hdescsh]hdescs}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjSubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjOubah}(h]h ]h"]h$]h&]jnjouh1johjhhhj(hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhj(hMubah}(h]j ah ](j|j}eh"]h$]h&]jj)jhuh1j!hj(hMhjhhubj)}(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:24: ./drivers/gpio/gpiolib.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj(hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhhhNhNubj)}(hc**Parameters** ``struct gpio_descs *descs`` struct gpio_descs containing an array of descriptorsh](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:24: ./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 )}(hjh]hstruct gpio_descs *descs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chM hjubj")}(hhh]h)}(h4struct gpio_descs containing an array of descriptorsh]h4struct gpio_descs containing an array of descriptors}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:24: ./drivers/gpio/gpiolib.chMhj1ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj0hM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]coreah ]h"]coreah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h ACPI supporth]h ACPI support}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhhhhhKubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j&acpi_gpio_get_io_resource (C function)c.acpi_gpio_get_io_resourcehNtauh1j hjdhhhNhNubj)}(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|)}(hboolh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chKubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhKubjQ)}(hacpi_gpio_get_io_resourceh]jW)}(hacpi_gpio_get_io_resourceh]hacpi_gpio_get_io_resource}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhKubjp)}(h?(struct acpi_resource *ares, struct acpi_resource_gpio **agpio)h](jv)}(hstruct acpi_resource *aresh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h acpi_resourceh]h acpi_resource}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.acpi_gpio_get_io_resourceasbuh1hhjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(haresh]hares}(hj$hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(h!struct acpi_resource_gpio **agpioh](j.)}(hj1h]hstruct}(hj=hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj9ubj@)}(h h]h }(hjJhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj9ubh)}(hhh]jW)}(hacpi_resource_gpioh]hacpi_resource_gpio}(hj[hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjXubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj]modnameN classnameNjj)}j]jc.acpi_gpio_get_io_resourceasbuh1hhj9ubj@)}(h h]h }(hjyhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj9ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj9ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj9ubjW)}(hagpioh]hagpio}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj9ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhKubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhKhjhhubj)}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjdhNhNubj)}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chKhjubj)}(hhh](j)}(hE``struct acpi_resource *ares`` Pointer to the ACPI resource to fetch h](j)}(h``struct acpi_resource *ares``h]j )}(hj h]hstruct acpi_resource *ares}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chKhjubj")}(hhh]h)}(h%Pointer to the ACPI resource to fetchh]h%Pointer to the ACPI resource to fetch}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKhj"ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(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 )}(hjEh]h!struct acpi_resource_gpio **agpio}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chKhj?ubj")}(hhh]h)}(haPointer to a :c:type:`struct acpi_resource_gpio ` to store the output pointerh](h Pointer to a }(hj^hhhNhNubh)}(h8:c:type:`struct acpi_resource_gpio `h]j )}(hjhh]hstruct acpi_resource_gpio}(hjjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1j hjfubah}(h]h ]h"]h$]h&]refdoch׌ refdomainjreftypetype refexplicitrefwarnjjjacpi_resource_gpiouh1hhjZhKhj^ubh to store the output pointer}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjZhKhj[ubah}(h]h ]h"]h$]h&]uh1j!hj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(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:30: ./drivers/gpio/gpiolib-acpi.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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjdhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j-acpi_gpiochip_request_interrupts (C function)"c.acpi_gpiochip_request_interruptshNtauh1j hjdhhhNhNubj)}(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&]uh1j{hjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM ubjQ)}(h acpi_gpiochip_request_interruptsh]jW)}(h acpi_gpiochip_request_interruptsh]h acpi_gpiochip_request_interrupts}(hj)hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj%ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhM ubjp)}(h(struct gpio_chip *chip)h]jv)}(hstruct gpio_chip *chiph](j.)}(hj1h]hstruct}(hjEhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjAubj@)}(h h]h }(hjRhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjchhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjemodnameN classnameNjj)}j]j3)}j+j+sb"c.acpi_gpiochip_request_interruptsasbuh1hhjAubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjAubjW)}(hchiph]hchip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjAubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj=ubah}(h]h ]h"]h$]h&]jnjouh1johjhhhjhM ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhM ubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhM hjhhubj)}(hhh]h)}(h&Register isr for gpio chip ACPI eventsh]h&Register isr for gpio chip ACPI events}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjdhNhNubj)}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chMhjubj)}(hhh]j)}(h%``struct gpio_chip *chip`` GPIO chip h](j)}(h``struct gpio_chip *chip``h]j )}(hj h]hstruct gpio_chip *chip}(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:30: ./drivers/gpio/gpiolib-acpi.chMhjubj")}(hhh]h)}(h GPIO chiph]h GPIO chip}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjDh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjdhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j*acpi_gpiochip_free_interrupts (C function)c.acpi_gpiochip_free_interruptshNtauh1j hjdhhhNhNubj)}(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&]uh1j{hjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM8ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM8ubjQ)}(hacpi_gpiochip_free_interruptsh]jW)}(hacpi_gpiochip_free_interruptsh]hacpi_gpiochip_free_interrupts}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhM8ubjp)}(h(struct gpio_chip *chip)h]jv)}(hstruct gpio_chip *chiph](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.acpi_gpiochip_free_interruptsasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hchiph]hchip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johjhhhjhM8ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhM8ubah}(h]j|ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhM8hj~hhubj)}(hhh]h)}(h Free GPIO ACPI event interrupts.h]h Free GPIO ACPI event interrupts.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM2hjFhhubah}(h]h ]h"]h$]h&]uh1jhj~hhhjhM8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjajjajjjuh1jhhhjdhNhNubj)}(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)}(hjkh]h Parameters}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM6hjeubj)}(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&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM3hjubj")}(hhh]h)}(h GPIO chiph]h GPIO chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM3hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM3hjubah}(h]h ]h"]h$]h&]uh1jhjeubh)}(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:30: ./drivers/gpio/gpiolib-acpi.chM5hjeubh)}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM5hjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjdhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j*acpi_dev_gpio_irq_wake_get_by (C function)c.acpi_dev_gpio_irq_wake_get_byhNtauh1j hjdhhhNhNubj)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM#ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM#ubjQ)}(hacpi_dev_gpio_irq_wake_get_byh]jW)}(hacpi_dev_gpio_irq_wake_get_byh]hacpi_dev_gpio_irq_wake_get_by}(hj+hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj'ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhM#ubjp)}(hM(struct acpi_device *adev, const char *con_id, int index, bool *wake_capable)h](jv)}(hstruct acpi_device *adevh](j.)}(hj1h]hstruct}(hjGhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjCubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubh)}(hhh]jW)}(h acpi_deviceh]h acpi_device}(hjehhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjbubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjgmodnameN classnameNjj)}j]j3)}j+j-sbc.acpi_dev_gpio_irq_wake_get_byasbuh1hhjCubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjCubjW)}(hadevh]hadev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjCubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj?ubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj?ubjv)}(h int indexh](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj$hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hindexh]hindex}(hj2hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj?ubjv)}(hbool *wake_capableh](j|)}(hjh]hbool}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjGubj@)}(h h]h }(hjXhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubjH)}(hjKh]h*}(hjfhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjGubjW)}(h wake_capableh]h wake_capable}(hjshhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjGubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj?ubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhM#ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhM#ubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhM#hjhhubj)}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM#ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjdhNhNubj)}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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&]uh1j!hjubeh}(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 )}(hjh]hconst char *con_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chMhjubj")}(hhh]h)}(h!optional name of GpioInt resourceh]h!optional name of GpioInt resource}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMhj-ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj,hMhjubj)}(h>``int index`` index of GpioInt resource (starting from ``0``) h](j)}(h ``int index``h]j )}(hjPh]h int index}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjNubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chMhjJubj")}(hhh]h)}(h/index of GpioInt resource (starting from ``0``)h](h)index of GpioInt resource (starting from }(hjihhhNhNubj )}(h``0``h]h0}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjiubh)}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjehMhjfubah}(h]h ]h"]h$]h&]uh1j!hjJubeh}(h]h ]h"]h$]h&]uh1jhjehMhjubj)}(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&]uh1jha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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&]uh1j!hjubeh}(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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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 }(hj hhhNhNubj)}(h **con_id**h]hcon_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh" parameter. If the resource has a }(hj hhhNhNubj)}(h **con_id**h]hcon_id}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh; in a property, then only those will be taken into account.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.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.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chMhjubh)}(h **Return**h]j)}(hjNh]hReturn}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM hjubh)}(h=Linux IRQ number (> 0) on success, negative errno on failure.h]h=Linux IRQ number (> 0) on success, negative errno on failure.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:30: ./drivers/gpio/gpiolib-acpi.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjdhhhNhNubeh}(h] acpi-supportah ]h"] acpi supportah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDevice tree supporth]hDevice tree support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK"ubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jof_get_named_gpio (C function)c.of_get_named_gpiohNtauh1j hjhhhNhNubj)}(hhh](j")}(hUint of_get_named_gpio (const struct device_node *np, const char *propname, int index)h]j()}(hTint of_get_named_gpio(const struct device_node *np, const char *propname, int index)h](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjQ)}(hof_get_named_gpioh]jW)}(hof_get_named_gpioh]hof_get_named_gpio}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMubjp)}(h?(const struct device_node *np, const char *propname, int index)h](jv)}(hconst struct device_node *nph](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h device_nodeh]h device_node}(hj"hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj$modnameN classnameNjj)}j]j3)}j+jsbc.of_get_named_gpioasbuh1hhjubj@)}(h h]h }(hjBhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjPhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hnph]hnp}(hj]hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *propnameh](j.)}(hj{#h]hconst}(hjvhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjrubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjrubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjrubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjrubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjrubjW)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjrubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(h int indexh](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(hhh]h)}(h&Get a GPIO number to use with GPIO APIh]h&Get a GPIO number to use with GPIO API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``const struct device_node *np`` device node to get GPIO from ``const char *propname`` Name of property containing gpio specifier(s) ``int index`` index of the GPIO **Description** **DEPRECATED** This function is deprecated and must not be used in new code. **Return** GPIO number to use with Linux generic GPIO API, or one of the errno value on the error condition.h](h)}(h**Parameters**h]j)}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhj5ubj)}(hhh](j)}(h>``const struct device_node *np`` device node to get GPIO from h](j)}(h ``const struct device_node *np``h]j )}(hjZh]hconst struct device_node *np}(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:36: ./drivers/gpio/gpiolib-of.chMhjTubj")}(hhh]h)}(hdevice node to get GPIO fromh]hdevice node to get GPIO from}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjpubah}(h]h ]h"]h$]h&]uh1j!hjTubeh}(h]h ]h"]h$]h&]uh1jhjohMhjQubj)}(hG``const char *propname`` Name of property containing gpio specifier(s) h](j)}(h``const char *propname``h]j )}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhjubj")}(hhh]h)}(h-Name of property containing gpio specifier(s)h]h-Name of property containing gpio specifier(s)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubj)}(h ``int index`` index of the GPIO 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:36: ./drivers/gpio/gpiolib-of.chMhjubj")}(hhh]h)}(hindex of the GPIOh]hindex of the GPIO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjQubeh}(h]h ]h"]h$]h&]uh1jhj5ubh)}(h**Description**h]j)}(hjh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhj5ubh)}(hL**DEPRECATED** This function is deprecated and must not be used in new code.h](j)}(h**DEPRECATED**h]h DEPRECATED}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh> This function is deprecated and must not be used in new code.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhj5ubh)}(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:36: ./drivers/gpio/gpiolib-of.chMhj5ubh)}(haGPIO number to use with Linux generic GPIO API, or one of the errno value on the error condition.h]haGPIO number to use with Linux generic GPIO API, or one of the errno value on the error condition.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j$of_mm_gpiochip_add_data (C function)c.of_mm_gpiochip_add_datahNtauh1j hjhhhNhNubj)}(hhh](j")}(h_int of_mm_gpiochip_add_data (struct device_node *np, struct of_mm_gpio_chip *mm_gc, void *data)h]j()}(h^int of_mm_gpiochip_add_data(struct device_node *np, struct of_mm_gpio_chip *mm_gc, void *data)h](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj}hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}hhhjhMubjQ)}(hof_mm_gpiochip_add_datah]jW)}(hof_mm_gpiochip_add_datah]hof_mm_gpiochip_add_data}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj}hhhjhMubjp)}(hC(struct device_node *np, struct of_mm_gpio_chip *mm_gc, void *data)h](jv)}(hstruct device_node *nph](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.of_mm_gpiochip_add_dataasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct of_mm_gpio_chip *mm_gch](j.)}(hj1h]hstruct}(hj0hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj,ubj@)}(h h]h }(hj=hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubh)}(hhh]jW)}(hof_mm_gpio_chiph]hof_mm_gpio_chip}(hjNhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjPmodnameN classnameNjj)}j]jc.of_mm_gpiochip_add_dataasbuh1hhj,ubj@)}(h h]h }(hjlhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubjH)}(hjKh]h*}(hjzhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj,ubjW)}(hmm_gch]hmm_gc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(h void *datah](j|)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj}hhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjyhhhjhMubah}(h]jtah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjvhhubj)}(hhh]h)}(h"Add memory mapped GPIO chip (bank)h]h"Add memory mapped GPIO chip (bank)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjvhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct device_node *np`` device node of the GPIO chip ``struct of_mm_gpio_chip *mm_gc`` pointer to the of_mm_gpio_chip allocated structure ``void *data`` driver data to store in the struct gpio_chip **Description** To use this function you should allocate and fill mm_gc with: 1) In the gpio_chip structure: - all the callbacks - of_gpio_n_cells - of_xlate callback (optional) 3) In the of_mm_gpio_chip structure: - save_regs callback (optional) If succeeded, this function will map bank's memory and will do all necessary work for you. Then you'll able to use .regs to manage GPIOs from the callbacks. **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:36: ./drivers/gpio/gpiolib-of.chMhjubj)}(hhh](j)}(h8``struct device_node *np`` device node of the GPIO chip h](j)}(h``struct device_node *np``h]j )}(hj4h]hstruct device_node *np}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhj.ubj")}(hhh]h)}(hdevice node of the GPIO chiph]hdevice node of the GPIO chip}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjJubah}(h]h ]h"]h$]h&]uh1j!hj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMhj+ubj)}(hU``struct of_mm_gpio_chip *mm_gc`` pointer to the of_mm_gpio_chip allocated structure h](j)}(h!``struct of_mm_gpio_chip *mm_gc``h]j )}(hjmh]hstruct of_mm_gpio_chip *mm_gc}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j hjkubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhjgubj")}(hhh]h)}(h2pointer to the of_mm_gpio_chip allocated structureh]h2pointer to the of_mm_gpio_chip allocated structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjgubeh}(h]h ]h"]h$]h&]uh1jhjhMhj+ubj)}(h<``void *data`` driver data to store in the struct gpio_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&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhjubj")}(hhh]h)}(h,driver data to store in the struct gpio_chiph]h,driver data to store in the struct gpio_chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj+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&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chM hjubh)}(h=To use this function you should allocate and fill mm_gc with:h]h=To use this function you should allocate and fill mm_gc with:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chM hjubhenumerated_list)}(hhh]h list_item)}(haIn the gpio_chip structure: - all the callbacks - of_gpio_n_cells - of_xlate callback (optional) h]h)}(h`In the gpio_chip structure: - all the callbacks - of_gpio_n_cells - of_xlate callback (optional)h]h`In the gpio_chip structure: - all the callbacks - of_gpio_n_cells - of_xlate callback (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chM hj ubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffixj6uh1jhjubj)}(hhh]j )}(hBIn the of_mm_gpio_chip structure: - save_regs callback (optional) h]h)}(hAIn the of_mm_gpio_chip structure: - save_regs callback (optional)h]hAIn the of_mm_gpio_chip structure: - save_regs callback (optional)}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMhj3ubah}(h]h ]h"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&]j,j-j.hj/j6startKuh1jhjubh)}(hIf succeeded, this function will map bank's memory and will do all necessary work for you. Then you'll able to use .regs to manage GPIOs from the callbacks.h]hIf succeeded, this function will map bank’s memory and will do all necessary work for you. Then you’ll able to use .regs to manage GPIOs from the callbacks.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.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:36: ./drivers/gpio/gpiolib-of.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:36: ./drivers/gpio/gpiolib-of.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j"of_mm_gpiochip_remove (C function)c.of_mm_gpiochip_removehNtauh1j hjhhhNhNubj)}(hhh](j")}(h:void of_mm_gpiochip_remove (struct of_mm_gpio_chip *mm_gc)h]j()}(h9void of_mm_gpiochip_remove(struct of_mm_gpio_chip *mm_gc)h](j|)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMEubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMEubjQ)}(hof_mm_gpiochip_removeh]jW)}(hof_mm_gpiochip_removeh]hof_mm_gpiochip_remove}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMEubjp)}(h(struct of_mm_gpio_chip *mm_gc)h]jv)}(hstruct of_mm_gpio_chip *mm_gch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hof_mm_gpio_chiph]hof_mm_gpio_chip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.of_mm_gpiochip_removeasbuh1hhjubj@)}(h h]h }(hj$hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj2hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hmm_gch]hmm_gc}(hj?hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMEubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMEubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMEhjhhubj)}(hhh]h)}(h%Remove memory mapped GPIO chip (bank)h]h%Remove memory mapped GPIO chip (bank)}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMBhjfhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMEubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hf**Parameters** ``struct of_mm_gpio_chip *mm_gc`` pointer to the of_mm_gpio_chip allocated structureh](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:36: ./drivers/gpio/gpiolib-of.chMFhjubj)}(hhh]j)}(hT``struct of_mm_gpio_chip *mm_gc`` pointer to the of_mm_gpio_chip allocated structureh](j)}(h!``struct of_mm_gpio_chip *mm_gc``h]j )}(hjh]hstruct of_mm_gpio_chip *mm_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:36: ./drivers/gpio/gpiolib-of.chMHhjubj")}(hhh]h)}(h2pointer to the of_mm_gpio_chip allocated structureh]h2pointer to the of_mm_gpio_chip allocated structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.chMChjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(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](jdevm_gpiod_get (C function)c.devm_gpiod_gethNtauh1j hjhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKAubj@)}(h h]h }(hj+hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhj*hKAubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj<hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj>modnameN classnameNjj)}j]j3)}j+devm_gpiod_getsbc.devm_gpiod_getasbuh1hhjhhhj*hKAubj@)}(h h]h }(hj]hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhj*hKAubjH)}(hjKh]h*}(hjkhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhj*hKAubjQ)}(hdevm_gpiod_geth]jW)}(hjZh]hdevm_gpiod_get}(hj|hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjxubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhj*hKAubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jXc.devm_gpiod_getasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj0hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj>hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hjKhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjdhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj`ubj@)}(h h]h }(hjqhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj`ubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jXc.devm_gpiod_getasbuh1hhj`ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj`ubjW)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj`ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhj*hKAubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhj*hKAubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hj*hKAhjhhubj)}(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:42: ./drivers/gpio/gpiolib-devres.chK3hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj*hKAubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:42: ./drivers/gpio/gpiolib-devres.chK7hjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chK4hjubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hK4hj/ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj.hK4hjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j )}(hjRh]hconst char *con_id}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j hjPubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chK5hjLubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghK5hjhubah}(h]h ]h"]h$]h&]uh1j!hjLubeh}(h]h ]h"]h$]h&]uh1jhjghK5hjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chK6hjubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhK6hjubeh}(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:42: ./drivers/gpio/gpiolib-devres.chK8hjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chK8hjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chK``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:42: ./drivers/gpio/gpiolib-devres.chKMhjubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKMhjIubeh}(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:42: ./drivers/gpio/gpiolib-devres.chKOhj-ubh)}(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:42: ./drivers/gpio/gpiolib-devres.chKOhj-ubh)}(h **Return**h]j)}(hj&h]hReturn}(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:42: ./drivers/gpio/gpiolib-devres.chKShj-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}(hjDhhhNhNubah}(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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKShj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!devm_gpiod_get_index (C function)c.devm_gpiod_get_indexhNtauh1j hjhhhNhNubj)}(hhh](j")}(hzstruct gpio_desc * devm_gpiod_get_index (struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h]j()}(hxstruct gpio_desc *devm_gpiod_get_index(struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h](j.)}(hj1h]hstruct}(hj}hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjyhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKpubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjyhhhjhKpubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+devm_gpiod_get_indexsbc.devm_gpiod_get_indexasbuh1hhjyhhhjhKpubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjyhhhjhKpubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjyhhhjhKpubjQ)}(hdevm_gpiod_get_indexh]jW)}(hjh]hdevm_gpiod_get_index}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjyhhhjhKpubjp)}(hR(struct device *dev, const char *con_id, unsigned int idx, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jc.devm_gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hj3hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjAhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjNhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjghhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjcubj@)}(h h]h }(hjthhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjcubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjcubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjcubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjcubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjcubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned int idxh](j|)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hidxh]hidx}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hj"hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hj3hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj5modnameN classnameNjj)}j]jc.devm_gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hjQhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hflagsh]hflags}(hj_hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjyhhhjhKpubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjuhhhjhKpubah}(h]jpah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhKphjrhhubj)}(hhh]h)}(h"Resource-managed gpiod_get_index()h]h"Resource-managed gpiod_get_index()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKahjhhubah}(h]h ]h"]h$]h&]uh1jhjrhhhjhKpubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(hX**Parameters** ``struct device *dev`` GPIO consumer ``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** Managed 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. **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:42: ./drivers/gpio/gpiolib-devres.chKehjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chKbhjubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKbhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKbhjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chKchjubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKchjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKchjubj)}(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&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKdhj6ubj")}(hhh]h)}(h+index of the GPIO to obtain in the consumerh]h+index of the GPIO to obtain in the consumer}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKdhjRubah}(h]h ]h"]h$]h&]uh1j!hj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhKdhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j )}(hjuh]henum gpiod_flags flags}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjsubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKehjoubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKehjubah}(h]h ]h"]h$]h&]uh1j!hjoubeh}(h]h ]h"]h$]h&]uh1jhjhKehjubeh}(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:42: ./drivers/gpio/gpiolib-devres.chKghjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKghjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chKkhjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chKkhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j(devm_fwnode_gpiod_get_index (C function)c.devm_fwnode_gpiod_get_indexhNtauh1j hjhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj@hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj<hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKubj@)}(h h]h }(hjNhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj<hhhjMhKubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj_hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjamodnameN classnameNjj)}j]j3)}j+devm_fwnode_gpiod_get_indexsbc.devm_fwnode_gpiod_get_indexasbuh1hhj<hhhjMhKubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj<hhhjMhKubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj<hhhjMhKubjQ)}(hdevm_fwnode_gpiod_get_indexh]jW)}(hj}h]hdevm_fwnode_gpiod_get_index}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj<hhhjMhKubjp)}(h|(struct device *dev, struct fwnode_handle *fwnode, const char *con_id, int index, enum gpiod_flags flags, const char *label)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j{c.devm_fwnode_gpiod_get_indexasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct fwnode_handle *fwnodeh](j.)}(hj1h]hstruct}(hj*hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj&ubj@)}(h h]h }(hj7hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj&ubh)}(hhh]jW)}(h fwnode_handleh]h fwnode_handle}(hjHhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjJmodnameN classnameNjj)}j]j{c.devm_fwnode_gpiod_get_indexasbuh1hhj&ubj@)}(h h]h }(hjfhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj&ubjH)}(hjKh]h*}(hjthhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj&ubjW)}(hfwnodeh]hfwnode}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj&ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(h int indexh](j|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hj,hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj(ubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj(ubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjJhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjLmodnameN classnameNjj)}j]j{c.devm_fwnode_gpiod_get_indexasbuh1hhj(ubj@)}(h h]h }(hjhhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj(ubjW)}(hflagsh]hflags}(hjvhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj(ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *labelh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hlabelh]hlabel}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj<hhhjMhKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj8hhhjMhKubah}(h]j3ah ](j|j}eh"]h$]h&]jj)jhuh1j!hjMhKhj5hhubj)}(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:42: ./drivers/gpio/gpiolib-devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhj5hhhjMhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./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:42: ./drivers/gpio/gpiolib-devres.chKhj8ubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShKhjTubah}(h]h ]h"]h$]h&]uh1j!hj8ubeh}(h]h ]h"]h$]h&]uh1jhjShKhj5ubj)}(hI``struct fwnode_handle *fwnode`` firmware node containing GPIO reference h](j)}(h ``struct fwnode_handle *fwnode``h]j )}(hjwh]hstruct fwnode_handle *fwnode}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjuubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjqubj")}(hhh]h)}(h'firmware node containing GPIO referenceh]h'firmware node containing GPIO reference}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j!hjqubeh}(h]h ]h"]h$]h&]uh1jhjhKhj5ubj)}(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:42: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj5ubj)}(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:42: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj5ubj)}(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&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjubj")}(hhh]h)}(hGPIO initialization flagsh]hGPIO initialization flags}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKhj8ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj7hKhj5ubj)}(h<``const char *label`` label to attach to the requested GPIO h](j)}(h``const char *label``h]j )}(hj[h]hconst char *label}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjYubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjUubj")}(hhh]h)}(h%label to attach to the requested GPIOh]h%label to attach to the requested GPIO}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphKhjqubah}(h]h ]h"]h$]h&]uh1j!hjUubeh}(h]h ]h"]h$]h&]uh1jhjphKhj5ubeh}(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:42: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./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:42: ./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:42: ./drivers/gpio/gpiolib-devres.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j*devm_gpiod_get_index_optional (C function)c.devm_gpiod_get_index_optionalhNtauh1j hjhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj&hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj"hhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKubj@)}(h h]h }(hj4hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj"hhhj3hKubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjEhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjGmodnameN classnameNjj)}j]j3)}j+devm_gpiod_get_index_optionalsbc.devm_gpiod_get_index_optionalasbuh1hhj"hhhj3hKubj@)}(h h]h }(hjfhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj"hhhj3hKubjH)}(hjKh]h*}(hjthhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj"hhhj3hKubjQ)}(hdevm_gpiod_get_index_optionalh]jW)}(hjch]hdevm_gpiod_get_index_optional}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhj"hhhj3hKubjp)}(hT(struct device *dev, const char *con_id, unsigned int index, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jac.devm_gpiod_get_index_optionalasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubj|)}(hcharh]hchar}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj ubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubjH)}(hjKh]h*}(hjGhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj ubjW)}(hcon_idh]hcon_id}(hjThhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hunsigned int indexh](j|)}(hunsignedh]hunsigned}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjiubj@)}(h h]h }(hj{hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubj|)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjiubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjiubjW)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjiubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jac.devm_gpiod_get_index_optionalasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johj"hhhj3hKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhj3hKubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hj3hKhjhhubj)}(hhh]h)}(h+Resource-managed gpiod_get_index_optional()h]h+Resource-managed gpiod_get_index_optional()}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhj/hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj3hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjJjjJjjjuh1jhhhjhNhNubj)}(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)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjNubj)}(hhh](j)}(h%``struct device *dev`` GPIO consumer h](j)}(h``struct device *dev``h]j )}(hjsh]hstruct device *dev}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjqubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjmubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j!hjmubeh}(h]h ]h"]h$]h&]uh1jhjhKhjjubj)}(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:42: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjjubj)}(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:42: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j )}(hjh]henum gpiod_flags flags}(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:42: ./drivers/gpio/gpiolib-devres.chKhjubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKhj4ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj3hKhjjubeh}(h]h ]h"]h$]h&]uh1jhjNubh)}(h**Description**h]j)}(hjYh]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjNubh)}(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.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjNubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjNubh)}(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 }(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 GPIO.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!devm_gpiod_get_array (C function)c.devm_gpiod_get_arrayhNtauh1j hjhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhKubh)}(hhh]jW)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj modnameN classnameNjj)}j]j3)}j+devm_gpiod_get_arraysbc.devm_gpiod_get_arrayasbuh1hhjhhhjhKubj@)}(h h]h }(hj)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhKubjH)}(hjKh]h*}(hj7hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhjhKubjQ)}(hdevm_gpiod_get_arrayh]jW)}(hj&h]hdevm_gpiod_get_array}(hjHhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjDubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhKubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjchhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj_ubj@)}(h h]h }(hjphhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj_ubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j$c.devm_gpiod_get_arrayasbuh1hhj_ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj_ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj_ubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj_ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj[ubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj[ubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hj0hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj,ubj@)}(h h]h }(hj=hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjNhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjPmodnameN classnameNjj)}j]j$c.devm_gpiod_get_arrayasbuh1hhj,ubj@)}(h h]h }(hjlhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj,ubjW)}(hflagsh]hflags}(hjzhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj,ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj[ubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhKubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhKubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhKhjhhubj)}(hhh]h)}(h"Resource-managed gpiod_get_array()h]h"Resource-managed gpiod_get_array()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:42: ./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:42: ./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&]uh1j!hjubeh}(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}(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:42: ./drivers/gpio/gpiolib-devres.chKhjubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKhj4ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj3hKhjubj)}(h>``enum gpiod_flags flags`` optional GPIO initialization flags h](j)}(h``enum gpiod_flags flags``h]j )}(hjWh]henum gpiod_flags flags}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjUubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chKhjQubj")}(hhh]h)}(h"optional GPIO initialization flagsh]h"optional GPIO initialization flags}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKhjmubah}(h]h ]h"]h$]h&]uh1j!hjQubeh}(h]h ]h"]h$]h&]uh1jhjlhKhjubeh}(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:42: ./drivers/gpio/gpiolib-devres.chKhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./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:42: ./drivers/gpio/gpiolib-devres.chKhjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j*devm_gpiod_get_array_optional (C function)c.devm_gpiod_get_array_optionalhNtauh1j hjhhhNhNubj)}(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](j.)}(hj1h]hstruct}(hj"hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMubj@)}(h h]h }(hj0hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhj/hMubh)}(hhh]jW)}(h gpio_descsh]h gpio_descs}(hjAhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjCmodnameN classnameNjj)}j]j3)}j+devm_gpiod_get_array_optionalsbc.devm_gpiod_get_array_optionalasbuh1hhjhhhj/hMubj@)}(h h]h }(hjbhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhj/hMubjH)}(hjKh]h*}(hjphhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjhhhj/hMubjQ)}(hdevm_gpiod_get_array_optionalh]jW)}(hj_h]hdevm_gpiod_get_array_optional}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj}ubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhj/hMubjp)}(h@(struct device *dev, const char *con_id, enum gpiod_flags flags)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j]c.devm_gpiod_get_array_optionalasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *con_idh](j.)}(hj{#h]hconst}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj|)}(hcharh]hchar}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj5hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjChhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hcon_idh]hcon_id}(hjPhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(henum gpiod_flags flagsh](j.)}(hjuVh]henum}(hjihhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjeubj@)}(h h]h }(hjvhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjeubh)}(hhh]jW)}(h gpiod_flagsh]h gpiod_flags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j]c.devm_gpiod_get_array_optionalasbuh1hhjeubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjeubjW)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjeubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhj/hMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhj/hMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hj/hMhjhhubj)}(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:42: ./drivers/gpio/gpiolib-devres.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj/hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:42: ./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}(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:42: ./drivers/gpio/gpiolib-devres.chMhjubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj4ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj3hMhjubj)}(h9``const char *con_id`` function within the GPIO consumer h](j)}(h``const char *con_id``h]j )}(hjWh]hconst char *con_id}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjUubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMhjQubj")}(hhh]h)}(h!function within the GPIO consumerh]h!function within the GPIO consumer}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjmubah}(h]h ]h"]h$]h&]uh1j!hjQubeh}(h]h ]h"]h$]h&]uh1jhjlhMhjubj)}(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:42: ./drivers/gpio/gpiolib-devres.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&]uh1j!hjubeh}(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&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMhjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chMhjubh)}(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:42: ./drivers/gpio/gpiolib-devres.chMhjubh)}(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}(hj"hhhNhNubah}(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:42: ./drivers/gpio/gpiolib-devres.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jdevm_gpiod_put (C function)c.devm_gpiod_puthNtauh1j hjhhhNhNubj)}(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}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjWhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM4ubj@)}(h h]h }(hjjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjWhhhjihM4ubjQ)}(hdevm_gpiod_puth]jW)}(hdevm_gpiod_puth]hdevm_gpiod_put}(hj|hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjxubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjWhhhjihM4ubjp)}(h,(struct device *dev, struct gpio_desc *desc)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+j~sbc.devm_gpiod_putasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hj(hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj*modnameN classnameNjj)}j]jc.devm_gpiod_putasbuh1hhjubj@)}(h h]h }(hjFhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjThhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hjahhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjWhhhjihM4ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjShhhjihM4ubah}(h]jNah ](j|j}eh"]h$]h&]jj)jhuh1j!hjihM4hjPhhubj)}(hhh]h)}(hResource-managed gpiod_put()h]hResource-managed gpiod_put()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM,hjhhubah}(h]h ]h"]h$]h&]uh1jhjPhhhjihM4ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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)}(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:42: ./drivers/gpio/gpiolib-devres.chM0hjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chM-hjubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM-hjubj)}(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:42: ./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&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM.hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj@h]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM0hjubh)}(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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM0hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jdevm_gpiod_unhinge (C function)c.devm_gpiod_unhingehNtauh1j hjhhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMIubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMIubjQ)}(hdevm_gpiod_unhingeh]jW)}(hdevm_gpiod_unhingeh]hdevm_gpiod_unhinge}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMIubjp)}(h,(struct device *dev, struct gpio_desc *desc)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.devm_gpiod_unhingeasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hj4hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj0ubj@)}(h h]h }(hjAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj0ubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjRhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjTmodnameN classnameNjj)}j]jc.devm_gpiod_unhingeasbuh1hhj0ubj@)}(h h]h }(hjphhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj0ubjH)}(hjKh]h*}(hj~hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj0ubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj0ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMIubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhj}hhhjhMIubah}(h]jxah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMIhjzhhubj)}(hhh]h)}(h1Remove resource management from a gpio descriptorh]h1Remove resource management from a gpio descriptor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM<hjhhubah}(h]h ]h"]h$]h&]uh1jhjzhhhjhMIubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubj)}(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:42: ./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:42: ./drivers/gpio/gpiolib-devres.chM=hjubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM=hj ubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhj hM=hjubj)}(hN``struct gpio_desc *desc`` GPIO descriptor to remove resource management from h](j)}(h``struct gpio_desc *desc``h]j )}(hj/h]hstruct gpio_desc *desc}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM>hj)ubj")}(hhh]h)}(h2GPIO descriptor to remove resource management fromh]h2GPIO descriptor to remove resource management from}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhM>hjEubah}(h]h ]h"]h$]h&]uh1j!hj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhM>hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjjh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM@hjubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hjubh 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.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM@hjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMEhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j!devm_gpiod_put_array (C function)c.devm_gpiod_put_arrayhNtauh1j hjhhhNhNubj)}(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&]uh1j{hjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMfubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMfubjQ)}(hdevm_gpiod_put_arrayh]jW)}(hdevm_gpiod_put_arrayh]hdevm_gpiod_put_array}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMfubjp)}(h.(struct device *dev, struct gpio_descs *descs)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hj hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hj'hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetj)modnameN classnameNjj)}j]j3)}j+jsbc.devm_gpiod_put_arrayasbuh1hhjubj@)}(h h]h }(hjGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjUhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hjbhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_descs *descsh](j.)}(hj1h]hstruct}(hj{hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjwubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwubh)}(hhh]jW)}(h gpio_descsh]h gpio_descs}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jCc.devm_gpiod_put_arrayasbuh1hhjwubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjwubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjwubjW)}(hdescsh]hdescs}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjwubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMfubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMfubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMfhjhhubj)}(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:42: ./drivers/gpio/gpiolib-devres.chM^hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jhhϞhjhNhNubj)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMbhjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chM_hj7ubj")}(hhh]h)}(h GPIO consumerh]h GPIO consumer}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhM_hjSubah}(h]h ]h"]h$]h&]uh1j!hj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhM_hj4ubj)}(hA``struct gpio_descs *descs`` GPIO descriptor array to dispose of h](j)}(h``struct gpio_descs *descs``h]j )}(hjvh]hstruct gpio_descs *descs}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjtubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM`hjpubj")}(hhh]h)}(h#GPIO descriptor array to dispose ofh]h#GPIO descriptor array to dispose of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM`hjubah}(h]h ]h"]h$]h&]uh1j!hjpubeh}(h]h ]h"]h$]h&]uh1jhjhM`hj4ubeh}(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:42: ./drivers/gpio/gpiolib-devres.chMbhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMbhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j,devm_gpiochip_add_data_with_key (C function)!c.devm_gpiochip_add_data_with_keyhNtauh1j hjhhhNhNubj)}(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&]uh1j{hjhhhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjQ)}(hdevm_gpiochip_add_data_with_keyh]jW)}(hdevm_gpiochip_add_data_with_keyh]hdevm_gpiochip_add_data_with_key}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMubjp)}(h{(struct device *dev, struct gpio_chip *gc, void *data, struct lock_class_key *lock_key, struct lock_class_key *request_key)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hj3hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj/ubj@)}(h h]h }(hj@hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj/ubh)}(hhh]jW)}(hdeviceh]hdevice}(hjQhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjSmodnameN classnameNjj)}j]j3)}j+jsb!c.devm_gpiochip_add_data_with_keyasbuh1hhj/ubj@)}(h h]h }(hjqhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj/ubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj/ubjW)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj/ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj+ubjv)}(hstruct gpio_chip *gch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_chiph]h gpio_chip}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jm!c.devm_gpiochip_add_data_with_keyasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hgch]hgc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj+ubjv)}(h void *datah](j|)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hj#hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hj1hhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdatah]hdata}(hj>hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj+ubjv)}(hstruct lock_class_key *lock_keyh](j.)}(hj1h]hstruct}(hjWhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjSubj@)}(h h]h }(hjdhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjSubh)}(hhh]jW)}(hlock_class_keyh]hlock_class_key}(hjuhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjrubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjwmodnameN classnameNjj)}j]jm!c.devm_gpiochip_add_data_with_keyasbuh1hhjSubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjSubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjSubjW)}(hlock_keyh]hlock_key}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjSubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj+ubjv)}(h"struct lock_class_key *request_keyh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hlock_class_keyh]hlock_class_key}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jm!c.devm_gpiochip_add_data_with_keyasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(h request_keyh]h request_key}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhj+ubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(hhh]h)}(h-Resource managed gpiochip_add_data_with_key()h]h-Resource managed gpiochip_add_data_with_key()}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMuhjEhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj`jj`jjjuh1jhhhjhNhNubj)}(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)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMyhjdubj)}(hhh](j)}(hH``struct device *dev`` pointer to the device that gpio_chip belongs to. 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:42: ./drivers/gpio/gpiolib-devres.chMvhjubj")}(hhh]h)}(h0pointer to the device that gpio_chip belongs to.h]h0pointer to the device that gpio_chip belongs to.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMvhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMvhjubj)}(h3``struct gpio_chip *gc`` the GPIO chip to register 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&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMwhjubj")}(hhh]h)}(hthe GPIO chip to registerh]hthe GPIO chip to register}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMwhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMwhjubj)}(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:42: ./drivers/gpio/gpiolib-devres.chMxhjubj")}(hhh]h)}(h-driver-private data associated with this chiph]h-driver-private data associated with this chip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMxhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMxhjubj)}(h?``struct lock_class_key *lock_key`` lockdep class for IRQ lock h](j)}(h#``struct lock_class_key *lock_key``h]j )}(hj4h]hstruct lock_class_key *lock_key}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMyhj.ubj")}(hhh]h)}(hlockdep class for IRQ lockh]hlockdep class for IRQ lock}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMyhjJubah}(h]h ]h"]h$]h&]uh1j!hj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMyhjubj)}(hE``struct lock_class_key *request_key`` lockdep class for IRQ request h](j)}(h&``struct lock_class_key *request_key``h]j )}(hjmh]h"struct lock_class_key *request_key}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j hjkubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMzhjgubj")}(hhh]h)}(hlockdep class for IRQ requesth]hlockdep class for IRQ request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMzhjubah}(h]h ]h"]h$]h&]uh1j!hjgubeh}(h]h ]h"]h$]h&]uh1jhjhMzhjubeh}(h]h ]h"]h$]h&]uh1jhjdubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM|hjdubh)}(h!potentially before irqs will workh]h!potentially before irqs will work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chM|hjdubh)}(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:42: ./drivers/gpio/gpiolib-devres.chM~hjdubh)}(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:42: ./drivers/gpio/gpiolib-devres.chM}hjdubh)}(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:42: ./drivers/gpio/gpiolib-devres.chMhjdubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:42: ./drivers/gpio/gpiolib-devres.chMhjdubeh}(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}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hhhhhK.ubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_export (C function)c.gpiod_exporthNtauh1j hj*hhhNhNubj)}(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}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjPhhhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM7ubj@)}(h h]h }(hjchhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjPhhhjbhM7ubjQ)}(h gpiod_exporth]jW)}(h gpiod_exporth]h gpiod_export}(hjuhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjqubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjPhhhjbhM7ubjp)}(h3(struct gpio_desc *desc, bool direction_may_change)h](jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jwsbc.gpiod_exportasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hbool direction_may_changeh](j|)}(hjh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjW)}(hdirection_may_changeh]hdirection_may_change}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjPhhhjbhM7ubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjLhhhjbhM7ubah}(h]jGah ](j|j}eh"]h$]h&]jj)jhuh1j!hjbhM7hjIhhubj)}(hhh]h)}(hexport a GPIO through sysfsh]hexport a GPIO through sysfs}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM(hjEhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjbhM7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj`jj`jjjuh1jhhhj*hNhNubj)}(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)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM,hjdubj)}(hhh](j)}(hE``struct gpio_desc *desc`` GPIO to make available, already requested 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:48: ./drivers/gpio/gpiolib-sysfs.chM)hjubj")}(hhh]h)}(h)GPIO to make available, already requestedh]h)GPIO to make available, already requested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM)hjubj)}(hJ``bool direction_may_change`` true if userspace may change GPIO direction h](j)}(h``bool direction_may_change``h]j )}(hjh]hbool direction_may_change}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM*hjubj")}(hhh]h)}(h+true if userspace may change GPIO directionh]h+true if userspace may change GPIO direction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhM*hjubeh}(h]h ]h"]h$]h&]uh1jhjdubh)}(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:48: ./drivers/gpio/gpiolib-sysfs.chM,hjdubh)}(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:48: ./drivers/gpio/gpiolib-sysfs.chM+hjdubh)}(h**Description**h]j)}(hj$h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM-hjdubh)}(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.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM,hjdubh)}(h **Return**h]j)}(hjKh]hReturn}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM3hjdubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chM4hjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj*hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_export_link (C function)c.gpiod_export_linkhNtauh1j hj*hhhNhNubj)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjhhhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjQ)}(hgpiod_export_linkh]jW)}(hgpiod_export_linkh]hgpiod_export_link}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjhhhjhMubjp)}(h>(struct device *dev, const char *name, struct gpio_desc *desc)h](jv)}(hstruct device *devh](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.gpiod_export_linkasbuh1hhjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdevh]hdev}(hj&hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hconst char *nameh](j.)}(hj{#h]hconst}(hj?hhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hj;ubj@)}(h h]h }(hjLhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;ubj|)}(hcharh]hchar}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hj;ubj@)}(h h]h }(hjhhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;ubjH)}(hjKh]h*}(hjvhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhj;ubjW)}(hnameh]hname}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhj;ubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubjv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]jc.gpiod_export_linkasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubeh}(h]h ]h"]h$]h&]jnjouh1johjhhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjhhhjhMubah}(h]jah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjhhubj)}(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:48: ./drivers/gpio/gpiolib-sysfs.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj5jj5jjjuh1jhhhj*hNhNubj)}(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)}(hj?h]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhj9ubj)}(hhh](j)}(h<``struct device *dev`` device under which to create symlink 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&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhjXubj")}(hhh]h)}(h$device under which to create symlinkh]h$device under which to create symlink}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjtubah}(h]h ]h"]h$]h&]uh1j!hjXubeh}(h]h ]h"]h$]h&]uh1jhjshMhjUubj)}(h)``const char *name`` name of the symlink 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&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhjubj")}(hhh]h)}(hname of the symlinkh]hname of the symlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjUubj)}(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:48: ./drivers/gpio/gpiolib-sysfs.chMhjubj")}(hhh]h)}(h+GPIO to create symlink to, already exportedh]h+GPIO to create symlink to, already exported}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjUubeh}(h]h ]h"]h$]h&]uh1jhj9ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhj9ubh)}(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.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhj9ubh)}(h **Return**h]j)}(hj2h]hReturn}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhj9ubh)}(h+0 on success, or negative errno on failure.h]h+0 on success, or negative errno on failure.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj*hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiod_unexport (C function)c.gpiod_unexporthNtauh1j hj*hhhNhNubj)}(hhh](j")}(h,void gpiod_unexport (struct gpio_desc *desc)h]j()}(h+void gpiod_unexport(struct gpio_desc *desc)h](j|)}(hvoidh]hvoid}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1j{hjshhhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjshhhjhMubjQ)}(hgpiod_unexporth]jW)}(hgpiod_unexporth]hgpiod_unexport}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ](jijjeh"]h$]h&]jnjouh1jPhjshhhjhMubjp)}(h(struct gpio_desc *desc)h]jv)}(hstruct gpio_desc *desch](j.)}(hj1h]hstruct}(hjhhhNhNubah}(h]h ]j:ah"]h$]h&]uh1j-hjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]jW)}(h gpio_desch]h gpio_desc}(hjhhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubah}(h]h ]h"]h$]h&] refdomainjreftypej+ reftargetjmodnameN classnameNjj)}j]j3)}j+jsbc.gpiod_unexportasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjH)}(hjKh]h*}(hjhhhNhNubah}(h]h ]jTah"]h$]h&]uh1jGhjubjW)}(hdesch]hdesc}(hj hhhNhNubah}(h]h ]jbah"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]noemphjnjouh1juhjubah}(h]h ]h"]h$]h&]jnjouh1johjshhhjhMubeh}(h]h ]h"]h$]h&]jnjojvuh1j'jwjxhjohhhjhMubah}(h]jjah ](j|j}eh"]h$]h&]jj)jhuh1j!hjhMhjlhhubj)}(hhh]h)}(h reverse effect of gpiod_export()h]h reverse effect of gpiod_export()}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhj4hhubah}(h]h ]h"]h$]h&]uh1jhjlhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOjjOjjjuh1jhhhj*hNhNubj)}(hy**Parameters** ``struct gpio_desc *desc`` GPIO to make unavailable **Description** This is implicit on gpiod_free().h](h)}(h**Parameters**h]j)}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhjSubj)}(hhh]j)}(h4``struct gpio_desc *desc`` GPIO to make unavailable h](j)}(h``struct gpio_desc *desc``h]j )}(hjxh]hstruct gpio_desc *desc}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjvubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhjrubj")}(hhh]h)}(hGPIO to make unavailableh]hGPIO to make unavailable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j!hjrubeh}(h]h ]h"]h$]h&]uh1jhjhMhjoubah}(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&]uh1hhb/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:48: ./drivers/gpio/gpiolib-sysfs.chMhjSubh)}(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:48: ./drivers/gpio/gpiolib-sysfs.chMhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj*hhhNhNubeh}(h] sysfs-helpersah ]h"] sysfs helpersah$]h&]uh1hhhhhhhhK.ubeh}(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}(jjjaj^jj|jjj'j$jju nametypes}(jjajjj'juh}(jhj^hjj#jA jF jjjjjjjjjnjsjjj j j/#j4#j$j$j&j'j(j(ju*jz*j,j#,j0.j5.j/j/j1j1jm3jr3j4j4jr8jw8j:j :j;j;j=j=j?j ?j@jAjOCjTCjZEj_Ej?GjDGjIjIjEMjJMj"Qj'Qj}RjRjTjTj YjYjZjZj5\j:\jK^jP^ja`jf`jlbjqbjwdj|djfjfjhjhjqjjvjjkjkjmjmjRojWojrjrjnvjsvjxjxjzjzjF~jK~jԁjفjpjujjj#j(jUjZj`jej#j(jjjtjyjjj'j,jLjQjڝjߝjhjmjâjȢjj#jyj~j©jǩj٫jޫjٮjޮjjjjj>jCjejjjjj jj|jdjjjjj|jjjjjjjjtjyjjj$jjjjIjNjpjuj3j8jjjjjjjNjSjxj}jjjjjj*jGjLjjjjjou footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]hsystem_message)}(hhh]h)}(h:Enumerated list start value not ordinal-1: "3" (ordinal 3)h]h>Enumerated list start value not ordinal-1: “3” (ordinal 3)}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvubah}(h]h ]h"]h$]h&]levelKtypeINFOsource_/var/lib/git/docbuild/linux/Documentation/driver-api/gpio/index:36: ./drivers/gpio/gpiolib-of.clineMEuh1jthjubatransform_messages] transformerN include_log] decorationNhhub.