1 /**************************************************************************** 2 **+-----------------------------------------------------------------------+** 3 **| |** 4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 5 **| All rights reserved. |** 6 **| |** 7 **| Redistribution and use in source and binary forms, with or without |** 8 **| modification, are permitted provided that the following conditions |** 9 **| are met: |** 10 **| |** 11 **| * Redistributions of source code must retain the above copyright |** 12 **| notice, this list of conditions and the following disclaimer. |** 13 **| * Redistributions in binary form must reproduce the above copyright |** 14 **| notice, this list of conditions and the following disclaimer in |** 15 **| the documentation and/or other materials provided with the |** 16 **| distribution. |** 17 **| * Neither the name Texas Instruments nor the names of its |** 18 **| contributors may be used to endorse or promote products derived |** 19 **| from this software without specific prior written permission. |** 20 **| |** 21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 32 **| |** 33 **+-----------------------------------------------------------------------+** 34 ****************************************************************************/ 35 36 /*--------------------------------------------------------------------------*/ 37 /* Module: OSAPI.H*/ 38 /**/ 39 /* Purpose: This module defines unified interface to the OS specific*/ 40 /* sources and services.*/ 41 /**/ 42 /*--------------------------------------------------------------------------*/ 43 44 #ifndef __OS_API_H__ 45 #define __OS_API_H__ 46 47 48 #include "osTIType.h" 49 #include "TI_IPC_Api.h" 50 //TRS:MEB 51 #ifdef _WINDOWS 52 #endif 53 54 //TRS end 55 56 57 /**************************************************************************************** 58 START OF OS API (Common to all GWSI LIB, Driver and TI Driver) 59 *****************************************************************************************/ 60 61 62 #define OS_API_MEM_ADRR 0x0000000 63 #define OS_API_REG_ADRR 0x300000 64 65 66 /**************************************************************************************** 67 OS HW API NEEDED BY DRIVER 68 *****************************************************************************************/ 69 70 71 #define OS_PAGE_SIZE 4096 72 73 /* 74 Clear the WLAN Ready Interrupt Line stored in the PIC Controller 75 */ 76 VOID os_clearWlanReady(void); 77 78 /* 79 Read the WLAN_IRQ line 80 */ 81 UINT32 os_senseIrqLine( TI_HANDLE OsContext ); 82 83 /* TRS: CDB Needed for osApi.C */ 84 #ifdef BSP_H5 85 #define WLAN_GPIO_INTERRUPT_LINE 9 86 #define WLAN_GPIO_POWER_ENABLET_LINE 10 87 #else 88 #define WLAN_GPIO_INTERRUPT_LINE 134 89 #define WLAN_GPIO_POWER_ENABLET_LINE 71 90 #endif 91 92 93 VOID 94 os_disableIrq( 95 TI_HANDLE OsContext 96 ); 97 98 VOID 99 os_enableIrq( 100 TI_HANDLE OsContext 101 ); 102 103 /**************************************************************************************** 104 * * 105 * OS Report API * 106 * * 107 ****************************************************************************************/ 108 109 VOID 110 os_setDebugMode( 111 BOOL enable 112 ); 113 114 VOID 115 os_printf( 116 const char *format ,...); 117 118 VOID os_setDebugOutputToTicon(BOOL value); 119 120 #define os_report os_printf 121 #define osPrintf os_printf //TRS::CDB 122 123 /**************************************************************************************** 124 * * 125 * OS DMA CALLBACK API * 126 **************************************************************************************** 127 * Callback directly called at an IRQ context from the SPI modue * 128 * This should triger a tasklet_schedule so that the End of DMA will be handled * 129 * in a tasklet context and then be directed to the TNETWIF to call the Client * 130 * * 131 * * 132 ****************************************************************************************/ 133 134 VOID 135 os_TNETWIF_BusTxn_Complete( 136 TI_HANDLE OsContext, 137 int status 138 ); 139 140 141 /**************************************************************************************** 142 * * 143 * OS Memory API * 144 * * 145 ****************************************************************************************/ 146 147 PVOID 148 os_memoryAlloc( 149 TI_HANDLE OsContext, 150 UINT32 Size 151 ); 152 153 PVOID 154 os_memoryPreAlloc( 155 TI_HANDLE OsContext, 156 int section, 157 UINT32 Size 158 ); 159 160 PVOID 161 os_memoryCAlloc( 162 TI_HANDLE OsContext, 163 UINT32 Number, 164 UINT32 Size 165 ); 166 167 VOID 168 os_memorySet( 169 TI_HANDLE OsContext, 170 PVOID pMemPtr, 171 INT32 Value, 172 UINT32 Length 173 ); 174 175 VOID 176 os_memoryZero( 177 TI_HANDLE OsContext, 178 PVOID pMemPtr, 179 UINT32 Length 180 ); 181 182 VOID 183 os_memoryCopy( 184 TI_HANDLE pOsContext, 185 PVOID pDestination, 186 PVOID pSource, 187 UINT32 Size 188 ); 189 190 VOID 191 os_memoryMove( 192 TI_HANDLE pOsContext, 193 PVOID pDestination, 194 PVOID pSource, 195 UINT32 Size 196 ); 197 198 VOID 199 os_memoryFree( 200 TI_HANDLE pOsContext, 201 PVOID pMemPtr, 202 UINT32 Size 203 ); 204 205 INT32 206 os_memoryCompare( 207 TI_HANDLE OsContext, 208 PUINT8 Buf1, 209 PUINT8 Buf2, 210 INT32 Count 211 ); 212 213 PVOID 214 os_memoryAlloc4HwDma( 215 TI_HANDLE pOsContext, 216 UINT32 Size 217 ); 218 219 VOID 220 os_memory4HwDmaFree( 221 TI_HANDLE pOsContext, 222 PVOID pPMem_ptr, 223 UINT32 Size 224 ); 225 226 227 /**************************************************************************************** 228 * * 229 * OS TIMER API * 230 * * 231 ****************************************************************************************/ 232 typedef void (*PTIMER_FUNCTION)(TI_HANDLE Context); 233 234 TI_HANDLE 235 os_timerCreate( 236 TI_HANDLE OsContext, 237 PTIMER_FUNCTION pRoutine, 238 TI_HANDLE Context 239 ); 240 241 VOID 242 os_timerDestroy( 243 TI_HANDLE OsContext, 244 TI_HANDLE TimerHandle 245 ); 246 247 VOID 248 os_timerStart( 249 TI_HANDLE OsContext, 250 TI_HANDLE TimerHandle, 251 UINT32 DelayMs, 252 BOOL bPeriodic 253 ); 254 255 VOID 256 os_timerStop( 257 TI_HANDLE OsContext, 258 TI_HANDLE TimerHandle 259 ); 260 261 VOID 262 os_periodicIntrTimerStart( 263 TI_HANDLE OsContext 264 ); 265 266 UINT32 267 os_timeStampMs( 268 TI_HANDLE OsContext 269 ); 270 271 UINT32 272 os_timeStampUs( 273 TI_HANDLE OsContext 274 ); 275 276 VOID 277 os_StalluSec( 278 TI_HANDLE OsContext, 279 UINT32 uSec 280 ); 281 282 void os_ToggleDebugGPIO(int count); 283 284 285 /**************************************************************************************** 286 * * 287 * Hardware access functions API * 288 * * 289 ****************************************************************************************/ 290 PVOID 291 os_hwGetRegistersAddr( 292 TI_HANDLE OsContext 293 ); 294 295 296 PVOID 297 os_hwGetMemoryAddr( 298 TI_HANDLE OsContext 299 ); 300 301 302 /**************************************************************************************** 303 * * 304 * Protection services API * 305 * * 306 **************************************************************************************** 307 * OS protection is implemented as dummy functions because * 308 * all driver code is executed in context of a single tasklet, * 309 * except IOCTL handlers and xmition. * 310 * Protection in IOCTL handlers and hard_start_xmit is done by different * 311 * means. * 312 ****************************************************************************************/ 313 TI_HANDLE 314 os_protectCreate( 315 TI_HANDLE OsContext 316 ); 317 318 VOID 319 os_protectDestroy( 320 TI_HANDLE OsContext, 321 TI_HANDLE ProtectContext 322 ); 323 324 VOID 325 os_protectLock( 326 TI_HANDLE OsContext, 327 TI_HANDLE ProtectContext 328 ); 329 330 VOID 331 os_protectUnlock( 332 TI_HANDLE OsContext, 333 TI_HANDLE ProtectContext 334 ); 335 336 337 338 #ifdef DRIVER_PROFILING 339 void _os_profile (TI_HANDLE OsContext, UINT32 fn, UINT32 par); 340 #define os_profile(hos,fn,par) _os_profile (hos, fn, par) 341 #else 342 #define os_profile(hos,fn,par) 343 #endif 344 345 346 /**************************************************************************************** 347 START OF GWSI DRIVER API 348 *****************************************************************************************/ 349 VOID 350 os_Complete( 351 TI_HANDLE OsContext 352 ); 353 354 #ifndef GWSI_LIB 355 356 VOID 357 os_WaitComplete( 358 TI_HANDLE OsContext 359 ); 360 361 UINT32 362 os_memoryGetPhysicalLow (OS_PHYSICAL_ADDRESS pAddr); 363 UINT32 364 os_memoryGetPhysicalHigh (OS_PHYSICAL_ADDRESS pAddr); 365 366 /* MEB use native NDIS functions */ 367 #ifdef _WINDOWS 368 #else 369 370 UINT32 os_memoryGetPhysicalLow(OS_PHYSICAL_ADDRESS pAddr); 371 UINT32 os_memoryGetPhysicalHigh(OS_PHYSICAL_ADDRESS pAddr); 372 373 #endif 374 375 VOID os_hardResetTnetw(void); 376 377 #endif 378 379 380 /**************************************************************************************** 381 START OF TI DRIVER API 382 *****************************************************************************************/ 383 #if !defined(GWSI_DRIVER) && !defined(GWSI_LIB) 384 385 typedef struct { 386 UINT32 Event; 387 UINT8* Data; 388 } TI_CONNECTION_STATUS, *PTI_CONNECTION_STATUS; 389 390 391 392 PVOID 393 os_memoryAlloc4HwCopy( 394 TI_HANDLE pOsContext, 395 UINT32 Size 396 ); 397 398 VOID 399 os_memorySharedFree( 400 TI_HANDLE OsContext, 401 PVOID pVirtual, 402 UINT32 Size, 403 OS_PHYSICAL_ADDRESS pPhysical 404 ); 405 406 PVOID 407 os_memorySharedAlloc( 408 TI_HANDLE OsContext, 409 UINT32 Size, 410 OS_PHYSICAL_ADDRESS *pPhysical 411 ); 412 413 VOID 414 os_memoryMoveToHw( 415 TI_HANDLE OsContext, 416 PVOID pTarget, 417 PVOID pSource, 418 UINT32 Size 419 ); 420 421 VOID 422 os_memoryMoveFromHw( 423 TI_HANDLE OsContext, 424 PVOID pTarget, 425 PVOID pSource, 426 UINT32 Size 427 ); 428 429 430 /**/ 431 /* Register access functions*/ 432 /**/ 433 VOID 434 os_hwReadMemRegisterUINT32( 435 TI_HANDLE OsContext, 436 PUINT32 Register, 437 PUINT32 Data 438 ); 439 440 VOID 441 os_hwWriteMemRegisterUINT32( 442 TI_HANDLE OsContext, 443 PUINT32 Register, 444 UINT32 Data 445 ); 446 447 VOID 448 os_hwReadMemRegisterUINT16( 449 TI_HANDLE OsContext, 450 PUINT16 Register, 451 PUINT16 Data 452 ); 453 454 VOID 455 os_hwWriteMemRegisterUINT16( 456 TI_HANDLE OsContext, 457 PUINT16 Register, 458 UINT16 Data 459 ); 460 461 VOID 462 os_hwReadMemRegisterUINT8( 463 TI_HANDLE OsContext, 464 PUINT8 Register, 465 PUINT8 Data 466 ); 467 468 VOID 469 os_hwWriteMemRegisterUINT8( 470 TI_HANDLE OsContext, 471 PUINT8 Register, 472 UINT8 Data 473 ); 474 475 int 476 os_getFirmwareImage( 477 TI_HANDLE OsContext, 478 PUINT8 *pBuffer, 479 PUINT32 Length, 480 UINT8 RadioType 481 ); 482 483 int 484 os_getRadioImage( 485 TI_HANDLE OsContext, 486 PUINT8 *pBuffer, 487 PUINT32 Length, 488 UINT8 RadioType 489 ); 490 491 VOID 492 os_closeFirmwareImage( TI_HANDLE OsContext ); 493 494 VOID 495 os_closeRadioImage( TI_HANDLE OsContext ); 496 497 BOOL 498 os_receivePacket( 499 TI_HANDLE OsContext, 500 PVOID pPacket, 501 UINT16 Length 502 ); 503 504 INT32 505 os_sendPacket( 506 TI_HANDLE OsContext, 507 PVOID pPacket, 508 UINT16 Length 509 ); 510 511 tiINT32 512 os_IndicateEvent( 513 IPC_EV_DATA* pData 514 ); 515 516 VOID 517 os_powerStateBusy( 518 TI_HANDLE OsContext 519 ); 520 521 VOID 522 os_powerStateIdle( 523 TI_HANDLE OsContext 524 ); 525 526 VOID 527 os_setWakeOnGpio( 528 TI_HANDLE OsContext 529 ); 530 531 VOID 532 os_resetWakeOnGpio( 533 TI_HANDLE OsContext 534 ); 535 536 BOOL 537 os_getEeepromImage( 538 TI_HANDLE OsContext, 539 PUINT8* pBuffer, 540 PUINT32 length 541 ); 542 543 // TRS:JCG missing in 4.03 544 VOID 545 os_setPowerOfTnetw( 546 BOOL bPowerOn 547 ); 548 549 #endif 550 551 #endif 552