			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.
