132 lines
3.8 KiB
ReStructuredText
132 lines
3.8 KiB
ReStructuredText
|
.. SPDX-License-Identifier: GPL-2.0
|
||
|
|
||
|
========================================
|
||
|
GPIO Character Device Userspace API (v1)
|
||
|
========================================
|
||
|
|
||
|
.. warning::
|
||
|
This 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.
|
||
|
|
||
|
First added in 4.8.
|
||
|
|
||
|
The 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`.
|
||
|
|
||
|
Where "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.
|
||
|
|
||
|
.. _gpio-v1-chip:
|
||
|
|
||
|
Chip
|
||
|
====
|
||
|
|
||
|
The Chip represents a single GPIO chip and is exposed to userspace using device
|
||
|
files of the form ``/dev/gpiochipX``.
|
||
|
|
||
|
Each chip supports a number of GPIO lines,
|
||
|
:c:type:`chip.lines<gpiochip_info>`. Lines on the chip are identified by an
|
||
|
``offset`` in the range from 0 to ``chip.lines - 1``, i.e. `[0,chip.lines)`.
|
||
|
|
||
|
Lines 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.
|
||
|
|
||
|
Within this documentation, the file descriptor returned by calling `open()`
|
||
|
on the GPIO device file is referred to as ``chip_fd``.
|
||
|
|
||
|
Operations
|
||
|
----------
|
||
|
|
||
|
The following operations may be performed on the chip:
|
||
|
|
||
|
.. toctree::
|
||
|
:titlesonly:
|
||
|
|
||
|
Get Line Handle <gpio-get-linehandle-ioctl>
|
||
|
Get Line Event <gpio-get-lineevent-ioctl>
|
||
|
Get Chip Info <gpio-get-chipinfo-ioctl>
|
||
|
Get Line Info <gpio-get-lineinfo-ioctl>
|
||
|
Watch Line Info <gpio-get-lineinfo-watch-ioctl>
|
||
|
Unwatch Line Info <gpio-get-lineinfo-unwatch-ioctl>
|
||
|
Read Line Info Changed Events <gpio-lineinfo-changed-read>
|
||
|
|
||
|
.. _gpio-v1-line-handle:
|
||
|
|
||
|
Line Handle
|
||
|
===========
|
||
|
|
||
|
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<gpiohandle_request>` by gpio-get-linehandle-ioctl.rst.
|
||
|
|
||
|
Within this documentation, the line handle file descriptor is referred to
|
||
|
as ``handle_fd``.
|
||
|
|
||
|
Operations
|
||
|
----------
|
||
|
|
||
|
The following operations may be performed on the line handle:
|
||
|
|
||
|
.. toctree::
|
||
|
:titlesonly:
|
||
|
|
||
|
Get Line Values <gpio-handle-get-line-values-ioctl>
|
||
|
Set Line Values <gpio-handle-set-line-values-ioctl>
|
||
|
Reconfigure Lines <gpio-handle-set-config-ioctl>
|
||
|
|
||
|
.. _gpio-v1-line-event:
|
||
|
|
||
|
Line Event
|
||
|
==========
|
||
|
|
||
|
Line 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<gpioevent_request>` by gpio-get-lineevent-ioctl.rst.
|
||
|
|
||
|
Within this documentation, the line event file descriptor is referred to
|
||
|
as ``event_fd``.
|
||
|
|
||
|
Operations
|
||
|
----------
|
||
|
|
||
|
The following operations may be performed on the line event:
|
||
|
|
||
|
.. toctree::
|
||
|
:titlesonly:
|
||
|
|
||
|
Get Line Value <gpio-handle-get-line-values-ioctl>
|
||
|
Read Line Edge Events <gpio-lineevent-data-read>
|
||
|
|
||
|
Types
|
||
|
=====
|
||
|
|
||
|
This section contains the structs that are referenced by the ABI v1.
|
||
|
|
||
|
The :c:type:`struct gpiochip_info<gpiochip_info>` is common to ABI v1 and v2.
|
||
|
|
||
|
.. kernel-doc:: include/uapi/linux/gpio.h
|
||
|
:identifiers:
|
||
|
gpioevent_data
|
||
|
gpioevent_request
|
||
|
gpiohandle_config
|
||
|
gpiohandle_data
|
||
|
gpiohandle_request
|
||
|
gpioline_info
|
||
|
gpioline_info_changed
|
||
|
|
||
|
.. toctree::
|
||
|
:hidden:
|
||
|
|
||
|
error-codes
|