![Justin P. Mattock](/assets/img/avatar_default.png)
Signed-off-by: Justin P. Mattock <justinmattock@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
158 lines
4.4 KiB
Plaintext
158 lines
4.4 KiB
Plaintext
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.
|