1.. SPDX-License-Identifier: GPL-2.0 2 3.. _gpio_errors: 4 5******************* 6GPIO Error Codes 7******************* 8 9.. _gpio-errors: 10 11.. tabularcolumns:: |p{2.5cm}|p{15.0cm}| 12 13.. flat-table:: Common GPIO error codes 14 :header-rows: 0 15 :stub-columns: 0 16 :widths: 1 16 17 18 - - ``EAGAIN`` (aka ``EWOULDBLOCK``) 19 20 - The device was opened in non-blocking mode and a read can't 21 be performed as there is no data available. 22 23 - - ``EBADF`` 24 25 - The file descriptor is not valid. 26 27 - - ``EBUSY`` 28 29 - The ioctl can't be handled because the device is busy. Typically 30 returned when an ioctl attempts something that would require the 31 usage of a resource that was already allocated. The ioctl must not 32 be retried without performing another action to fix the problem 33 first. 34 35 - - ``EFAULT`` 36 37 - There was a failure while copying data from/to userspace, probably 38 caused by an invalid pointer reference. 39 40 - - ``EINVAL`` 41 42 - One or more of the ioctl parameters are invalid or out of the 43 allowed range. This is a widely used error code. 44 45 - - ``ENODEV`` 46 47 - Device not found or was removed. 48 49 - - ``ENOMEM`` 50 51 - There's not enough memory to handle the desired operation. 52 53 - - ``EPERM`` 54 55 - Permission denied. Typically returned in response to an attempt 56 to perform an action incompatible with the current line 57 configuration. 58 59 - - ``EIO`` 60 61 - I/O error. Typically returned when there are problems communicating 62 with a hardware device or requesting features that hardware does not 63 support. This could indicate broken or flaky hardware. 64 It's a 'Something is wrong, I give up!' type of error. 65 66 - - ``ENXIO`` 67 68 - Typically returned when a feature requiring interrupt support was 69 requested, but the line does not support interrupts. 70 71.. note:: 72 73 #. This list is not exhaustive; ioctls may return other error codes. 74 Since errors may have side effects such as a driver reset, 75 applications should abort on unexpected errors, or otherwise 76 assume that the device is in a bad state. 77 78 #. Request-specific error codes are listed in the individual 79 requests descriptions. 80