173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dspbridge/mpu_api/inc/DSPStream.h
373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP-BIOS Bridge driver support functions for TI OMAP processors.
573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Copyright (C) 2007 Texas Instruments, Inc.
773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is free software; you can redistribute it and/or modify it
973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * under the terms of the GNU Lesser General Public License as published
1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * by the Free Software Foundation version 2.1 of the License.
1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is distributed .as is. WITHOUT ANY WARRANTY of any kind,
1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * whether express or implied; without even the implied warranty of
1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Lesser General Public License for more details.
1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream.h ========
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
5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <host_os.h>
5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef DSPStream_
5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DSPStream_
6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinextern "C" {
6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_AllocateBuffers ========
6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Allocate data buffers for use with a specific stream.
6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uSize:              Size of the buffer
7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      apBuffer:           Ptr to location to hold array of buffers.
7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uNumBufs:           The number of buffers to allocate of size uSize.
7473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
7573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
7673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
7773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EMEMORY:        Insufficient memory
7873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Parameter apBuffer is not valid.
7973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EALIGNMENT:     Stream's alignment value not supported.
8073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESIZE:          Illegal size.
8173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          General failure to allocate buffer.
8273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
8373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
8473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_AllocateBuffers(DSP_HSTREAM hStream,
8573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					       UINT uSize, OUT BYTE ** apBuffer,
8673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					       UINT uNumBufs);
8773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
8873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
8973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Close ========
9073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
9173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Close a stream and free the underlying stream object.
9273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
9373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
9473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
9573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
9673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
9773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPENDING:       Not all stream buffers have been reclaimed
9873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to Close the Stream
9973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
10073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
10173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Close(DSP_HSTREAM hStream);
10273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
10373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
10473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_FreeBuffers ========
10573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
10673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Free a previously allocated stream data buffer.
10773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
10873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
10973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      apBuffer:           The array of buffers to free.
11073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uNumBufs:           The number of buffers.
11173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
11273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
11373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
11473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Parameter apBuffer is not valid.
11573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to free the data buffers
11673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
11773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
11873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_FreeBuffers(DSP_HSTREAM hStream,
11973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					   IN BYTE ** apBuffer, UINT uNumBufs);
12073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
12173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
12273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_GetInfo ========
12373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
12473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Get information about a stream.
12573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
12673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
12773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pStreamInfo:        Ptr to the DSP_STREAMINFO structure.
12873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uStreamInfoSize:    The size of structure.
12973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
13073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
13173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
13273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Parameter pStreamInfo is invalid.
13373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESIZE:          uStreamInfoSize is too small to hold all stream
13473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          information.
13573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to retrieve Stream info
13673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
13773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
13873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_GetInfo(DSP_HSTREAM hStream,
13973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT struct DSP_STREAMINFO * pStreamInfo,
14073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       UINT uStreamInfoSize);
14173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
14273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
14373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Idle ========
14473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
14573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Terminate I/O with a particular stream, and (optionally)
14673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      flush output data buffers.
14773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
14873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
14973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      bFlush:             Boolean flag
15073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
15173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
15273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
15373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETIMEOUT:       Time out occurred.
15473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERESTART:       A critical error has
15573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          occurred and the DSP is being restarted.
15673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to Idle the stream
15773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
15873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
15973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Idle(DSP_HSTREAM hStream, bool bFlush);
16073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
16173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
16273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Issue ========
16373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
16473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Send a buffer of data to a stream.
16573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
16673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
16773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBuffer:            Ptr to the buffer.
16873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      dwDataSize:         Size of data in buffer in bytes.
16973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      dwBufSize:          Size of actual buffer in bytes.
17073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      dwArg:              User defined buffer context.
17173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
17273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
17373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
17473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid pBuffer pointer
17573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESTREAMFULL:    The stream has been issued the maximum number
17673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          of buffers allowed in the stream at once;
17773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          buffers must be reclaimed from the stream
17873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          before any more can be issued.
17973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to issue the buffer.
18073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETRANSLATE:     Unable to map shared buffer to client process.
18173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
18273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
18373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Issue(DSP_HSTREAM hStream, IN BYTE * pBuffer,
18473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				     ULONG dwDataSize, ULONG dwBufSize,
18573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				     IN DWORD dwArg);
18673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
18773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
18873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Open ========
18973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
19073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Retrieve a stream handle for sending/receiving data buffers
19173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      to/from a task node on a DSP.
19273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
19373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hNode:              The node handle.
19473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uDirection:         Stream direction: {DSP_TONODE | DSP_FROMNODE}.
19573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uIndex:             Stream index (zero based).
19673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pAttrIn:            Ptr to the stream attributes (optional)
19773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      phStream:           Ptr to location to store the stream handle.
19873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
19973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
20073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid phStream pointer.
20173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ENODETYPE:      Stream can not be opened for this node type/
20273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EDIRECTION:     uDirection is invalid
20373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EVALUE:         uIndex is invalid, or, if pAttrIn != NULL,
20473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          pAttrIn->uSegment is invalid.
20573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          General failure.
20673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ESTRMMODE:      Stream mode is invalid.
20773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EDMACHNL:       DMAChnlId is invalid, if STRMMODE is LDMA or RDMA.
20873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
20973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ENOTIMPL:       Stream mode is not supported.
21073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
21173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
21273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
21373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Open(DSP_HNODE hNode, UINT uDirection,
21473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				    UINT uIndex,
21573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				    IN OPTIONAL struct DSP_STREAMATTRIN * pAttrIn,
21673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				    OUT DSP_HSTREAM * phStream);
21773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
21873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
21973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_PrepareBuffer ========
22073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
22173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Prepare a buffer that was not allocated by DSPStream_AllocateBuffers
22273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      for use with a stream
22373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
22473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            Stream handle
22573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uSize:              Size of the allocated buffer(GPP bytes)
22673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBffer:             Address of the Allocated buffer
22773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
22873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success
22973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle
23073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid pBuffer
23173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to Prepare a buffer
23273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
23373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_PrepareBuffer(DSP_HSTREAM hStream, UINT uSize,
23473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					     BYTE * pBuffer);
23573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
23673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
23773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Reclaim ========
23873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
23973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Request a buffer back from a stream.
24073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
24173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
24273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBufPtr:            Ptr to location to store stream buffer.
24373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pDataSize:          Ptr to location to store data size of the buffer.
24473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBufSize:           Ptr to location to store actual size of the buffer.
24573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pdwArg:             Ptr to location to store user defined context.
24673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
24773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
24873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle.
24973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       One of pBufPtr or pBytes is invalid.
25073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETIMEOUT:       Timeout waiting from I/O completion.
25173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERESTART:       A critical error has occurred and
25273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          the DSP is being restarted.
25373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to Reclaim buffer.
25473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETRANSLATE:     Unable to map shared buffer to client process.
25573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
25673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
25773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Reclaim(DSP_HSTREAM hStream,
25873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT BYTE ** pBufPtr,
25973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT ULONG * pDataSize,
26073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT ULONG * pBufSize,
26173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				       OUT DWORD * pdwArg);
26273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
26373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
26473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_RegisterNotify ========
26573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
26673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Register to be notified of specific events for this stream.
26773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
26873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            The stream handle.
26973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uEventMask:         Type of event to be notified about.
27073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uNotifyType:        Type of notification to be sent.
27173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hNotification:      Handle to be used for notification.
27273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
27373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
27473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid stream handle or invalid hNotification
27573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EVALUE:         uEventMask is invalid
27673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ENOTIMP:        Not supported as specified in uNotifyType
27773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Unable to Register for notification
27873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
27973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
28073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_RegisterNotify(DSP_HSTREAM hStream,
28173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					      UINT uEventMask, UINT uNotifyType,
28273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					      struct DSP_NOTIFICATION* hNotification);
28373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
28473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
28573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_Select ========
28673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
28773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Select a ready stream.
28873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
28973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      aStreamTab:         Array of stream handles.
29073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      nStreams:           Number of streams in array.
29173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pMask:              Pointer to the mask of ready streams.
29273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uTimeout:           Timeout value in milliseconds.
29373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
29473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success.
29573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERANGE:         nStreams is out of range
29673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid aStreamTab or pMask pointer.
29773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ETIMEOUT        Timeout occured.
29873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to select a stream.
29973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_ERESTART:       A critical error has occurred and
30073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *                          the DSP is being restarted.
30173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Details:
30273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
30373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_Select(IN DSP_HSTREAM * aStreamTab,
30473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				      UINT nStreams, OUT UINT * pMask,
30573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				      UINT uTimeout);
30673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
30773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
30873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== DSPStream_UnprepareBuffer ========
30973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Purpose:
31073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      UnPrepare a buffer that was prepared by DSPStream_PrepareBuffer
31173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      and will no longer be used with the stream
31273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Parameters:
31373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      hStream:            Stream handle
31473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      uSize:              Size of the allocated buffer(GPP bytes)
31573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      pBffer:             Address of the Allocated buffer
31673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Returns:
31773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_SOK:            Success
31873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EHANDLE:        Invalid Stream handle
31973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EPOINTER:       Invalid pBuffer
32073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      DSP_EFAIL:          Failure to UnPrepare a buffer
32173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
32273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	extern DBAPI DSPStream_UnprepareBuffer(DSP_HSTREAM hStream, UINT uSize,
32373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin					       BYTE * pBuffer);
32473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
32573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus
32673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin}
32773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif
32873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif				/* DSPStream_ */
329