1/* 2 * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17/* 18 * ======== cfg.h ======== 19 * DSP-BIOS Bridge driver support functions for TI OMAP processors. 20 * Purpose: 21 * PM Configuration module. 22 * 23 * Private Functions: 24 * CFG_Exit 25 * CFG_GetAutoStart 26 * CFG_GetCDVersion 27 * CFG_GetDevObject 28 * CFG_GetDSPResources 29 * CFG_GetExecFile 30 * CFG_GetHostResources 31 * CFG_GetObject 32 * CFG_GetPerfValue 33 * CFG_GetWMDFileName 34 * CFG_GetZLFile 35 * CFG_Init 36 * CFG_SetDevObject 37 * CFG_SetObject 38 * 39 *! Revision History: 40 *! ================= 41 *! 26-Feb-2003 kc Removed unused CFG fxns. 42 *! 28-Aug-2001 jeh Added CFG_GetLoaderName. 43 *! 26-Jul-2000 rr: Added CFG_GetDCDName to retrieve the DCD Dll name. 44 *! 13-Jul-2000 rr: Added CFG_GetObject & CFG_SetObject. 45 *! 13-Jan-2000 rr: CFG_Get/SetPrivateDword renamed to CFG_Get/SetDevObject. 46 *! CFG_GetWinBRIDGEDir/Directory,CFG_GetSearchPath removed. 47 *! 15-Jan-1998 cr: Code review cleanup. 48 *! 16-Aug-1997 cr: Added explicit cdecl identifiers. 49 *! 12-Dec-1996 gp: Moved CFG_FindInSearchPath to CSP module. 50 *! 13-Sep-1996 gp: Added CFG_GetBoardName(). 51 *! 22-Jul-1996 gp: Added CFG_GetTraceStr, to retrieve an initial GT trace. 52 *! 26-Jun-1996 cr: Added CFG_FindInSearchPath. 53 *! 25-Jun-1996 cr: Added CFG_GetWinSPOXDir. 54 *! 17-Jun-1996 cr: Added CFG_GetDevNode. 55 *! 11-Jun-1996 cr: Cleaned up for code review. 56 *! 07-Jun-1996 cr: Added CFG_GetExecFile and CFG_GetZLFileName functions. 57 *! 04-Jun-1996 gp: Added AutoStart regkey and accessor function. Placed 58 *! OUT parameters in accessor function param. lists at end. 59 *! 29-May-1996 gp: Moved DEV_HDEVNODE to here and renamed CFG_HDEVNODE. 60 *! 22-May-1996 cr: Added GetHostResources, GetDSPResources, and 61 *! GetWMDFileName services. 62 *! 18-May-1996 gp: Created. 63 */ 64 65#ifndef CFG_ 66#define CFG_ 67 68#ifdef __cplusplus 69extern "C" { 70#endif 71 72#include <dspapi.h> 73#include <cfgdefs.h> 74 75/* 76 * ======== CFG_Exit ======== 77 * Purpose: 78 * Discontinue usage of the CFG module. 79 * Parameters: 80 * Returns: 81 * Requires: 82 * CFG_Init() was previously called. 83 * Ensures: 84 * Resources acquired in CFG_Init() are freed. 85 */ 86 extern VOID CFG_Exit(); 87 88/* 89 * ======== CFG_GetAutoStart ======== 90 * Purpose: 91 * Retreive the autostart mask, if any, for this board. 92 * Parameters: 93 * hDevNode: Handle to the DevNode who's WMD we are querying. 94 * pdwAutoStart: Ptr to location for 32 bit autostart mask. 95 * Returns: 96 * DSP_SOK: Success. 97 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 98 * CFG_E_RESOURCENOTAVAIL: Unable to retreive resource. 99 * Requires: 100 * CFG initialized. 101 * Ensures: 102 * DSP_SOK: *pdwAutoStart contains autostart mask for this devnode. 103 */ 104 extern DSP_STATUS CFG_GetAutoStart(IN struct CFG_DEVNODE* hDevNode, 105 OUT DWORD * pdwAutoStart); 106 107/* 108 * ======== CFG_GetCDVersion ======== 109 * Purpose: 110 * Retrieves the version of the PM Class Driver. 111 * Parameters: 112 * pdwVersion: Ptr to DWORD to contain version number upon return. 113 * Returns: 114 * DSP_SOK: Success. pdwVersion contains Class Driver version in 115 * the form: 0xAABBCCDD where AABB is Major version and 116 * CCDD is Minor. 117 * DSP_EFAIL: Failure. 118 * Requires: 119 * CFG initialized. 120 * Ensures: 121 * DSP_SOK: Success. 122 * else: *pdwVersion is NULL. 123 */ 124 extern DSP_STATUS CFG_GetCDVersion(OUT DWORD * pdwVersion); 125 126/* 127 * ======== CFG_GetDevObject ======== 128 * Purpose: 129 * Retrieve the Device Object handle for a given devnode. 130 * Parameters: 131 * hDevNode: Platform's DevNode handle from which to retrieve value. 132 * pdwValue: Ptr to location to store the value. 133 * Returns: 134 * DSP_SOK: Success. 135 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 136 * CFG_E_INVALIDPOINTER: phDevObject is invalid. 137 * CFG_E_RESOURCENOTAVAIL: The resource is not available. 138 * Requires: 139 * CFG initialized. 140 * Ensures: 141 * DSP_SOK: *pdwValue is set to the retrieved DWORD. 142 * else: *pdwValue is set to 0L. 143 */ 144 extern DSP_STATUS CFG_GetDevObject(IN struct CFG_DEVNODE* hDevNode, 145 OUT DWORD * pdwValue); 146 147/* 148 * ======== CFG_GetDSPResources ======== 149 * Purpose: 150 * Get the DSP resources available to a given device. 151 * Parameters: 152 * hDevNode: Handle to the DEVNODE who's resources we are querying. 153 * pDSPResTable: Ptr to a location to store the DSP resource table. 154 * Returns: 155 * DSP_SOK: On success. 156 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 157 * CFG_E_RESOURCENOTAVAIL: The DSP Resource information is not 158 * available 159 * Requires: 160 * CFG initialized. 161 * Ensures: 162 * DSP_SOK: pDSPResTable points to a filled table of resources allocated 163 * for the specified WMD. 164 */ 165 extern DSP_STATUS CFG_GetDSPResources(IN struct CFG_DEVNODE* hDevNode, 166 OUT struct CFG_DSPRES * pDSPResTable); 167 168 169/* 170 * ======== CFG_GetExecFile ======== 171 * Purpose: 172 * Retreive the default executable, if any, for this board. 173 * Parameters: 174 * hDevNode: Handle to the DevNode who's WMD we are querying. 175 * cBufSize: Size of buffer. 176 * pstrExecFile: Ptr to character buf to hold ExecFile. 177 * Returns: 178 * DSP_SOK: Success. 179 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 180 * CFG_E_INVALIDPOINTER: pstrExecFile is invalid. 181 * CFG_E_RESOURCENOTAVAIL: The resource is not available. 182 * Requires: 183 * CFG initialized. 184 * Ensures: 185 * DSP_SOK: Not more than cBufSize bytes were copied into pstrExecFile, 186 * and *pstrExecFile contains default executable for this 187 * devnode. 188 */ 189 extern DSP_STATUS CFG_GetExecFile(IN struct CFG_DEVNODE* hDevNode, 190 IN ULONG cBufSize, 191 OUT PSTR pstrExecFile); 192 193/* 194 * ======== CFG_GetHostResources ======== 195 * Purpose: 196 * Get the Host PC allocated resources assigned to a given device. 197 * Parameters: 198 * hDevNode: Handle to the DEVNODE who's resources we are querying. 199 * pHostResTable: Ptr to a location to store the host resource table. 200 * Returns: 201 * DSP_SOK: On success. 202 * CFG_E_INVALIDPOINTER: pHostResTable is invalid. 203 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 204 * CFG_E_RESOURCENOTAVAIL: The resource is not available. 205 * Requires: 206 * CFG initialized. 207 * Ensures: 208 * DSP_SOK: pHostResTable points to a filled table of resources 209 * allocated for the specified WMD. 210 * 211 */ 212 extern DSP_STATUS CFG_GetHostResources(IN struct CFG_DEVNODE* hDevNode, 213 OUT struct CFG_HOSTRES * pHostResTable); 214 215/* 216 * ======== CFG_GetObject ======== 217 * Purpose: 218 * Retrieve the Driver Object handle From the Registry 219 * Parameters: 220 * pdwValue: Ptr to location to store the value. 221 * dwType Type of Object to Get 222 * Returns: 223 * DSP_SOK: Success. 224 * Requires: 225 * CFG initialized. 226 * Ensures: 227 * DSP_SOK: *pdwValue is set to the retrieved DWORD(non-Zero). 228 * else: *pdwValue is set to 0L. 229 */ 230 extern DSP_STATUS CFG_GetObject(OUT DWORD * pdwValue, DWORD dwType); 231 232/* 233 * ======== CFG_GetPerfValue ======== 234 * Purpose: 235 * Retrieve a flag indicating whether PERF should log statistics for the 236 * PM class driver. 237 * Parameters: 238 * pfEnablePerf: Location to store flag. 0 indicates the key was 239 * not found, or had a zero value. A nonzero value 240 * means the key was found and had a nonzero value. 241 * Returns: 242 * Requires: 243 * pfEnablePerf != NULL; 244 * Ensures: 245 */ 246 extern VOID CFG_GetPerfValue(OUT bool * pfEnablePerf); 247 248/* 249 * ======== CFG_GetWMDFileName ======== 250 * Purpose: 251 * Get the mini-driver file name for a given device. 252 * Parameters: 253 * hDevNode: Handle to the DevNode who's WMD we are querying. 254 * cBufSize: Size of buffer. 255 * pWMDFileName: Ptr to a character buffer to hold the WMD filename. 256 * Returns: 257 * DSP_SOK: On success. 258 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 259 * CFG_E_RESOURCENOTAVAIL: The filename is not available. 260 * Requires: 261 * CFG initialized. 262 * Ensures: 263 * DSP_SOK: Not more than cBufSize bytes were copied 264 * into pWMDFileName. 265 * 266 */ 267 extern DSP_STATUS CFG_GetWMDFileName(IN struct CFG_DEVNODE* hDevNode, 268 IN ULONG cBufSize, 269 OUT PSTR pWMDFileName); 270 271/* 272 * ======== CFG_GetZLFile ======== 273 * Purpose: 274 * Retreive the ZLFile, if any, for this board. 275 * Parameters: 276 * hDevNode: Handle to the DevNode who's WMD we are querying. 277 * cBufSize: Size of buffer. 278 * pstrZLFileName: Ptr to character buf to hold ZLFileName. 279 * Returns: 280 * DSP_SOK: Success. 281 * CFG_E_INVALIDPOINTER: pstrZLFileName is invalid. 282 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 283 * CFG_E_RESOURCENOTAVAIL: couldn't find the ZLFileName. 284 * Requires: 285 * CFG initialized. 286 * Ensures: 287 * DSP_SOK: Not more than cBufSize bytes were copied into 288 * pstrZLFileName, and *pstrZLFileName contains ZLFileName 289 * for this devnode. 290 */ 291 extern DSP_STATUS CFG_GetZLFile(IN struct CFG_DEVNODE* hDevNode, 292 IN ULONG cBufSize, 293 OUT PSTR pstrZLFileName); 294 295/* 296 * ======== CFG_Init ======== 297 * Purpose: 298 * Initialize the CFG module's private state. 299 * Parameters: 300 * Returns: 301 * TRUE if initialized; FALSE if error occured. 302 * Requires: 303 * Ensures: 304 * A requirement for each of the other public CFG functions. 305 */ 306 extern bool CFG_Init(); 307 308/* 309 * ======== CFG_SetDevObject ======== 310 * Purpose: 311 * Store the Device Object handle for a given devnode. 312 * Parameters: 313 * hDevNode: Platform's DevNode handle we are storing value with. 314 * dwValue: Arbitrary value to store. 315 * Returns: 316 * DSP_SOK: Success. 317 * CFG_E_INVALIDHDEVNODE: hDevNode is invalid. 318 * DSP_EFAIL: Internal Error. 319 * Requires: 320 * CFG initialized. 321 * Ensures: 322 * DSP_SOK: The Private DWORD was successfully set. 323 */ 324 extern DSP_STATUS CFG_SetDevObject(IN struct CFG_DEVNODE* hDevNode, 325 IN DWORD dwValue); 326 327/* 328 * ======== CFG_SetDrvObject ======== 329 * Purpose: 330 * Store the Driver Object handle. 331 * Parameters: 332 * dwValue: Arbitrary value to store. 333 * dwType Type of Object to Store 334 * Returns: 335 * DSP_SOK: Success. 336 * DSP_EFAIL: Internal Error. 337 * Requires: 338 * CFG initialized. 339 * Ensures: 340 * DSP_SOK: The Private DWORD was successfully set. 341 */ 342 extern DSP_STATUS CFG_SetObject(IN DWORD dwValue, IN DWORD dwType); 343 344 extern DSP_STATUS CFG_GetC55Procs(OUT DWORD * numProcs); 345#ifdef __cplusplus 346} 347#endif 348#endif /* CFG_ */ 349