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