diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/usb/error-codes.txt |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/usb/error-codes.txt')
-rw-r--r-- | Documentation/usb/error-codes.txt | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/Documentation/usb/error-codes.txt b/Documentation/usb/error-codes.txt new file mode 100644 index 000000000000..1e36f1661cd0 --- /dev/null +++ b/Documentation/usb/error-codes.txt | |||
@@ -0,0 +1,167 @@ | |||
1 | Revised: 2004-Oct-21 | ||
2 | |||
3 | This is the documentation of (hopefully) all possible error codes (and | ||
4 | their interpretation) that can be returned from usbcore. | ||
5 | |||
6 | Some of them are returned by the Host Controller Drivers (HCDs), which | ||
7 | device drivers only see through usbcore. As a rule, all the HCDs should | ||
8 | behave the same except for transfer speed dependent behaviors and the | ||
9 | way certain faults are reported. | ||
10 | |||
11 | |||
12 | ************************************************************************** | ||
13 | * Error codes returned by usb_submit_urb * | ||
14 | ************************************************************************** | ||
15 | |||
16 | Non-USB-specific: | ||
17 | |||
18 | 0 URB submission went fine | ||
19 | |||
20 | -ENOMEM no memory for allocation of internal structures | ||
21 | |||
22 | USB-specific: | ||
23 | |||
24 | -ENODEV specified USB-device or bus doesn't exist | ||
25 | |||
26 | -ENOENT specified interface or endpoint does not exist or | ||
27 | is not enabled | ||
28 | |||
29 | -ENXIO host controller driver does not support queuing of this type | ||
30 | of urb. (treat as a host controller bug.) | ||
31 | |||
32 | -EINVAL a) Invalid transfer type specified (or not supported) | ||
33 | b) Invalid or unsupported periodic transfer interval | ||
34 | c) ISO: attempted to change transfer interval | ||
35 | d) ISO: number_of_packets is < 0 | ||
36 | e) various other cases | ||
37 | |||
38 | -EAGAIN a) specified ISO start frame too early | ||
39 | b) (using ISO-ASAP) too much scheduled for the future | ||
40 | wait some time and try again. | ||
41 | |||
42 | -EFBIG Host controller driver can't schedule that many ISO frames. | ||
43 | |||
44 | -EPIPE Specified endpoint is stalled. For non-control endpoints, | ||
45 | reset this status with usb_clear_halt(). | ||
46 | |||
47 | -EMSGSIZE (a) endpoint maxpacket size is zero; it is not usable | ||
48 | in the current interface altsetting. | ||
49 | (b) ISO packet is biger than endpoint maxpacket | ||
50 | (c) requested data transfer size is invalid (negative) | ||
51 | |||
52 | -ENOSPC This request would overcommit the usb bandwidth reserved | ||
53 | for periodic transfers (interrupt, isochronous). | ||
54 | |||
55 | -ESHUTDOWN The device or host controller has been disabled due to some | ||
56 | problem that could not be worked around. | ||
57 | |||
58 | -EPERM Submission failed because urb->reject was set. | ||
59 | |||
60 | -EHOSTUNREACH URB was rejected because the device is suspended. | ||
61 | |||
62 | |||
63 | ************************************************************************** | ||
64 | * Error codes returned by in urb->status * | ||
65 | * or in iso_frame_desc[n].status (for ISO) * | ||
66 | ************************************************************************** | ||
67 | |||
68 | USB device drivers may only test urb status values in completion handlers. | ||
69 | This is because otherwise there would be a race between HCDs updating | ||
70 | these values on one CPU, and device drivers testing them on another CPU. | ||
71 | |||
72 | A transfer's actual_length may be positive even when an error has been | ||
73 | reported. That's because transfers often involve several packets, so that | ||
74 | one or more packets could finish before an error stops further endpoint I/O. | ||
75 | |||
76 | |||
77 | 0 Transfer completed successfully | ||
78 | |||
79 | -ENOENT URB was synchronously unlinked by usb_unlink_urb | ||
80 | |||
81 | -EINPROGRESS URB still pending, no results yet | ||
82 | (That is, if drivers see this it's a bug.) | ||
83 | |||
84 | -EPROTO (*, **) a) bitstuff error | ||
85 | b) no response packet received within the | ||
86 | prescribed bus turn-around time | ||
87 | c) unknown USB error | ||
88 | |||
89 | -EILSEQ (*, **) a) CRC mismatch | ||
90 | b) no response packet received within the | ||
91 | prescribed bus turn-around time | ||
92 | c) unknown USB error | ||
93 | |||
94 | Note that often the controller hardware does not | ||
95 | distinguish among cases a), b), and c), so a | ||
96 | driver cannot tell whether there was a protocol | ||
97 | error, a failure to respond (often caused by | ||
98 | device disconnect), or some other fault. | ||
99 | |||
100 | -ETIMEDOUT (**) No response packet received within the prescribed | ||
101 | bus turn-around time. This error may instead be | ||
102 | reported as -EPROTO or -EILSEQ. | ||
103 | |||
104 | Note that the synchronous USB message functions | ||
105 | also use this code to indicate timeout expired | ||
106 | before the transfer completed. | ||
107 | |||
108 | -EPIPE (**) Endpoint stalled. For non-control endpoints, | ||
109 | reset this status with usb_clear_halt(). | ||
110 | |||
111 | -ECOMM During an IN transfer, the host controller | ||
112 | received data from an endpoint faster than it | ||
113 | could be written to system memory | ||
114 | |||
115 | -ENOSR During an OUT transfer, the host controller | ||
116 | could not retrieve data from system memory fast | ||
117 | enough to keep up with the USB data rate | ||
118 | |||
119 | -EOVERFLOW (*) The amount of data returned by the endpoint was | ||
120 | greater than either the max packet size of the | ||
121 | endpoint or the remaining buffer size. "Babble". | ||
122 | |||
123 | -EREMOTEIO The data read from the endpoint did not fill the | ||
124 | specified buffer, and URB_SHORT_NOT_OK was set in | ||
125 | urb->transfer_flags. | ||
126 | |||
127 | -ENODEV Device was removed. Often preceded by a burst of | ||
128 | other errors, since the hub driver does't detect | ||
129 | device removal events immediately. | ||
130 | |||
131 | -EXDEV ISO transfer only partially completed | ||
132 | look at individual frame status for details | ||
133 | |||
134 | -EINVAL ISO madness, if this happens: Log off and go home | ||
135 | |||
136 | -ECONNRESET URB was asynchronously unlinked by usb_unlink_urb | ||
137 | |||
138 | -ESHUTDOWN The device or host controller has been disabled due | ||
139 | to some problem that could not be worked around, | ||
140 | such as a physical disconnect. | ||
141 | |||
142 | |||
143 | (*) Error codes like -EPROTO, -EILSEQ and -EOVERFLOW normally indicate | ||
144 | hardware problems such as bad devices (including firmware) or cables. | ||
145 | |||
146 | (**) This is also one of several codes that different kinds of host | ||
147 | controller use to to indicate a transfer has failed because of device | ||
148 | disconnect. In the interval before the hub driver starts disconnect | ||
149 | processing, devices may receive such fault reports for every request. | ||
150 | |||
151 | |||
152 | |||
153 | ************************************************************************** | ||
154 | * Error codes returned by usbcore-functions * | ||
155 | * (expect also other submit and transfer status codes) * | ||
156 | ************************************************************************** | ||
157 | |||
158 | usb_register(): | ||
159 | -EINVAL error during registering new driver | ||
160 | |||
161 | usb_get_*/usb_set_*(): | ||
162 | usb_control_msg(): | ||
163 | usb_bulk_msg(): | ||
164 | -ETIMEDOUT Timeout expired before the transfer completed. | ||
165 | In the future this code may change to -ETIME, | ||
166 | whose definition is a closer match to this sort | ||
167 | of error. | ||