/*
* dspbridge/mpu_api/inc/DSPManager.h
*
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
*
* Copyright (C) 2007 Texas Instruments, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation version 2.1 of the License.
*
* This program is distributed .as is. WITHOUT ANY WARRANTY of any kind,
* whether express or implied; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
/*
* ======== DSPManager.h ========
* Description:
* This is the header for the DSP/BIOS Bridge manager module.
*
* Public Functions:
* DspManager_Open
* DspManager_Close
* DSPManager_EnumNodeInfo
* DSPManager_EnumProcessorInfo
* DSPManager_WaitForEvents
* DSPManager_RegisterObject
* DSPManager_UnregisterObject
*
*! Revision History:
*! ================
*! 03-Dec-2003 map Replaced include of dbdcddefs.h with dbdefs.h
*! 22-Nov-2002 gp Replaced include of dbdcd.h w/ dbdcddefs.h (hiding DCD APIs)
*! Formatting cleanup.
*! 15-Oct-2002 kc Removed legacy PERF definitions.
*! 16-Aug-2002 map Added DSPManager_RegisterObject/UnregisterObject for
*! registering Dynamic Libraries
*! 13-Feb-2001 kc: DSP/BIOS Bridge name updates.
*! 22-Nov-2000 kc: Added DSPManager_PerfGetStat to acquire PERF stats.
*! 25-Sep-2000 rr: Updated to Version 0.9
*! 14-Aug-2000 rr: Cleaned up.
*! 20-Jul-2000 rr: Updated to Version 0.8.
*! 27-Jun-2000 rr: Created from dbapi.h
*/
#ifndef DSPMANAGER_
#define DSPMANAGER_
#ifdef __cplusplus
extern "C" {
#endif
#include <dbdefs.h>
/*
* ======== DspManager_Open ========
* Purpose:
* Open handle to the DSP/BIOS Bridge driver
* Parameters:
* argc: Reserved, set to zero
* argp: Reserved, set to NULL
* in the database will be returned.
* Returns:
* DSP_SOK: Success.
* DSP_EFAIL: Failed to open handle to the DSP/BIOS Bridge driver
* Details:
*/
extern DBAPI DspManager_Open(UINT argc, PVOID argp);
/*
* ======== DspManager_Close ========
* Purpose:
* Close handle to the DSP/BIOS Bridge driver
* Parameters:
* argc: Reserved, set to zero
* argp: Reserved, set to NULL
* in the database will be returned.
* Returns:
* DSP_SOK: Success.
* DSP_EFAIL: Failed to close handle to the DSP/BIOS Bridge driver
* Details:
*/
extern DBAPI DspManager_Close(UINT argc, PVOID argp);
/*
* ======== DSPManager_EnumNodeInfo ========
* Purpose:
* Enumerate and get configuration information about nodes configured
* in the node database.
* Parameters:
* uNode: The node index, counting up from 0.
* pNDBProps: Ptr to the DSP_NDBPROPS structure for output.
* uNDBPropsSize: Size of the DSP_NDBPROPS structure.
* puNumNodes: Location where the number of nodes configured
* in the database will be returned.
* Returns:
* DSP_SOK: Success.
* DSP_EINVALIDARG: Parameter uNode is out of range
* DSP_EPOINTER: Parameter pNDBProps or puNumNodes is not valid
* DSP_EFAIL: Unable to get the node information.
* DSP_ESIZE: The size of the specified DSP_NDBPROPS structure
* is too small to hold all node information,
* (i.e., uNDBPropsSize is too small).
* DSP_ECHANGEDURINGENUM: During Enumeration there has been a change in
* the number of nodes configured or in the
* the properties of the enumerated nodes.
* Details:
*/
extern DBAPI DSPManager_EnumNodeInfo(UINT uNode,
OUT struct DSP_NDBPROPS * pNDBProps,
UINT uNDBPropsSize,
OUT UINT * puNumNodes);
/*
* ======== DSPManager_EnumProcessorInfo ========
* Purpose:
* Enumerate and get configuration information about available DSP
* processors.
* Parameters:
* uProcessor: The processor index, counting up from 0.
* pProcessorInfo: Ptr to the DSP_PROCESSORINFO structure .
* uProcessorInfoSize: Size of DSP_PROCESSORINFO structure.
* puNumProcs: Location where the number of DSPs configured
* in the database will be returned
* Returns:
* DSP_SOK: Success.
* DSP_EINVALIDARG: Parameter uProcessor is out of range
* DSP_EPOINTER: Parameter pProcessorInfo or puNumProcs is not valid.
* DSP_EFAIL: Unable to get the processor information.
* DSP_ESIZE: The size of the specified DSP_PROCESSORINFO struct
* is too small to hold all the processor information,
* (i.e., uProcessorInfoSize is too small).
* Details:
*/
extern DBAPI DSPManager_EnumProcessorInfo(UINT uProcessor,
OUT struct DSP_PROCESSORINFO *
pProcessorInfo,
UINT uProcessorInfoSize,
OUT UINT * puNumProcs);
/*
* ======== DSPManager_WaitForEvents ========
* Purpose:
* Block on any Bridge event(s)
* Parameters:
* aNotifications : array of pointers to notification objects.
* uCount : number of elements in above array
* puIndex : index of signaled event object
* uTimeout : timeout interval in milliseocnds
* Returns:
* DSP_SOK : Success.
* DSP_ETIMEOUT : Wait timed out. *puIndex is undetermined.
* Details:
*/
extern DBAPI DSPManager_WaitForEvents(struct DSP_NOTIFICATION**
aNotifications, UINT uCount,
OUT UINT * puIndex,
UINT uTimeout);
/*
* ======== DSPManager_RegisterObject ========
* Purpose:
* Register object with DSP/BIOS Bridge Configuration database (DCD).
* Parameters:
* pUuid: Pointer to UUID structure.
* objType: Library Type
* pszPathName: Path to library
* Returns:
* DSP_SOK: Success.
* DSP_EFAIL: Unable to register object with the DCD.
* Details:
*/
extern DBAPI DSPManager_RegisterObject(struct DSP_UUID * pUuid,
DSP_DCDOBJTYPE objType,
CHAR * pszPathName);
/*
* ======== DSPManager_UnregisterObject ========
* Purpose:
* Unregister object with DSP/BIOS Bridge Configuration Database (DCD).
* Parameters:
* pUuid: Pointer to UUID structure.
* objType: Library Type
* Returns:
* DSP_SOK: Success.
* DSP_EFAIL: Unable to unregister object from the DCD.
* Details:
*/
extern DBAPI DSPManager_UnregisterObject(struct DSP_UUID * pUuid,
DSP_DCDOBJTYPE objType);
#ifndef RES_CLEANUP_DISABLE
/*
* ======== DSPManager_GetProcResourceInfo========
* Purpose:
* Get GPP process resource information.
* Parameters:
* pBuf: Pointer to information buffer.
* Returns:
* DSP_SOK: Success.
* DSP_EFAIL: Unable to unregister object from the DCD.
* Details:
*/
extern DBAPI DSPManager_GetProcResourceInfo(UINT *pBuf, UINT *pSize);
#endif
#ifdef __cplusplus
}
#endif
#endif /* DSPManager_ */