| .. SPDX-License-Identifier: GPL-2.0 |
| |
| .. _GPIO_GET_LINEEVENT_IOCTL: |
| |
| ************************ |
| GPIO_GET_LINEEVENT_IOCTL |
| ************************ |
| |
| .. warning:: |
| This ioctl is part of chardev_v1.rst and is obsoleted by |
| gpio-v2-get-line-ioctl.rst. |
| |
| Name |
| ==== |
| |
| GPIO_GET_LINEEVENT_IOCTL - Request a line with edge detection from the kernel. |
| |
| Synopsis |
| ======== |
| |
| .. c:macro:: GPIO_GET_LINEEVENT_IOCTL |
| |
| ``int ioctl(int chip_fd, GPIO_GET_LINEEVENT_IOCTL, struct gpioevent_request *request)`` |
| |
| Arguments |
| ========= |
| |
| ``chip_fd`` |
| The file descriptor of the GPIO character device returned by `open()`. |
| |
| ``request`` |
| The :c:type:`event_request<gpioevent_request>` specifying the line |
| to request and its configuration. |
| |
| Description |
| =========== |
| |
| Request a line with edge detection from the kernel. |
| |
| On success, the requesting process is granted exclusive access to the line |
| value and may receive events when edges are detected on the line, as |
| described in gpio-lineevent-data-read.rst. |
| |
| The state of a line is guaranteed to remain as requested until the returned |
| file descriptor is closed. Once the file descriptor is closed, the state of |
| the line becomes uncontrolled from the userspace perspective, and may revert |
| to its default state. |
| |
| Requesting a line already in use is an error (**EBUSY**). |
| |
| Requesting edge detection on a line that does not support interrupts is an |
| error (**ENXIO**). |
| |
| As with the :ref:`line handle<gpio-get-linehandle-config-support>`, the |
| bias configuration is best effort. |
| |
| Closing the ``chip_fd`` has no effect on existing line events. |
| |
| Configuration Rules |
| ------------------- |
| |
| The following configuration rules apply: |
| |
| The line event is requested as an input, so no flags specific to output lines, |
| ``GPIOHANDLE_REQUEST_OUTPUT``, ``GPIOHANDLE_REQUEST_OPEN_DRAIN``, or |
| ``GPIOHANDLE_REQUEST_OPEN_SOURCE``, may be set. |
| |
| Only one bias flag, ``GPIOHANDLE_REQUEST_BIAS_xxx``, may be set. |
| If no bias flags are set then the bias configuration is not changed. |
| |
| The edge flags, ``GPIOEVENT_REQUEST_RISING_EDGE`` and |
| ``GPIOEVENT_REQUEST_FALLING_EDGE``, may be combined to detect both rising |
| and falling edges. |
| |
| Requesting an invalid configuration is an error (**EINVAL**). |
| |
| Return Value |
| ============ |
| |
| On success 0 and the :c:type:`request.fd<gpioevent_request>` contains the file |
| descriptor for the request. |
| |
| On error -1 and the ``errno`` variable is set appropriately. |
| Common error codes are described in error-codes.rst. |