| .. SPDX-License-Identifier: GPL-2.0 | |
| .. _gpio_errors: | |
| ******************* | |
| GPIO Error Codes | |
| ******************* | |
| .. _gpio-errors: | |
| .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | |
| .. flat-table:: Common GPIO error codes | |
| :header-rows: 0 | |
| :stub-columns: 0 | |
| :widths: 1 16 | |
| - - ``EAGAIN`` (aka ``EWOULDBLOCK``) | |
| - The device was opened in non-blocking mode and a read can't | |
| be performed as there is no data available. | |
| - - ``EBADF`` | |
| - The file descriptor is not valid. | |
| - - ``EBUSY`` | |
| - The ioctl can't be handled because the device is busy. Typically | |
| returned when an ioctl attempts something that would require the | |
| usage of a resource that was already allocated. The ioctl must not | |
| be retried without performing another action to fix the problem | |
| first. | |
| - - ``EFAULT`` | |
| - There was a failure while copying data from/to userspace, probably | |
| caused by an invalid pointer reference. | |
| - - ``EINVAL`` | |
| - One or more of the ioctl parameters are invalid or out of the | |
| allowed range. This is a widely used error code. | |
| - - ``ENODEV`` | |
| - Device not found or was removed. | |
| - - ``ENOMEM`` | |
| - There's not enough memory to handle the desired operation. | |
| - - ``EPERM`` | |
| - Permission denied. Typically returned in response to an attempt | |
| to perform an action incompatible with the current line | |
| configuration. | |
| - - ``EIO`` | |
| - I/O error. Typically returned when there are problems communicating | |
| with a hardware device or requesting features that hardware does not | |
| support. This could indicate broken or flaky hardware. | |
| It's a 'Something is wrong, I give up!' type of error. | |
| - - ``ENXIO`` | |
| - Typically returned when a feature requiring interrupt support was | |
| requested, but the line does not support interrupts. | |
| .. note:: | |
| #. This list is not exhaustive; ioctls may return other error codes. | |
| Since errors may have side effects such as a driver reset, | |
| applications should abort on unexpected errors, or otherwise | |
| assume that the device is in a bad state. | |
| #. Request-specific error codes are listed in the individual | |
| requests descriptions. |