.. 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.