blob: ae3edea6d2cbce781eb21bb26161fcd04cef2592 [file] [log] [blame]
/****************************************************************************
**+-----------------------------------------------------------------------+**
**| |**
**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |**
**| All rights reserved. |**
**| |**
**| Redistribution and use in source and binary forms, with or without |**
**| modification, are permitted provided that the following conditions |**
**| are met: |**
**| |**
**| * Redistributions of source code must retain the above copyright |**
**| notice, this list of conditions and the following disclaimer. |**
**| * Redistributions in binary form must reproduce the above copyright |**
**| notice, this list of conditions and the following disclaimer in |**
**| the documentation and/or other materials provided with the |**
**| distribution. |**
**| * Neither the name Texas Instruments nor the names of its |**
**| contributors may be used to endorse or promote products derived |**
**| from this software without specific prior written permission. |**
**| |**
**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |**
**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |**
**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |**
**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |**
**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |**
**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |**
**| |**
**+-----------------------------------------------------------------------+**
****************************************************************************/
/*--------------------------------------------------------------------------*/
/* Module: OSAPI.H*/
/**/
/* Purpose: This module defines unified interface to the OS specific*/
/* sources and services.*/
/**/
/*--------------------------------------------------------------------------*/
#ifndef __OS_API_H__
#define __OS_API_H__
#include "osTIType.h"
#include "TI_IPC_Api.h"
//TRS:MEB
#ifdef _WINDOWS
#endif
//TRS end
/****************************************************************************************
START OF OS API (Common to all GWSI LIB, Driver and TI Driver)
*****************************************************************************************/
#define OS_API_MEM_ADRR 0x0000000
#define OS_API_REG_ADRR 0x300000
/****************************************************************************************
OS HW API NEEDED BY DRIVER
*****************************************************************************************/
#define OS_PAGE_SIZE 4096
/*
Clear the WLAN Ready Interrupt Line stored in the PIC Controller
*/
VOID os_clearWlanReady(void);
/*
Read the WLAN_IRQ line
*/
UINT32 os_senseIrqLine( TI_HANDLE OsContext );
/* TRS: CDB Needed for osApi.C */
#ifdef BSP_H5
#define WLAN_GPIO_INTERRUPT_LINE 9
#define WLAN_GPIO_POWER_ENABLET_LINE 10
#else
#define WLAN_GPIO_INTERRUPT_LINE 134
#define WLAN_GPIO_POWER_ENABLET_LINE 71
#endif
VOID
os_disableIrq(
TI_HANDLE OsContext
);
VOID
os_enableIrq(
TI_HANDLE OsContext
);
/****************************************************************************************
* *
* OS Report API *
* *
****************************************************************************************/
VOID
os_setDebugMode(
BOOL enable
);
VOID
os_printf(
const char *format ,...);
VOID os_setDebugOutputToTicon(BOOL value);
#define os_report os_printf
#define osPrintf os_printf //TRS::CDB
/****************************************************************************************
* *
* OS DMA CALLBACK API *
****************************************************************************************
* Callback directly called at an IRQ context from the SPI modue *
* This should triger a tasklet_schedule so that the End of DMA will be handled *
* in a tasklet context and then be directed to the TNETWIF to call the Client *
* *
* *
****************************************************************************************/
VOID
os_TNETWIF_BusTxn_Complete(
TI_HANDLE OsContext,
int status
);
/****************************************************************************************
* *
* OS Memory API *
* *
****************************************************************************************/
PVOID
os_memoryAlloc(
TI_HANDLE OsContext,
UINT32 Size
);
PVOID
os_memoryPreAlloc(
TI_HANDLE OsContext,
int section,
UINT32 Size
);
PVOID
os_memoryCAlloc(
TI_HANDLE OsContext,
UINT32 Number,
UINT32 Size
);
VOID
os_memorySet(
TI_HANDLE OsContext,
PVOID pMemPtr,
INT32 Value,
UINT32 Length
);
VOID
os_memoryZero(
TI_HANDLE OsContext,
PVOID pMemPtr,
UINT32 Length
);
VOID
os_memoryCopy(
TI_HANDLE pOsContext,
PVOID pDestination,
PVOID pSource,
UINT32 Size
);
VOID
os_memoryMove(
TI_HANDLE pOsContext,
PVOID pDestination,
PVOID pSource,
UINT32 Size
);
VOID
os_memoryFree(
TI_HANDLE pOsContext,
PVOID pMemPtr,
UINT32 Size
);
INT32
os_memoryCompare(
TI_HANDLE OsContext,
PUINT8 Buf1,
PUINT8 Buf2,
INT32 Count
);
PVOID
os_memoryAlloc4HwDma(
TI_HANDLE pOsContext,
UINT32 Size
);
VOID
os_memory4HwDmaFree(
TI_HANDLE pOsContext,
PVOID pPMem_ptr,
UINT32 Size
);
/****************************************************************************************
* *
* OS TIMER API *
* *
****************************************************************************************/
typedef void (*PTIMER_FUNCTION)(TI_HANDLE Context);
TI_HANDLE
os_timerCreate(
TI_HANDLE OsContext,
PTIMER_FUNCTION pRoutine,
TI_HANDLE Context
);
VOID
os_timerDestroy(
TI_HANDLE OsContext,
TI_HANDLE TimerHandle
);
VOID
os_timerStart(
TI_HANDLE OsContext,
TI_HANDLE TimerHandle,
UINT32 DelayMs,
BOOL bPeriodic
);
VOID
os_timerStop(
TI_HANDLE OsContext,
TI_HANDLE TimerHandle
);
VOID
os_periodicIntrTimerStart(
TI_HANDLE OsContext
);
UINT32
os_timeStampMs(
TI_HANDLE OsContext
);
UINT32
os_timeStampUs(
TI_HANDLE OsContext
);
VOID
os_StalluSec(
TI_HANDLE OsContext,
UINT32 uSec
);
void os_ToggleDebugGPIO(int count);
/****************************************************************************************
* *
* Hardware access functions API *
* *
****************************************************************************************/
PVOID
os_hwGetRegistersAddr(
TI_HANDLE OsContext
);
PVOID
os_hwGetMemoryAddr(
TI_HANDLE OsContext
);
/****************************************************************************************
* *
* Protection services API *
* *
****************************************************************************************
* OS protection is implemented as dummy functions because *
* all driver code is executed in context of a single tasklet, *
* except IOCTL handlers and xmition. *
* Protection in IOCTL handlers and hard_start_xmit is done by different *
* means. *
****************************************************************************************/
TI_HANDLE
os_protectCreate(
TI_HANDLE OsContext
);
VOID
os_protectDestroy(
TI_HANDLE OsContext,
TI_HANDLE ProtectContext
);
VOID
os_protectLock(
TI_HANDLE OsContext,
TI_HANDLE ProtectContext
);
VOID
os_protectUnlock(
TI_HANDLE OsContext,
TI_HANDLE ProtectContext
);
#ifdef DRIVER_PROFILING
void _os_profile (TI_HANDLE OsContext, UINT32 fn, UINT32 par);
#define os_profile(hos,fn,par) _os_profile (hos, fn, par)
#else
#define os_profile(hos,fn,par)
#endif
/****************************************************************************************
START OF GWSI DRIVER API
*****************************************************************************************/
VOID
os_Complete(
TI_HANDLE OsContext
);
#ifndef GWSI_LIB
VOID
os_WaitComplete(
TI_HANDLE OsContext
);
UINT32
os_memoryGetPhysicalLow (OS_PHYSICAL_ADDRESS pAddr);
UINT32
os_memoryGetPhysicalHigh (OS_PHYSICAL_ADDRESS pAddr);
/* MEB use native NDIS functions */
#ifdef _WINDOWS
#else
UINT32 os_memoryGetPhysicalLow(OS_PHYSICAL_ADDRESS pAddr);
UINT32 os_memoryGetPhysicalHigh(OS_PHYSICAL_ADDRESS pAddr);
#endif
VOID os_hardResetTnetw(void);
#endif
/****************************************************************************************
START OF TI DRIVER API
*****************************************************************************************/
#if !defined(GWSI_DRIVER) && !defined(GWSI_LIB)
typedef struct {
UINT32 Event;
UINT8* Data;
} TI_CONNECTION_STATUS, *PTI_CONNECTION_STATUS;
PVOID
os_memoryAlloc4HwCopy(
TI_HANDLE pOsContext,
UINT32 Size
);
VOID
os_memorySharedFree(
TI_HANDLE OsContext,
PVOID pVirtual,
UINT32 Size,
OS_PHYSICAL_ADDRESS pPhysical
);
PVOID
os_memorySharedAlloc(
TI_HANDLE OsContext,
UINT32 Size,
OS_PHYSICAL_ADDRESS *pPhysical
);
VOID
os_memoryMoveToHw(
TI_HANDLE OsContext,
PVOID pTarget,
PVOID pSource,
UINT32 Size
);
VOID
os_memoryMoveFromHw(
TI_HANDLE OsContext,
PVOID pTarget,
PVOID pSource,
UINT32 Size
);
/**/
/* Register access functions*/
/**/
VOID
os_hwReadMemRegisterUINT32(
TI_HANDLE OsContext,
PUINT32 Register,
PUINT32 Data
);
VOID
os_hwWriteMemRegisterUINT32(
TI_HANDLE OsContext,
PUINT32 Register,
UINT32 Data
);
VOID
os_hwReadMemRegisterUINT16(
TI_HANDLE OsContext,
PUINT16 Register,
PUINT16 Data
);
VOID
os_hwWriteMemRegisterUINT16(
TI_HANDLE OsContext,
PUINT16 Register,
UINT16 Data
);
VOID
os_hwReadMemRegisterUINT8(
TI_HANDLE OsContext,
PUINT8 Register,
PUINT8 Data
);
VOID
os_hwWriteMemRegisterUINT8(
TI_HANDLE OsContext,
PUINT8 Register,
UINT8 Data
);
int
os_getFirmwareImage(
TI_HANDLE OsContext,
PUINT8 *pBuffer,
PUINT32 Length,
UINT8 RadioType
);
int
os_getRadioImage(
TI_HANDLE OsContext,
PUINT8 *pBuffer,
PUINT32 Length,
UINT8 RadioType
);
VOID
os_closeFirmwareImage( TI_HANDLE OsContext );
VOID
os_closeRadioImage( TI_HANDLE OsContext );
BOOL
os_receivePacket(
TI_HANDLE OsContext,
PVOID pPacket,
UINT16 Length
);
INT32
os_sendPacket(
TI_HANDLE OsContext,
PVOID pPacket,
UINT16 Length
);
tiINT32
os_IndicateEvent(
IPC_EV_DATA* pData
);
VOID
os_powerStateBusy(
TI_HANDLE OsContext
);
VOID
os_powerStateIdle(
TI_HANDLE OsContext
);
VOID
os_setWakeOnGpio(
TI_HANDLE OsContext
);
VOID
os_resetWakeOnGpio(
TI_HANDLE OsContext
);
BOOL
os_getEeepromImage(
TI_HANDLE OsContext,
PUINT8* pBuffer,
PUINT32 length
);
// TRS:JCG missing in 4.03
VOID
os_setPowerOfTnetw(
BOOL bPowerOn
);
#endif
#endif