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