173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Copyright 2001-2008 Texas Instruments - http://www.ti.com/
373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Licensed under the Apache License, Version 2.0 (the "License");
573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  you may not use this file except in compliance with the License.
673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  You may obtain a copy of the License at
773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *     http://www.apache.org/licenses/LICENSE-2.0
973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Unless required by applicable law or agreed to in writing, software
1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  distributed under the License is distributed on an "AS IS" BASIS,
1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  See the License for the specific language governing permissions and
1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  limitations under the License.
1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream.h ========
2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  DSP-BIOS Bridge driver support functions for TI OMAP processors.
2173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Description:
2273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      This is the header for the DSP/BIOS Bridge stream module.
2373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Public Functions:
2573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_AllocateBuffers
2673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_Close
2773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_FreeBuffers
2873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_GetInfo
2973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_Idle
3073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_Issue
3173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_Open
3273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_Reclaim
3373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_RegisterNotify
3473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSPStream_Select
3573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
3673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Notes:
3773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
3873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Revision History:
3973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! ================
4073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 23-Nov-2002 gp: Comment change: uEventMask is really a "type".
4173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 17-Dec-2001 ag  Fix return codes in DSPStream_[Issue][Reclaim]
4273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 12-Dec-2001 ag  Added DSP_ENOTIMPL error code to DSPStream_Open().
4373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 17-Nov-2001 ag  Added DSP_ETRANSLATE error.
4473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Added bufSize param and renamed dwBytes to dwDataSize in
4573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 DSPStream_[Issue][Reclaim]().
4673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 07-Jun-2001 sg: Made buffer alloc/free fxn names plural.
4773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 13-Feb-2001 kc: DSP/BIOS Bridge name updates.
4873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 27-Sep-2000 jeh Removed DSP_BUFFERATTR parameter from DSPStream_Allocate-
4973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 Buffer(), since these have been moved to DSP_STREAMATTRIN.
5073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 07-Sep-2000 jeh Changed type HANDLE in DSPStream_RegisterNotify to
5173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *!                 DSP_HNOTIFICATION.
5273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 20-Jul-2000 rr: Updated to version 0.8
5373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 27-Jun-2000 rr: Created from DBAPI.h
5473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
5573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <host_os.h>
5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef DSPStream_
5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSPStream_
5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinextern "C" {
6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_AllocateBuffers ========
6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Allocate data buffers for use with a specific stream.
6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uSize:              Size of the buffer
7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      apBuffer:           Ptr to location to hold array of buffers.
7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uNumBufs:           The number of buffers to allocate of size uSize.
7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
7473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
7573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EMEMORY:        Insufficient memory
7673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Parameter apBuffer is not valid.
7773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EALIGNMENT:     Stream's alignment value not supported.
7873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESIZE:          Illegal size.
7973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          General failure to allocate buffer.
8073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
8173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
8273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_AllocateBuffers(DSP_HSTREAM hStream,
8373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					       UINT uSize, OUT BYTE ** apBuffer,
8473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					       UINT uNumBufs);
8573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
8673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
8773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Close ========
8873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
8973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Close a stream and free the underlying stream object.
9073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
9173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
9273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
9373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
9473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
9573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPENDING:       Not all stream buffers have been reclaimed
9673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to Close the Stream
9773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
9873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
9973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Close(DSP_HSTREAM hStream);
10073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
10173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
10273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_FreeBuffers ========
10373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
10473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Free a previously allocated stream data buffer.
10573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
10673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
10773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      apBuffer:           The array of buffers to free.
10873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uNumBufs:           The number of buffers.
10973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
11073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
11173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
11273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Parameter apBuffer is not valid.
11373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to free the data buffers
11473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
11573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
11673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_FreeBuffers(DSP_HSTREAM hStream,
11773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					   IN BYTE ** apBuffer, UINT uNumBufs);
11873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
11973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
12073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_GetInfo ========
12173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
12273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Get information about a stream.
12373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
12473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
12573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pStreamInfo:        Ptr to the DSP_STREAMINFO structure.
12673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uStreamInfoSize:    The size of structure.
12773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
12873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
12973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
13073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Parameter pStreamInfo is invalid.
13173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESIZE:          uStreamInfoSize is too small to hold all stream
13273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          information.
13373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to retrieve Stream info
13473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
13573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
13673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_GetInfo(DSP_HSTREAM hStream,
13773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT struct DSP_STREAMINFO * pStreamInfo,
13873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       UINT uStreamInfoSize);
13973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
14073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
14173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Idle ========
14273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
14373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Terminate I/O with a particular stream, and (optionally)
14473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      flush output data buffers.
14573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
14673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
14773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      bFlush:             Boolean flag
14873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
14973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
15073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
15173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETIMEOUT:       Time out occurred.
15273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERESTART:       A critical error has
15373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          occurred and the DSP is being restarted.
15473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to Idle the stream
15573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
15673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
15773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Idle(DSP_HSTREAM hStream, bool bFlush);
15873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
15973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
16073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Issue ========
16173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
16273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Send a buffer of data to a stream.
16373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
16473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
16573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBuffer:            Ptr to the buffer.
16673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      dwDataSize:         Size of data in buffer in bytes.
16773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      dwBufSize:          Size of actual buffer in bytes.
16873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      dwArg:              User defined buffer context.
16973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
17073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
17173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
17273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid pBuffer pointer
17373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESTREAMFULL:    The stream has been issued the maximum number
17473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          of buffers allowed in the stream at once;
17573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          buffers must be reclaimed from the stream
17673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          before any more can be issued.
17773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to issue the buffer.
17873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETRANSLATE:     Unable to map shared buffer to client process.
17973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
18073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
18173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Issue(DSP_HSTREAM hStream, IN BYTE * pBuffer,
18273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				     ULONG dwDataSize, ULONG dwBufSize,
18373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				     IN DWORD dwArg);
18473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
18573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
18673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Open ========
18773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
18873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Retrieve a stream handle for sending/receiving data buffers
18973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      to/from a task node on a DSP.
19073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
19173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hNode:              The node handle.
19273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uDirection:         Stream direction: {DSP_TONODE | DSP_FROMNODE}.
19373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uIndex:             Stream index (zero based).
19473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pAttrIn:            Ptr to the stream attributes (optional)
19573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      phStream:           Ptr to location to store the stream handle.
19673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
19773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
19873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid phStream pointer.
19973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ENODETYPE:      Stream can not be opened for this node type/
20073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EDIRECTION:     uDirection is invalid
20173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EVALUE:         uIndex is invalid, or, if pAttrIn != NULL,
20273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          pAttrIn->uSegment is invalid.
20373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          General failure.
20473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESTRMMODE:      Stream mode is invalid.
20573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EDMACHNL:       DMAChnlId is invalid, if STRMMODE is LDMA or RDMA.
20673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
20773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ENOTIMPL:       Stream mode is not supported.
20873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
20973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
21073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
21173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Open(DSP_HNODE hNode, UINT uDirection,
21273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				    UINT uIndex,
21373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				    IN OPTIONAL struct DSP_STREAMATTRIN * pAttrIn,
21473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				    OUT DSP_HSTREAM * phStream);
21573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
21673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
21773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_PrepareBuffer ========
21873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
21973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Prepare a buffer that was not allocated by DSPStream_AllocateBuffers
22073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      for use with a stream
22173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
22273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            Stream handle
22373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uSize:              Size of the allocated buffer(GPP bytes)
22473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBffer:             Address of the Allocated buffer
22573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
22673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success
22773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle
22873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid pBuffer
22973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to Prepare a buffer
23073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
23173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_PrepareBuffer(DSP_HSTREAM hStream, UINT uSize,
23273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					     BYTE * pBuffer);
23373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
23473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
23573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Reclaim ========
23673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
23773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Request a buffer back from a stream.
23873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
23973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
24073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBufPtr:            Ptr to location to store stream buffer.
24173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pDataSize:          Ptr to location to store data size of the buffer.
24273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBufSize:           Ptr to location to store actual size of the buffer.
24373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pdwArg:             Ptr to location to store user defined context.
24473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
24573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
24673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
24773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       One of pBufPtr or pBytes is invalid.
24873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETIMEOUT:       Timeout waiting from I/O completion.
24973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERESTART:       A critical error has occurred and
25073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          the DSP is being restarted.
25173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to Reclaim buffer.
25273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETRANSLATE:     Unable to map shared buffer to client process.
25373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
25473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
25573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Reclaim(DSP_HSTREAM hStream,
25673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT BYTE ** pBufPtr,
25773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT ULONG * pDataSize,
25873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT ULONG * pBufSize,
25973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT DWORD * pdwArg);
26073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
26173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
26273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_RegisterNotify ========
26373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
26473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Register to be notified of specific events for this stream.
26573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
26673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
26773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uEventMask:         Type of event to be notified about.
26873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uNotifyType:        Type of notification to be sent.
26973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hNotification:      Handle to be used for notification.
27073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
27173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
27273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid stream handle or invalid hNotification
27373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EVALUE:         uEventMask is invalid
27473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ENOTIMP:        Not supported as specified in uNotifyType
27573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to Register for notification
27673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
27773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
27873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_RegisterNotify(DSP_HSTREAM hStream,
27973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					      UINT uEventMask, UINT uNotifyType,
28073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					      struct DSP_NOTIFICATION* hNotification);
28173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
28273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
28373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Select ========
28473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
28573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Select a ready stream.
28673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
28773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      aStreamTab:         Array of stream handles.
28873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      nStreams:           Number of streams in array.
28973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pMask:              Pointer to the mask of ready streams.
29073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uTimeout:           Timeout value in milliseconds.
29173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
29273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
29373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERANGE:         nStreams is out of range
29473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid aStreamTab or pMask pointer.
29573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETIMEOUT        Timeout occured.
29673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to select a stream.
29773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERESTART:       A critical error has occurred and
29873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          the DSP is being restarted.
29973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
30073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
30173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Select(IN DSP_HSTREAM * aStreamTab,
30273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				      UINT nStreams, OUT UINT * pMask,
30373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				      UINT uTimeout);
30473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
30573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
30673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_UnprepareBuffer ========
30773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
30873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      UnPrepare a buffer that was prepared by DSPStream_PrepareBuffer
30973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      and will no longer be used with the stream
31073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
31173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            Stream handle
31273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uSize:              Size of the allocated buffer(GPP bytes)
31373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBffer:             Address of the Allocated buffer
31473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
31573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success
31673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle
31773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid pBuffer
31873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to UnPrepare a buffer
31973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
32073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_UnprepareBuffer(DSP_HSTREAM hStream, UINT uSize,
32173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					       BYTE * pBuffer);
32273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
32373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
32473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin}
32573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
32673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif				/* DSPStream_ */
327