xref: /linux/Documentation/userspace-api/gpio/gpio-get-lineevent-ioctl.rst (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1.. SPDX-License-Identifier: GPL-2.0
2
3.. _GPIO_GET_LINEEVENT_IOCTL:
4
5************************
6GPIO_GET_LINEEVENT_IOCTL
7************************
8
9.. warning::
10    This ioctl is part of chardev_v1.rst and is obsoleted by
11    gpio-v2-get-line-ioctl.rst.
12
13Name
14====
15
16GPIO_GET_LINEEVENT_IOCTL - Request a line with edge detection from the kernel.
17
18Synopsis
19========
20
21.. c:macro:: GPIO_GET_LINEEVENT_IOCTL
22
23``int ioctl(int chip_fd, GPIO_GET_LINEEVENT_IOCTL, struct gpioevent_request *request)``
24
25Arguments
26=========
27
28``chip_fd``
29    The file descriptor of the GPIO character device returned by `open()`.
30
31``request``
32    The :c:type:`event_request<gpioevent_request>` specifying the line
33    to request and its configuration.
34
35Description
36===========
37
38Request a line with edge detection from the kernel.
39
40On success, the requesting process is granted exclusive access to the line
41value and may receive events when edges are detected on the line, as
42described in gpio-lineevent-data-read.rst.
43
44The state of a line is guaranteed to remain as requested until the returned
45file descriptor is closed. Once the file descriptor is closed, the state of
46the line becomes uncontrolled from the userspace perspective, and may revert
47to its default state.
48
49Requesting a line already in use is an error (**EBUSY**).
50
51Requesting edge detection on a line that does not support interrupts is an
52error (**ENXIO**).
53
54As with the :ref:`line handle<gpio-get-linehandle-config-support>`, the
55bias configuration is best effort.
56
57Closing the ``chip_fd`` has no effect on existing line events.
58
59Configuration Rules
60-------------------
61
62The following configuration rules apply:
63
64The line event is requested as an input, so no flags specific to output lines,
65``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_OPEN_DRAIN``, or
66``GPIOHANDLE_REQUEST_OPEN_SOURCE``, may be set.
67
68Only one bias flag, ``GPIOHANDLE_REQUEST_BIAS_xxx``, may be set.
69If no bias flags are set then the bias configuration is not changed.
70
71The edge flags, ``GPIOEVENT_REQUEST_RISING_EDGE`` and
72``GPIOEVENT_REQUEST_FALLING_EDGE``, may be combined to detect both rising
73and falling edges.
74
75Requesting an invalid configuration is an error (**EINVAL**).
76
77Return Value
78============
79
80On success 0 and the :c:type:`request.fd<gpioevent_request>` contains the file
81descriptor for the request.
82
83On error -1 and the ``errno`` variable is set appropriately.
84Common error codes are described in error-codes.rst.
85