aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/tidspbridge/Documentation/error-codes
blob: 12826e2a3aaacf1ddb1ee0199f558835579860d4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
			DSP/Bridge Error Code Guide


Success code is always taken as 0, except for one case where a success status
different than 0 can be possible, this is when enumerating a series of dsp
objects, if the enumeration doesn't have any more objects it is considered as a
successful case. In this case a positive ENODATA is returned (TODO: Change to
avoid this case).

Error codes are returned as a negative 1, if an specific code is expected, it
can be propagated to user space by reading errno symbol defined in errno.h, for
specific details on the implementation a copy of the standard used should be
read first.

The error codes used by this driver are:

[EPERM]
    General driver failure.

    According to the use case the following might apply:
    - Device is in 'sleep/suspend' mode due to DPM.
    - User cannot mark end of stream on an input channel.
    - Requested operation is invalid for the node type.
    - Invalid alignment for the node messaging buffer.
    - The specified direction is invalid for the stream.
    - Invalid stream mode.

[ENOENT]
    The specified object or file was not found.

[ESRCH]
    A shared memory buffer contained in a message or stream could not be mapped
    to the GPP client process's virtual space.

[EIO]
    Driver interface I/O error.

    or:
    - Unable to plug channel ISR for configured IRQ.
    - No free I/O request packets are available.

[ENXIO]
    Unable to find a named section in DSP executable or a non-existent memory
    segment identifier was specified.

[EBADF]
    General error for file handling:

    - Unable to open file.
    - Unable to read file.
    - An error occurred while parsing the DSP executable file.

[ENOMEM]
    A memory allocation failure occurred.

[EACCES]
    - Unable to read content of DCD data section; this is typically caused by
    improperly configured nodes.
    - Unable to decode DCD data section content; this is typically caused by
    changes to DSP/BIOS Bridge data structures.
    - Unable to get pointer to DCD data section; this is typically caused by
    improperly configured UUIDs.
    - Unable to load file containing DCD data section; this is typically
    caused by a missing COFF file.
    - The specified COFF file does not contain a valid node registration
    section.

[EFAULT]
    Invalid pointer or handler.

[EEXIST]
    Attempted to create a channel manager  when one already exists.

[EINVAL]
    Invalid argument.

[ESPIPE]
    Symbol not found in the COFF file.  DSPNode_Create will return this if
    the iAlg function table for an xDAIS socket is not found in the COFF file.
    In this case, force the symbol to be linked into the COFF file.
    DSPNode_Create, DSPNode_Execute, and DSPNode_Delete will return this if
    the create, execute, or delete phase function, respectively, could not be
    found in the COFF file.

    - No symbol table is loaded/found for this board.
    - Unable to initialize the ZL COFF parsing module.

[EPIPE]
    I/O is currently pending.

    - End of stream was already requested on this output channel.

[EDOM]
    A parameter is specified outside its valid range.

[ENOSYS]
    The indicated operation is not supported.

[EIDRM]
    During enumeration a change in the number or properties of the objects
    has occurred.

[ECHRNG]
    Attempt to created channel manager with too many channels or channel ID out
    of range.

[EBADR]
    The state of the specified object is incorrect for the requested operation.

    - Invalid segment ID.

[ENODATA]
    Unable to retrieve resource information from the registry.

    - No more registry values.

[ETIME]
    A timeout occurred before the requested operation could complete.

[ENOSR]
    A stream has been issued the maximum number of buffers allowed in the
    stream at once; buffers must be reclaimed from the stream before any more
    can be issued.

    - No free channels are available.

[EILSEQ]
    Error occurred in a dynamic loader library function.

[EISCONN]
    The Specified Connection already exists.

[ENOTCONN]
    Nodes not connected.

[ETIMEDOUT]
    Timeout occurred waiting for a response from the hardware.

    - Wait for flush operation on an output channel timed out.

[ECONNREFUSED]
    No more connections can be made for this node.

[EALREADY]
    Channel is already in use.

[EREMOTEIO]
    dwTimeOut parameter was CHNL_IOCNOWAIT, yet no I/O completions were
    queued.

[ECANCELED]
    I/O has been cancelled on this channel.

[ENOKEY]
    Invalid subkey parameter.

    - UUID not found in registry.