2024-01-14 17:48:44 -07:00
|
|
|
.. 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**).
|
|
|
|
|
2024-01-23 06:38:28 -07:00
|
|
|
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.
|
|
|
|
|
2024-01-14 17:48:44 -07:00
|
|
|
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.
|