/*
* 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_ */