Qsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget1/translations/zh_CN/userspace-api/gpio/chardev_v1modnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/zh_TW/userspace-api/gpio/chardev_v1modnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/it_IT/userspace-api/gpio/chardev_v1modnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ja_JP/userspace-api/gpio/chardev_v1modnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ko_KR/userspace-api/gpio/chardev_v1modnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/sp_SP/userspace-api/gpio/chardev_v1modnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhK/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1.rsthKubhsection)}(hhh](htitle)}(h(GPIO Character Device Userspace API (v1)h]h(GPIO Character Device Userspace API (v1)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhwarning)}(hXThis API is obsoleted by chardev.rst (v2). New developments should use the v2 API, and existing developments are encouraged to migrate as soon as possible, as this API will be removed in the future. The v2 API is a functional superset of the v1 API so any v1 call can be directly translated to a v2 equivalent. This interface will continue to be maintained for the migration period, but new features will only be added to the new API.h](h paragraph)}(h*This API is obsoleted by chardev.rst (v2).h]h*This API is obsoleted by chardev.rst (v2).}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh)}(hX New developments should use the v2 API, and existing developments are encouraged to migrate as soon as possible, as this API will be removed in the future. The v2 API is a functional superset of the v1 API so any v1 call can be directly translated to a v2 equivalent.h]hX New developments should use the v2 API, and existing developments are encouraged to migrate as soon as possible, as this API will be removed in the future. The v2 API is a functional superset of the v1 API so any v1 call can be directly translated to a v2 equivalent.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubh)}(h{This interface will continue to be maintained for the migration period, but new features will only be added to the new API.h]h{This interface will continue to be maintained for the migration period, but new features will only be added to the new API.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hFirst added in 4.8.h]hFirst added in 4.8.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hThe API is based around three major objects, the :ref:`gpio-v1-chip`, the :ref:`gpio-v1-line-handle`, and the :ref:`gpio-v1-line-event`.h](h1The API is based around three major objects, the }(hjhhhNhNubh)}(h:ref:`gpio-v1-chip`h]hinline)}(hjh]h gpio-v1-chip}(hjhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocuserspace-api/gpio/chardev_v1 refdomainj(reftyperef refexplicitrefwarn reftarget gpio-v1-chipuh1hhhhKhjubh, the }(hjhhhNhNubh)}(h:ref:`gpio-v1-line-handle`h]j)}(hjBh]hgpio-v1-line-handle}(hjDhhhNhNubah}(h]h ](j'stdstd-refeh"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]refdocj4 refdomainjNreftyperef refexplicitrefwarnj:gpio-v1-line-handleuh1hhhhKhjubh , and the }(hjhhhNhNubh)}(h:ref:`gpio-v1-line-event`h]j)}(hjfh]hgpio-v1-line-event}(hjhhhhNhNubah}(h]h ](j'stdstd-refeh"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]refdocj4 refdomainjrreftyperef refexplicitrefwarnj:gpio-v1-line-eventuh1hhhhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hWhere "line event" is used in this document it refers to the request that can monitor a line for edge events, not the edge events themselves.h]hWhere “line event” is used in this document it refers to the request that can monitor a line for edge events, not the edge events themselves.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhtarget)}(h.. _gpio-v1-chip:h]h}(h]h ]h"]h$]h&]refid gpio-v1-chipuh1jhKhhhhhhubh)}(hhh](h)}(hChiph]hChip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(huThe Chip represents a single GPIO chip and is exposed to userspace using device files of the form ``/dev/gpiochipX``.h](hbThe Chip represents a single GPIO chip and is exposed to userspace using device files of the form }(hjhhhNhNubhliteral)}(h``/dev/gpiochipX``h]h/dev/gpiochipX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hEach chip supports a number of GPIO lines, :c:type:`chip.lines`. Lines on the chip are identified by an ``offset`` in the range from 0 to ``chip.lines - 1``, i.e. `[0,chip.lines)`.h](h+Each chip supports a number of GPIO lines, }(hjhhhNhNubh)}(h#:c:type:`chip.lines`h]j)}(hjh]h chip.lines}(hjhhhNhNubah}(h]h ](j'cc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnj: gpiochip_infouh1hhhhK"hjubh). Lines on the chip are identified by an }(hjhhhNhNubj)}(h ``offset``h]hoffset}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh in the range from 0 to }(hjhhhNhNubj)}(h``chip.lines - 1``h]hchip.lines - 1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, i.e. }(hjhhhNhNubhtitle_reference)}(h`[0,chip.lines)`h]h[0,chip.lines)}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubh)}(hXLines are requested from the chip using either gpio-get-linehandle-ioctl.rst and the resulting line handle is used to access the GPIO chip's lines, or gpio-get-lineevent-ioctl.rst and the resulting line event is used to monitor a GPIO line for edge events.h]hXLines are requested from the chip using either gpio-get-linehandle-ioctl.rst and the resulting line handle is used to access the GPIO chip’s lines, or gpio-get-lineevent-ioctl.rst and the resulting line event is used to monitor a GPIO line for edge events.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(hWithin this documentation, the file descriptor returned by calling `open()` on the GPIO device file is referred to as ``chip_fd``.h](hCWithin this documentation, the file descriptor returned by calling }(hjUhhhNhNubj.)}(h`open()`h]hopen()}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjUubh+ on the GPIO device file is referred to as }(hjUhhhNhNubj)}(h ``chip_fd``h]hchip_fd}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK+hjhhubh)}(hhh](h)}(h Operationsh]h Operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK/ubh)}(h6The following operations may be performed on the chip:h]h6The following operations may be performed on the chip:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjhhubhcompound)}(hhh]htoctree)}(hhh]h}(h]h ]h"]h$]h&]hj4entries](Get Line Handle,userspace-api/gpio/gpio-get-linehandle-ioctlGet Line Event+userspace-api/gpio/gpio-get-lineevent-ioctl Get Chip Info*userspace-api/gpio/gpio-get-chipinfo-ioctl Get Line Info*userspace-api/gpio/gpio-get-lineinfo-ioctlWatch Line Info0userspace-api/gpio/gpio-get-lineinfo-watch-ioctlUnwatch Line Info2userspace-api/gpio/gpio-get-lineinfo-unwatch-ioctlRead Line Info Changed Events-userspace-api/gpio/gpio-lineinfo-changed-reade includefiles](jjjjjjjemaxdepthJcaptionNglobhidden includehiddennumberedK titlesonly rawentries](jjjjjjjeuh1jhhhK3hjubah}(h]h ]toctree-wrapperah"]h$]h&]uh1jhjhhhhhNubj)}(h.. _gpio-v1-line-handle:h]h}(h]h ]h"]h$]h&]jgpio-v1-line-handleuh1jhK>hjhhhhubeh}(h] operationsah ]h"]h$] operationsah&]uh1hhjhhhhhK/ referencedKubeh}(h](chipjeh ]h"](chip gpio-v1-chipeh$]h&]uh1hhhhhhhhKexpect_referenced_by_name}jjsexpect_referenced_by_id}jjsubh)}(hhh](h)}(h Line Handleh]h Line Handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKAubh)}(hX Line handles are created by gpio-get-linehandle-ioctl.rst and provide access to a set of requested lines. The line handle is exposed to userspace via the anonymous file descriptor returned in :c:type:`request.fd` by gpio-get-linehandle-ioctl.rst.h](hLine handles are created by gpio-get-linehandle-ioctl.rst and provide access to a set of requested lines. The line handle is exposed to userspace via the anonymous file descriptor returned in }(hjhhhNhNubh)}(h(:c:type:`request.fd`h]j)}(hjh]h request.fd}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnj:gpiohandle_requestuh1hhhhKChjubh" by gpio-get-linehandle-ioctl.rst.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKChjhhubh)}(h[Within this documentation, the line handle file descriptor is referred to as ``handle_fd``.h](hMWithin this documentation, the line handle file descriptor is referred to as }(hjBhhhNhNubj)}(h ``handle_fd``h]h handle_fd}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKHhjhhubh)}(hhh](h)}(h Operationsh]h Operations}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhhhhhKLubh)}(h=The following operations may be performed on the line handle:h]h=The following operations may be performed on the line handle:}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjbhhubj)}(hhh]j)}(hhh]h}(h]h ]h"]h$]h&]hj4j](Get Line Values4userspace-api/gpio/gpio-handle-get-line-values-ioctlSet Line Values4userspace-api/gpio/gpio-handle-set-line-values-ioctlReconfigure Lines/userspace-api/gpio/gpio-handle-set-config-ioctlej](jjjejJjNjjjjKjj](jjjeuh1jhhhKPhjubah}(h]h ]jah"]h$]h&]uh1jhjbhhhhhNubj)}(h.. _gpio-v1-line-event:h]h}(h]h ]h"]h$]h&]jgpio-v1-line-eventuh1jhKWhjbhhhhubeh}(h]id1ah ]h"]h$]jah&]uh1hhjhhhhhKLjKubeh}(h]( line-handlejeh ]h"]( line handlegpio-v1-line-handleeh$]h&]uh1hhhhhhhhKAj}jjsj}jjsubh)}(hhh](h)}(h Line Eventh]h Line Event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKZubh)}(hLine events are created by gpio-get-lineevent-ioctl.rst and provide access to a requested line. The line event is exposed to userspace via the anonymous file descriptor returned in :c:type:`request.fd` by gpio-get-lineevent-ioctl.rst.h](hLine events are created by gpio-get-lineevent-ioctl.rst and provide access to a requested line. The line event is exposed to userspace via the anonymous file descriptor returned in }(hjhhhNhNubh)}(h':c:type:`request.fd`h]j)}(hjh]h request.fd}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnj:gpioevent_requestuh1hhhhK\hjubh! by gpio-get-lineevent-ioctl.rst.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK\hjhhubh)}(hYWithin this documentation, the line event file descriptor is referred to as ``event_fd``.h](hLWithin this documentation, the line event file descriptor is referred to as }(hjhhhNhNubj)}(h ``event_fd``h]hevent_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKahjhhubh)}(hhh](h)}(h Operationsh]h Operations}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKeubh)}(h` is common to ABI v1 and v2.h](hThe }(hjhhhNhNubh)}(h-:c:type:`struct gpiochip_info`h]j)}(hjh]hstruct gpiochip_info}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnj: gpiochip_infouh1hhhhKthjubh is common to ABI v1 and v2.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKthjkhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlegpioline_info (C struct)c.gpioline_infohNtauh1jhjkhhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhNubhdesc)}(hhh](hdesc_signature)}(h gpioline_infoh]hdesc_signature_line)}(hstruct gpioline_infoh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(h gpioline_infoh]h desc_sig_name)}(hjh]h gpioline_info}(hj hhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(h%Information about a certain GPIO lineh]h%Information about a certain GPIO line}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMDhj5hhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]domainjobjtypejPdesctypejPnoindex noindexentrynocontentsentryuh1jhhhjkhjhNubh container)}(hX**Definition**:: struct gpioline_info { __u32 line_offset; __u32 flags; char name[GPIO_MAX_NAME_SIZE]; char consumer[GPIO_MAX_NAME_SIZE]; }; **Members** ``line_offset`` the local offset on this GPIO device, fill this in when requesting the line information from the kernel ``flags`` various flags for this line ``name`` the name of this GPIO line, such as the output pin of the line on the chip, a rail or a pin header name on a board, as specified by the gpio chip, may be empty (i.e. name[0] == '\0') ``consumer`` a functional name for the consumer of this GPIO line as set by whatever is using it, will be empty if there is no current user but may also be empty if the consumer doesn't set this uph](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj`ubh:}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMHhj\ubh literal_block)}(hstruct gpioline_info { __u32 line_offset; __u32 flags; char name[GPIO_MAX_NAME_SIZE]; char consumer[GPIO_MAX_NAME_SIZE]; };h]hstruct gpioline_info { __u32 line_offset; __u32 flags; char name[GPIO_MAX_NAME_SIZE]; char consumer[GPIO_MAX_NAME_SIZE]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMJhj\ubh)}(h **Members**h]je)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMQhj\ubhdefinition_list)}(hhh](hdefinition_list_item)}(hx``line_offset`` the local offset on this GPIO device, fill this in when requesting the line information from the kernel h](hterm)}(h``line_offset``h]j)}(hjh]h line_offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMGhjubh definition)}(hhh]h)}(hgthe local offset on this GPIO device, fill this in when requesting the line information from the kernelh]hgthe local offset on this GPIO device, fill this in when requesting the line information from the kernel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubj)}(h&``flags`` various flags for this line h](j)}(h ``flags``h]j)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMHhjubj)}(hhh]h)}(hvarious flags for this lineh]hvarious flags for this line}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjubj)}(h``name`` the name of this GPIO line, such as the output pin of the line on the chip, a rail or a pin header name on a board, as specified by the gpio chip, may be empty (i.e. name[0] == '\0') h](j)}(h``name``h]j)}(hj,h]hname}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMKhj&ubj)}(hhh]h)}(hthe name of this GPIO line, such as the output pin of the line on the chip, a rail or a pin header name on a board, as specified by the gpio chip, may be empty (i.e. name[0] == '\0')h]hthe name of this GPIO line, such as the output pin of the line on the chip, a rail or a pin header name on a board, as specified by the gpio chip, may be empty (i.e. name[0] == ‘0’)}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMIhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhMKhjubj)}(h``consumer`` a functional name for the consumer of this GPIO line as set by whatever is using it, will be empty if there is no current user but may also be empty if the consumer doesn't set this uph](j)}(h ``consumer``h]j)}(hjfh]hconsumer}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMMhj`ubj)}(hhh]h)}(ha functional name for the consumer of this GPIO line as set by whatever is using it, will be empty if there is no current user but may also be empty if the consumer doesn't set this uph]ha functional name for the consumer of this GPIO line as set by whatever is using it, will be empty if there is no current user but may also be empty if the consumer doesn’t set this up}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMLhj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hMMhjubeh}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jZhjkhhhjhNubh)}(h**Note**h]je)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMQhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_info ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hjhhhNhNubh)}(h6:c:type:`struct gpio_v2_line_info `h]j)}(hjh]hstruct gpio_v2_line_info}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sbj:gpio_v2_line_infouh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMOhjubh instead.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMOhjkhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j gpioline_info_changed (C struct)c.gpioline_info_changedhNtauh1jhjkhhhjhNubj)}(hhh](j)}(hgpioline_info_changedh]j)}(hstruct gpioline_info_changedh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMUubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMUubj)}(hgpioline_info_changedh]j)}(hj h]hgpioline_info_changed}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMUubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj hhhjhMUubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhMUhjhhubj4)}(hhh]h)}(h3Information about a change in status of a GPIO lineh]h3Information about a change in status of a GPIO line}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMdhjQhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhMUubeh}(h]h ](jstructeh"]h$]h&]jTjjUjljVjljWjXjYuh1jhhhjkhjhNubj[)}(hX**Definition**:: struct gpioline_info_changed { struct gpioline_info info; __u64 timestamp; __u32 event_type; __u32 padding[5]; }; **Members** ``info`` updated line information ``timestamp`` estimate of time of status change occurrence, in nanoseconds ``event_type`` one of ``GPIOLINE_CHANGED_REQUESTED``, ``GPIOLINE_CHANGED_RELEASED`` and ``GPIOLINE_CHANGED_CONFIG`` ``padding`` reserved for future useh](h)}(h**Definition**::h](je)}(h**Definition**h]h Definition}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjtubh:}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhhjpubj)}(hstruct gpioline_info_changed { struct gpioline_info info; __u64 timestamp; __u32 event_type; __u32 padding[5]; };h]hstruct gpioline_info_changed { struct gpioline_info info; __u64 timestamp; __u32 event_type; __u32 padding[5]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMjhjpubh)}(h **Members**h]je)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMqhjpubj)}(hhh](j)}(h"``info`` updated line information h](j)}(h``info``h]j)}(hjh]hinfo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMghjubj)}(hhh]h)}(hupdated line informationh]hupdated line information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMghjubj)}(hK``timestamp`` estimate of time of status change occurrence, in nanoseconds h](j)}(h ``timestamp``h]j)}(hjh]h timestamp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhhjubj)}(hhh]h)}(h` embedded here has 32-bit alignment on its own, but it works fine with 64-bit alignment too. With its 72 byte size, we can guarantee there are no implicit holes between it and subsequent members. The 20-byte padding at the end makes sure we don't add any implicit padding at the end of the structure on 64-bit architectures.h](hThe }(hjhhhNhNubh)}(h.:c:type:`struct gpioline_info `h]j)}(hj h]hstruct gpioline_info}(hj hhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj: gpioline_infouh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMlhjubhXF embedded here has 32-bit alignment on its own, but it works fine with 64-bit alignment too. With its 72 byte size, we can guarantee there are no implicit holes between it and subsequent members. The 20-byte padding at the end makes sure we don’t add any implicit padding at the end of the structure on 64-bit architectures.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMlhjkhhubh)}(h**Note**h]je)}(hj, h]hNote}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj* ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMrhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_info_changed ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hjB hhhNhNubh)}(hF:c:type:`struct gpio_v2_line_info_changed `h]j)}(hjL h]h struct gpio_v2_line_info_changed}(hjN hhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjJ ubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj:gpio_v2_line_info_changeduh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMrhjB ubh instead.}(hjB hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhji hMrhjkhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiohandle_request (C struct)c.gpiohandle_requesthNtauh1jhjkhhhjhNubj)}(hhh](j)}(hgpiohandle_requesth]j)}(hstruct gpiohandle_requesth](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMxubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMxubj)}(hgpiohandle_requesth]j)}(hj h]hgpiohandle_request}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMxubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj hhhj hMxubah}(h]j ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj hMxhj hhubj4)}(hhh]h)}(h'Information about a GPIO handle requesth]h'Information about a GPIO handle request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj hhubah}(h]h ]h"]h$]h&]uh1j3hj hhhj hMxubeh}(h]h ](jstructeh"]h$]h&]jTjjUj jVj jWjXjYuh1jhhhjkhjhNubj[)}(hX**Definition**:: struct gpiohandle_request { __u32 lineoffsets[GPIOHANDLES_MAX]; __u32 flags; __u8 default_values[GPIOHANDLES_MAX]; char consumer_label[GPIO_MAX_NAME_SIZE]; __u32 lines; int fd; }; **Members** ``lineoffsets`` an array of desired lines, specified by offset index for the associated GPIO device ``flags`` desired flags for the desired GPIO lines, such as ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` etc, added together. Note that even if multiple lines are requested, the same flags must be applicable to all of them, if you want lines with individual flags set, request them one by one. It is possible to select a batch of input or output lines, but they must all have the same characteristics, i.e. all inputs or all outputs, all active low etc ``default_values`` if the ``GPIOHANDLE_REQUEST_OUTPUT`` is set for a requested line, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active. ``consumer_label`` a desired consumer label for the selected GPIO line(s) such as "my-bitbanged-relay" ``lines`` number of lines requested in this request, i.e. the number of valid fields in the above arrays, set to 1 to request a single line ``fd`` after a successful ``GPIO_GET_LINEHANDLE_IOCTL`` operation, contains a valid anonymous file descriptor representing the requesth](h)}(h**Definition**::h](je)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hstruct gpiohandle_request { __u32 lineoffsets[GPIOHANDLES_MAX]; __u32 flags; __u8 default_values[GPIOHANDLES_MAX]; char consumer_label[GPIO_MAX_NAME_SIZE]; __u32 lines; int fd; };h]hstruct gpiohandle_request { __u32 lineoffsets[GPIOHANDLES_MAX]; __u32 flags; __u8 default_values[GPIOHANDLES_MAX]; char consumer_label[GPIO_MAX_NAME_SIZE]; __u32 lines; int fd; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubh)}(h **Members**h]je)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh](j)}(hd``lineoffsets`` an array of desired lines, specified by offset index for the associated GPIO device h](j)}(h``lineoffsets``h]j)}(hj< h]h lineoffsets}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj: ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj6 ubj)}(hhh]h)}(hSan array of desired lines, specified by offset index for the associated GPIO deviceh]hSan array of desired lines, specified by offset index for the associated GPIO device}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjR ubah}(h]h ]h"]h$]h&]uh1jhj6 ubeh}(h]h ]h"]h$]h&]uh1jhjQ hMhj3 ubj)}(hX``flags`` desired flags for the desired GPIO lines, such as ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` etc, added together. Note that even if multiple lines are requested, the same flags must be applicable to all of them, if you want lines with individual flags set, request them one by one. It is possible to select a batch of input or output lines, but they must all have the same characteristics, i.e. all inputs or all outputs, all active low etc h](j)}(h ``flags``h]j)}(hjv h]hflags}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjp ubj)}(hhh]h)}(hXdesired flags for the desired GPIO lines, such as ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` etc, added together. Note that even if multiple lines are requested, the same flags must be applicable to all of them, if you want lines with individual flags set, request them one by one. It is possible to select a batch of input or output lines, but they must all have the same characteristics, i.e. all inputs or all outputs, all active low etch](h2desired flags for the desired GPIO lines, such as }(hj hhhNhNubj)}(h``GPIOHANDLE_REQUEST_OUTPUT``h]hGPIOHANDLE_REQUEST_OUTPUT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, }(hj hhhNhNubj)}(h!``GPIOHANDLE_REQUEST_ACTIVE_LOW``h]hGPIOHANDLE_REQUEST_ACTIVE_LOW}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhX\ etc, added together. Note that even if multiple lines are requested, the same flags must be applicable to all of them, if you want lines with individual flags set, request them one by one. It is possible to select a batch of input or output lines, but they must all have the same characteristics, i.e. all inputs or all outputs, all active low etc}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhjp ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj3 ubj)}(h``default_values`` if the ``GPIOHANDLE_REQUEST_OUTPUT`` is set for a requested line, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active. h](j)}(h``default_values``h]j)}(hj h]hdefault_values}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh]h)}(hif the ``GPIOHANDLE_REQUEST_OUTPUT`` is set for a requested line, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active.h](hif the }(hj hhhNhNubj)}(h``GPIOHANDLE_REQUEST_OUTPUT``h]hGPIOHANDLE_REQUEST_OUTPUT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh is set for a requested line, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj3 ubj)}(hg``consumer_label`` a desired consumer label for the selected GPIO line(s) such as "my-bitbanged-relay" h](j)}(h``consumer_label``h]j)}(hj h]hconsumer_label}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh]h)}(hSa desired consumer label for the selected GPIO line(s) such as "my-bitbanged-relay"h]hWa desired consumer label for the selected GPIO line(s) such as “my-bitbanged-relay”}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj6 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj5 hMhj3 ubj)}(h``lines`` number of lines requested in this request, i.e. the number of valid fields in the above arrays, set to 1 to request a single line h](j)}(h ``lines``h]j)}(hjZ h]hlines}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjT ubj)}(hhh]h)}(hnumber of lines requested in this request, i.e. the number of valid fields in the above arrays, set to 1 to request a single lineh]hnumber of lines requested in this request, i.e. the number of valid fields in the above arrays, set to 1 to request a single line}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjp ubah}(h]h ]h"]h$]h&]uh1jhjT ubeh}(h]h ]h"]h$]h&]uh1jhjo hMhj3 ubj)}(h``fd`` after a successful ``GPIO_GET_LINEHANDLE_IOCTL`` operation, contains a valid anonymous file descriptor representing the requesth](j)}(h``fd``h]j)}(hj h]hfd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh]h)}(hafter a successful ``GPIO_GET_LINEHANDLE_IOCTL`` operation, contains a valid anonymous file descriptor representing the requesth](hafter a successful }(hj hhhNhNubj)}(h``GPIO_GET_LINEHANDLE_IOCTL``h]hGPIO_GET_LINEHANDLE_IOCTL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhO operation, contains a valid anonymous file descriptor representing the request}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj3 ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jZhjkhhhjhNubh)}(h**Note**h]je)}(hj h]hNote}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_request ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hj hhhNhNubh)}(h<:c:type:`struct gpio_v2_line_request `h]j)}(hj h]hstruct gpio_v2_line_request}(hj hhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj:gpio_v2_line_requestuh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubh instead.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj% hMhjkhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiohandle_config (C struct)c.gpiohandle_confighNtauh1jhjkhhhjhNubj)}(hhh](j)}(hgpiohandle_configh]j)}(hstruct gpiohandle_configh](j)}(hjh]hstruct}(hjI hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE hhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMubj)}(h h]h }(hjW hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE hhhjV hMubj)}(hgpiohandle_configh]j)}(hjC h]hgpiohandle_config}(hji hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhje ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjE hhhjV hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjA hhhjV hMubah}(h]j< ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjV hMhj> hhubj4)}(hhh]h)}(h'Configuration for a GPIO handle requesth]h'Configuration for a GPIO handle request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj hhubah}(h]h ]h"]h$]h&]uh1j3hj> hhhjV hMubeh}(h]h ](jstructeh"]h$]h&]jTjjUj jVj jWjXjYuh1jhhhjkhjhNubj[)}(hXL**Definition**:: struct gpiohandle_config { __u32 flags; __u8 default_values[GPIOHANDLES_MAX]; __u32 padding[4]; }; **Members** ``flags`` updated flags for the requested GPIO lines, such as ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` etc, added together ``default_values`` if the ``GPIOHANDLE_REQUEST_OUTPUT`` is set in flags, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active. ``padding`` reserved for future use and should be zero filledh](h)}(h**Definition**::h](je)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hnstruct gpiohandle_config { __u32 flags; __u8 default_values[GPIOHANDLES_MAX]; __u32 padding[4]; };h]hnstruct gpiohandle_config { __u32 flags; __u8 default_values[GPIOHANDLES_MAX]; __u32 padding[4]; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubh)}(h **Members**h]je)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh](j)}(h``flags`` updated flags for the requested GPIO lines, such as ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` etc, added together h](j)}(h ``flags``h]j)}(hj h]hflags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh]h)}(hupdated flags for the requested GPIO lines, such as ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` etc, added togetherh](h4updated flags for the requested GPIO lines, such as }(hj hhhNhNubj)}(h``GPIOHANDLE_REQUEST_OUTPUT``h]hGPIOHANDLE_REQUEST_OUTPUT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, }(hj hhhNhNubj)}(h!``GPIOHANDLE_REQUEST_ACTIVE_LOW``h]hGPIOHANDLE_REQUEST_ACTIVE_LOW}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh etc, added together}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj ubj)}(h``default_values`` if the ``GPIOHANDLE_REQUEST_OUTPUT`` is set in flags, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active. h](j)}(h``default_values``h]j)}(hjV h]hdefault_values}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjP ubj)}(hhh]h)}(hif the ``GPIOHANDLE_REQUEST_OUTPUT`` is set in flags, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active.h](hif the }(hjo hhhNhNubj)}(h``GPIOHANDLE_REQUEST_OUTPUT``h]hGPIOHANDLE_REQUEST_OUTPUT}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjo ubh is set in flags, this specifies the default output value, should be 0 (inactive) or 1 (active). Anything other than 0 or 1 will be interpreted as active.}(hjo hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjl ubah}(h]h ]h"]h$]h&]uh1jhjP ubeh}(h]h ]h"]h$]h&]uh1jhjk hMhj ubj)}(h=``padding`` reserved for future use and should be zero filledh](j)}(h ``padding``h]j)}(hj h]hpadding}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubj)}(hhh]h)}(h1reserved for future use and should be zero filledh]h1reserved for future use and should be zero filled}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jZhjkhhhjhNubh)}(h**Note**h]je)}(hj h]hNote}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_config ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hj hhhNhNubh)}(h::c:type:`struct gpio_v2_line_config `h]j)}(hjh]hstruct gpio_v2_line_config}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj:gpio_v2_line_configuh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubh instead.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"hMhjkhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgpiohandle_data (C struct)c.gpiohandle_datahNtauh1jhjkhhhjhNubj)}(hhh](j)}(hgpiohandle_datah]j)}(hstruct gpiohandle_datah](j)}(hjh]hstruct}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhjShMubj)}(hgpiohandle_datah]j)}(hj@h]hgpiohandle_data}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ](jjeh"]h$]h&]hhuh1jhjBhhhjShMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hj>hhhjShMubah}(h]j9ah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjShMhj;hhubj4)}(hhh]h)}(h&Information of values on a GPIO handleh]h&Information of values on a GPIO handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j3hj;hhhjShMubeh}(h]h ](jstructeh"]h$]h&]jTjjUjjVjjWjXjYuh1jhhhjkhjhNubj[)}(hX**Definition**:: struct gpiohandle_data { __u8 values[GPIOHANDLES_MAX]; }; **Members** ``values`` when getting the state of lines this contains the current state of a line, when setting the state of lines these should contain the desired target state. States are 0 (inactive) or 1 (active). When setting, anything other than 0 or 1 will be interpreted as active.h](h)}(h**Definition**::h](je)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(h=struct gpiohandle_data { __u8 values[GPIOHANDLES_MAX]; };h]h=struct gpiohandle_data { __u8 values[GPIOHANDLES_MAX]; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubh)}(h **Members**h]je)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh]j)}(hX``values`` when getting the state of lines this contains the current state of a line, when setting the state of lines these should contain the desired target state. States are 0 (inactive) or 1 (active). When setting, anything other than 0 or 1 will be interpreted as active.h](j)}(h ``values``h]j)}(hjh]hvalues}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh]h)}(hX when getting the state of lines this contains the current state of a line, when setting the state of lines these should contain the desired target state. States are 0 (inactive) or 1 (active). When setting, anything other than 0 or 1 will be interpreted as active.h]hX when getting the state of lines this contains the current state of a line, when setting the state of lines these should contain the desired target state. States are 0 (inactive) or 1 (active). When setting, anything other than 0 or 1 will be interpreted as active.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jZhjkhhhjhNubh)}(h**Note**h]je)}(hj8h]hNote}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj6ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_values ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hjNhhhNhNubh)}(h::c:type:`struct gpio_v2_line_values `h]j)}(hjXh]hstruct gpio_v2_line_values}(hjZhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj:gpio_v2_line_valuesuh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjNubh instead.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjuhMhjkhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgpioevent_request (C struct)c.gpioevent_requesthNtauh1jhjkhhhjhNubj)}(hhh](j)}(hgpioevent_requesth]j)}(hstruct gpioevent_requesth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hgpioevent_requesth]j)}(hjh]hgpioevent_request}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhjhMubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhjhMhjhhubj4)}(hhh]h)}(h&Information about a GPIO event requesth]h&Information about a GPIO event request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jTjjUjjVjjWjXjYuh1jhhhjkhjhNubj[)}(hXX**Definition**:: struct gpioevent_request { __u32 lineoffset; __u32 handleflags; __u32 eventflags; char consumer_label[GPIO_MAX_NAME_SIZE]; int fd; }; **Members** ``lineoffset`` the desired line to subscribe to events from, specified by offset index for the associated GPIO device ``handleflags`` desired handle flags for the desired GPIO line, such as ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` or ``GPIOHANDLE_REQUEST_OPEN_DRAIN`` ``eventflags`` desired flags for the desired GPIO event line, such as ``GPIOEVENT_REQUEST_RISING_EDGE`` or ``GPIOEVENT_REQUEST_FALLING_EDGE`` ``consumer_label`` a desired consumer label for the selected GPIO line(s) such as "my-listener" ``fd`` after a successful ``GPIO_GET_LINEEVENT_IOCTL`` operation, contains a valid anonymous file descriptor representing the requesth](h)}(h**Definition**::h](je)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hstruct gpioevent_request { __u32 lineoffset; __u32 handleflags; __u32 eventflags; char consumer_label[GPIO_MAX_NAME_SIZE]; int fd; };h]hstruct gpioevent_request { __u32 lineoffset; __u32 handleflags; __u32 eventflags; char consumer_label[GPIO_MAX_NAME_SIZE]; int fd; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubh)}(h **Members**h]je)}(hj)h]hMembers}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jdhj'ubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh](j)}(hv``lineoffset`` the desired line to subscribe to events from, specified by offset index for the associated GPIO device h](j)}(h``lineoffset``h]j)}(hjHh]h lineoffset}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjBubj)}(hhh]h)}(hfthe desired line to subscribe to events from, specified by offset index for the associated GPIO device>h]hfthe desired line to subscribe to events from, specified by offset index for the associated GPIO device}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhj]hMhj?ubj)}(h``handleflags`` desired handle flags for the desired GPIO line, such as ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` or ``GPIOHANDLE_REQUEST_OPEN_DRAIN`` h](j)}(h``handleflags``h]j)}(hjh]h handleflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj|ubj)}(hhh]h)}(h~desired handle flags for the desired GPIO line, such as ``GPIOHANDLE_REQUEST_ACTIVE_LOW`` or ``GPIOHANDLE_REQUEST_OPEN_DRAIN``h](h8desired handle flags for the desired GPIO line, such as }(hjhhhNhNubj)}(h!``GPIOHANDLE_REQUEST_ACTIVE_LOW``h]hGPIOHANDLE_REQUEST_ACTIVE_LOW}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h!``GPIOHANDLE_REQUEST_OPEN_DRAIN``h]hGPIOHANDLE_REQUEST_OPEN_DRAIN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhMhj?ubj)}(h``eventflags`` desired flags for the desired GPIO event line, such as ``GPIOEVENT_REQUEST_RISING_EDGE`` or ``GPIOEVENT_REQUEST_FALLING_EDGE`` h](j)}(h``eventflags``h]j)}(hjh]h eventflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh]h)}(h~desired flags for the desired GPIO event line, such as ``GPIOEVENT_REQUEST_RISING_EDGE`` or ``GPIOEVENT_REQUEST_FALLING_EDGE``h](h7desired flags for the desired GPIO event line, such as }(hjhhhNhNubj)}(h!``GPIOEVENT_REQUEST_RISING_EDGE``h]hGPIOEVENT_REQUEST_RISING_EDGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h"``GPIOEVENT_REQUEST_FALLING_EDGE``h]hGPIOEVENT_REQUEST_FALLING_EDGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj?ubj)}(h```consumer_label`` a desired consumer label for the selected GPIO line(s) such as "my-listener" h](j)}(h``consumer_label``h]j)}(hj6h]hconsumer_label}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhj0ubj)}(hhh]h)}(hLa desired consumer label for the selected GPIO line(s) such as "my-listener"h]hPa desired consumer label for the selected GPIO line(s) such as “my-listener”}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhMhj?ubj)}(h``fd`` after a successful ``GPIO_GET_LINEEVENT_IOCTL`` operation, contains a valid anonymous file descriptor representing the requesth](j)}(h``fd``h]j)}(hjph]hfd}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjjubj)}(hhh]h)}(h~after a successful ``GPIO_GET_LINEEVENT_IOCTL`` operation, contains a valid anonymous file descriptor representing the requesth](hafter a successful }(hjhhhNhNubj)}(h``GPIO_GET_LINEEVENT_IOCTL``h]hGPIO_GET_LINEEVENT_IOCTL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhO operation, contains a valid anonymous file descriptor representing the request}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj?ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jZhjkhhhjhNubh)}(h**Note**h]je)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_request ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hjhhhNhNubh)}(h<:c:type:`struct gpio_v2_line_request `h]j)}(hjh]hstruct gpio_v2_line_request}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj:gpio_v2_line_requestuh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubh instead.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjkhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgpioevent_data (C struct)c.gpioevent_datahNtauh1jhjkhhhjhNubj)}(hhh](j)}(hgpioevent_datah]j)}(hstruct gpioevent_datah](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj2hMubj)}(hgpioevent_datah]j)}(hjh]hgpioevent_data}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj2hMubeh}(h]h ]h"]h$]h&]hhj%uh1jj&j'hjhhhj2hMubah}(h]jah ](j+j,eh"]h$]h&]j0j1)j2huh1jhj2hMhjhhubj4)}(hhh]h)}(h*The actual event being pushed to userspaceh]h*The actual event being pushed to userspace}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjdhhubah}(h]h ]h"]h$]h&]uh1j3hjhhhj2hMubeh}(h]h ](jstructeh"]h$]h&]jTjjUjjVjjWjXjYuh1jhhhjkhjhNubj[)}(hX**Definition**:: struct gpioevent_data { __u64 timestamp; __u32 id; }; **Members** ``timestamp`` best estimate of time of event occurrence, in nanoseconds ``id`` event identifier, one of ``GPIOEVENT_EVENT_RISING_EDGE`` or ``GPIOEVENT_EVENT_FALLING_EDGE``h](h)}(h**Definition**::h](je)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(h=struct gpioevent_data { __u64 timestamp; __u32 id; };h]h=struct gpioevent_data { __u64 timestamp; __u32 id; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubh)}(h **Members**h]je)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh](j)}(hH``timestamp`` best estimate of time of event occurrence, in nanoseconds h](j)}(h ``timestamp``h]j)}(hjh]h timestamp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh]h)}(h9best estimate of time of event occurrence, in nanosecondsh]h9best estimate of time of event occurrence, in nanoseconds}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hc``id`` event identifier, one of ``GPIOEVENT_EVENT_RISING_EDGE`` or ``GPIOEVENT_EVENT_FALLING_EDGE``h](j)}(h``id``h]j)}(hj h]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubj)}(hhh]h)}(h\event identifier, one of ``GPIOEVENT_EVENT_RISING_EDGE`` or ``GPIOEVENT_EVENT_FALLING_EDGE``h](hevent identifier, one of }(hj&hhhNhNubj)}(h``GPIOEVENT_EVENT_RISING_EDGE``h]hGPIOEVENT_EVENT_RISING_EDGE}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubh or }(hj&hhhNhNubj)}(h ``GPIOEVENT_EVENT_FALLING_EDGE``h]hGPIOEVENT_EVENT_FALLING_EDGE}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1hhj"hMhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj"hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jZhjkhhhjhNubh)}(h**Note**h]je)}(hjoh]hNote}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jdhjmubah}(h]h ]h"]h$]h&]uh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjkhhubh)}(hThis struct is part of ABI v1 and is deprecated. Use ABI v2 and :c:type:`struct gpio_v2_line_event ` instead.h](h@This struct is part of ABI v1 and is deprecated. Use ABI v2 and }(hjhhhNhNubh)}(h8:c:type:`struct gpio_v2_line_event `h]j)}(hjh]hstruct gpio_v2_line_event}(hjhhhNhNubah}(h]h ](j'jc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj4 refdomainjreftypetype refexplicitrefwarnjjj:gpio_v2_line_eventuh1hhh/var/lib/git/docbuild/linux/Documentation/userspace-api/gpio/chardev_v1:118: ./include/uapi/linux/gpio.hhMhjubh instead.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjkhhubj)}(hhh]j)}(hhh]h}(h]h ]h"]h$]h&]hj4j]Nuserspace-api/gpio/error-codesaj]jajJjNjjjjKjj]uh1jhhhKhjubah}(h]h ]jah"]h$]h&]uh1jhjkhhhhhNubeh}(h]typesah ]h"]typesah$]h&]uh1hhhhhhhhKpubeh}(h]&gpio-character-device-userspace-api-v1ah ]h"](gpio character device userspace api (v1)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}(j]jaj]jaj]jaunameids}(jjjjjj operationsNjjjjjfjjejbjju nametypes}(jjjjHjjjfjejuh}(jhjjjjjjjjjjjjbjjjbjjZjjjkjjjj j j j< jA j9j>jjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages](hsystem_message)}(hhh]h)}(h-Duplicate implicit target name: "operations".h]h1Duplicate implicit target name: “operations”.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubah}(h]h ]h"]h$]h&]jalevelKtypeINFOsourcehlineKLuh1jghjbhhhhhKLubjh)}(hhh]h)}(h-Duplicate implicit target name: "operations".h]h1Duplicate implicit target name: “operations”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jZalevelKtypejsourcehlineKeuh1jghjhhhhhKeubetransform_messages](jh)}(hhh]h)}(hhh]h2Hyperlink target "gpio-v1-chip" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jgubjh)}(hhh]h)}(hhh]h9Hyperlink target "gpio-v1-line-handle" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineK>uh1jgubjh)}(hhh]h)}(hhh]h8Hyperlink target "gpio-v1-line-event" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKWuh1jgube transformerN include_log] decorationNhhub.