348 lines
11 KiB
C
348 lines
11 KiB
C
/*
|
|
* Copyright 2001-2008 Texas Instruments - http://www.ti.com/
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
* ======== cfg.h ========
|
|
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
|
|
* Purpose:
|
|
* PM Configuration module.
|
|
*
|
|
* Private Functions:
|
|
* CFG_Exit
|
|
* CFG_GetAutoStart
|
|
* CFG_GetCDVersion
|
|
* CFG_GetDevObject
|
|
* CFG_GetDSPResources
|
|
* CFG_GetExecFile
|
|
* CFG_GetHostResources
|
|
* CFG_GetObject
|
|
* CFG_GetPerfValue
|
|
* CFG_GetWMDFileName
|
|
* CFG_GetZLFile
|
|
* CFG_Init
|
|
* CFG_SetDevObject
|
|
* CFG_SetObject
|
|
*
|
|
*! Revision History:
|
|
*! =================
|
|
*! 26-Feb-2003 kc Removed unused CFG fxns.
|
|
*! 28-Aug-2001 jeh Added CFG_GetLoaderName.
|
|
*! 26-Jul-2000 rr: Added CFG_GetDCDName to retrieve the DCD Dll name.
|
|
*! 13-Jul-2000 rr: Added CFG_GetObject & CFG_SetObject.
|
|
*! 13-Jan-2000 rr: CFG_Get/SetPrivateDword renamed to CFG_Get/SetDevObject.
|
|
*! CFG_GetWinBRIDGEDir/Directory,CFG_GetSearchPath removed.
|
|
*! 15-Jan-1998 cr: Code review cleanup.
|
|
*! 16-Aug-1997 cr: Added explicit cdecl identifiers.
|
|
*! 12-Dec-1996 gp: Moved CFG_FindInSearchPath to CSP module.
|
|
*! 13-Sep-1996 gp: Added CFG_GetBoardName().
|
|
*! 22-Jul-1996 gp: Added CFG_GetTraceStr, to retrieve an initial GT trace.
|
|
*! 26-Jun-1996 cr: Added CFG_FindInSearchPath.
|
|
*! 25-Jun-1996 cr: Added CFG_GetWinSPOXDir.
|
|
*! 17-Jun-1996 cr: Added CFG_GetDevNode.
|
|
*! 11-Jun-1996 cr: Cleaned up for code review.
|
|
*! 07-Jun-1996 cr: Added CFG_GetExecFile and CFG_GetZLFileName functions.
|
|
*! 04-Jun-1996 gp: Added AutoStart regkey and accessor function. Placed
|
|
*! OUT parameters in accessor function param. lists at end.
|
|
*! 29-May-1996 gp: Moved DEV_HDEVNODE to here and renamed CFG_HDEVNODE.
|
|
*! 22-May-1996 cr: Added GetHostResources, GetDSPResources, and
|
|
*! GetWMDFileName services.
|
|
*! 18-May-1996 gp: Created.
|
|
*/
|
|
|
|
#ifndef CFG_
|
|
#define CFG_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <dspapi.h>
|
|
#include <cfgdefs.h>
|
|
|
|
/*
|
|
* ======== CFG_Exit ========
|
|
* Purpose:
|
|
* Discontinue usage of the CFG module.
|
|
* Parameters:
|
|
* Returns:
|
|
* Requires:
|
|
* CFG_Init() was previously called.
|
|
* Ensures:
|
|
* Resources acquired in CFG_Init() are freed.
|
|
*/
|
|
extern VOID CFG_Exit();
|
|
|
|
/*
|
|
* ======== CFG_GetAutoStart ========
|
|
* Purpose:
|
|
* Retreive the autostart mask, if any, for this board.
|
|
* Parameters:
|
|
* hDevNode: Handle to the DevNode who's WMD we are querying.
|
|
* pdwAutoStart: Ptr to location for 32 bit autostart mask.
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: Unable to retreive resource.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: *pdwAutoStart contains autostart mask for this devnode.
|
|
*/
|
|
extern DSP_STATUS CFG_GetAutoStart(IN struct CFG_DEVNODE* hDevNode,
|
|
OUT DWORD * pdwAutoStart);
|
|
|
|
/*
|
|
* ======== CFG_GetCDVersion ========
|
|
* Purpose:
|
|
* Retrieves the version of the PM Class Driver.
|
|
* Parameters:
|
|
* pdwVersion: Ptr to DWORD to contain version number upon return.
|
|
* Returns:
|
|
* DSP_SOK: Success. pdwVersion contains Class Driver version in
|
|
* the form: 0xAABBCCDD where AABB is Major version and
|
|
* CCDD is Minor.
|
|
* DSP_EFAIL: Failure.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: Success.
|
|
* else: *pdwVersion is NULL.
|
|
*/
|
|
extern DSP_STATUS CFG_GetCDVersion(OUT DWORD * pdwVersion);
|
|
|
|
/*
|
|
* ======== CFG_GetDevObject ========
|
|
* Purpose:
|
|
* Retrieve the Device Object handle for a given devnode.
|
|
* Parameters:
|
|
* hDevNode: Platform's DevNode handle from which to retrieve value.
|
|
* pdwValue: Ptr to location to store the value.
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_INVALIDPOINTER: phDevObject is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: The resource is not available.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: *pdwValue is set to the retrieved DWORD.
|
|
* else: *pdwValue is set to 0L.
|
|
*/
|
|
extern DSP_STATUS CFG_GetDevObject(IN struct CFG_DEVNODE* hDevNode,
|
|
OUT DWORD * pdwValue);
|
|
|
|
/*
|
|
* ======== CFG_GetDSPResources ========
|
|
* Purpose:
|
|
* Get the DSP resources available to a given device.
|
|
* Parameters:
|
|
* hDevNode: Handle to the DEVNODE who's resources we are querying.
|
|
* pDSPResTable: Ptr to a location to store the DSP resource table.
|
|
* Returns:
|
|
* DSP_SOK: On success.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: The DSP Resource information is not
|
|
* available
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: pDSPResTable points to a filled table of resources allocated
|
|
* for the specified WMD.
|
|
*/
|
|
extern DSP_STATUS CFG_GetDSPResources(IN struct CFG_DEVNODE* hDevNode,
|
|
OUT struct CFG_DSPRES * pDSPResTable);
|
|
|
|
|
|
/*
|
|
* ======== CFG_GetExecFile ========
|
|
* Purpose:
|
|
* Retreive the default executable, if any, for this board.
|
|
* Parameters:
|
|
* hDevNode: Handle to the DevNode who's WMD we are querying.
|
|
* cBufSize: Size of buffer.
|
|
* pstrExecFile: Ptr to character buf to hold ExecFile.
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_INVALIDPOINTER: pstrExecFile is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: The resource is not available.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: Not more than cBufSize bytes were copied into pstrExecFile,
|
|
* and *pstrExecFile contains default executable for this
|
|
* devnode.
|
|
*/
|
|
extern DSP_STATUS CFG_GetExecFile(IN struct CFG_DEVNODE* hDevNode,
|
|
IN ULONG cBufSize,
|
|
OUT PSTR pstrExecFile);
|
|
|
|
/*
|
|
* ======== CFG_GetHostResources ========
|
|
* Purpose:
|
|
* Get the Host PC allocated resources assigned to a given device.
|
|
* Parameters:
|
|
* hDevNode: Handle to the DEVNODE who's resources we are querying.
|
|
* pHostResTable: Ptr to a location to store the host resource table.
|
|
* Returns:
|
|
* DSP_SOK: On success.
|
|
* CFG_E_INVALIDPOINTER: pHostResTable is invalid.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: The resource is not available.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: pHostResTable points to a filled table of resources
|
|
* allocated for the specified WMD.
|
|
*
|
|
*/
|
|
extern DSP_STATUS CFG_GetHostResources(IN struct CFG_DEVNODE* hDevNode,
|
|
OUT struct CFG_HOSTRES * pHostResTable);
|
|
|
|
/*
|
|
* ======== CFG_GetObject ========
|
|
* Purpose:
|
|
* Retrieve the Driver Object handle From the Registry
|
|
* Parameters:
|
|
* pdwValue: Ptr to location to store the value.
|
|
* dwType Type of Object to Get
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: *pdwValue is set to the retrieved DWORD(non-Zero).
|
|
* else: *pdwValue is set to 0L.
|
|
*/
|
|
extern DSP_STATUS CFG_GetObject(OUT DWORD * pdwValue, DWORD dwType);
|
|
|
|
/*
|
|
* ======== CFG_GetPerfValue ========
|
|
* Purpose:
|
|
* Retrieve a flag indicating whether PERF should log statistics for the
|
|
* PM class driver.
|
|
* Parameters:
|
|
* pfEnablePerf: Location to store flag. 0 indicates the key was
|
|
* not found, or had a zero value. A nonzero value
|
|
* means the key was found and had a nonzero value.
|
|
* Returns:
|
|
* Requires:
|
|
* pfEnablePerf != NULL;
|
|
* Ensures:
|
|
*/
|
|
extern VOID CFG_GetPerfValue(OUT bool * pfEnablePerf);
|
|
|
|
/*
|
|
* ======== CFG_GetWMDFileName ========
|
|
* Purpose:
|
|
* Get the mini-driver file name for a given device.
|
|
* Parameters:
|
|
* hDevNode: Handle to the DevNode who's WMD we are querying.
|
|
* cBufSize: Size of buffer.
|
|
* pWMDFileName: Ptr to a character buffer to hold the WMD filename.
|
|
* Returns:
|
|
* DSP_SOK: On success.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: The filename is not available.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: Not more than cBufSize bytes were copied
|
|
* into pWMDFileName.
|
|
*
|
|
*/
|
|
extern DSP_STATUS CFG_GetWMDFileName(IN struct CFG_DEVNODE* hDevNode,
|
|
IN ULONG cBufSize,
|
|
OUT PSTR pWMDFileName);
|
|
|
|
/*
|
|
* ======== CFG_GetZLFile ========
|
|
* Purpose:
|
|
* Retreive the ZLFile, if any, for this board.
|
|
* Parameters:
|
|
* hDevNode: Handle to the DevNode who's WMD we are querying.
|
|
* cBufSize: Size of buffer.
|
|
* pstrZLFileName: Ptr to character buf to hold ZLFileName.
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* CFG_E_INVALIDPOINTER: pstrZLFileName is invalid.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* CFG_E_RESOURCENOTAVAIL: couldn't find the ZLFileName.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: Not more than cBufSize bytes were copied into
|
|
* pstrZLFileName, and *pstrZLFileName contains ZLFileName
|
|
* for this devnode.
|
|
*/
|
|
extern DSP_STATUS CFG_GetZLFile(IN struct CFG_DEVNODE* hDevNode,
|
|
IN ULONG cBufSize,
|
|
OUT PSTR pstrZLFileName);
|
|
|
|
/*
|
|
* ======== CFG_Init ========
|
|
* Purpose:
|
|
* Initialize the CFG module's private state.
|
|
* Parameters:
|
|
* Returns:
|
|
* TRUE if initialized; FALSE if error occured.
|
|
* Requires:
|
|
* Ensures:
|
|
* A requirement for each of the other public CFG functions.
|
|
*/
|
|
extern bool CFG_Init();
|
|
|
|
/*
|
|
* ======== CFG_SetDevObject ========
|
|
* Purpose:
|
|
* Store the Device Object handle for a given devnode.
|
|
* Parameters:
|
|
* hDevNode: Platform's DevNode handle we are storing value with.
|
|
* dwValue: Arbitrary value to store.
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* CFG_E_INVALIDHDEVNODE: hDevNode is invalid.
|
|
* DSP_EFAIL: Internal Error.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: The Private DWORD was successfully set.
|
|
*/
|
|
extern DSP_STATUS CFG_SetDevObject(IN struct CFG_DEVNODE* hDevNode,
|
|
IN DWORD dwValue);
|
|
|
|
/*
|
|
* ======== CFG_SetDrvObject ========
|
|
* Purpose:
|
|
* Store the Driver Object handle.
|
|
* Parameters:
|
|
* dwValue: Arbitrary value to store.
|
|
* dwType Type of Object to Store
|
|
* Returns:
|
|
* DSP_SOK: Success.
|
|
* DSP_EFAIL: Internal Error.
|
|
* Requires:
|
|
* CFG initialized.
|
|
* Ensures:
|
|
* DSP_SOK: The Private DWORD was successfully set.
|
|
*/
|
|
extern DSP_STATUS CFG_SetObject(IN DWORD dwValue, IN DWORD dwType);
|
|
|
|
extern DSP_STATUS CFG_GetC55Procs(OUT DWORD * numProcs);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* CFG_ */
|