| /* |
| * Copyright (c) 2012-2015,2018 The Linux Foundation. All rights reserved. |
| * |
| * Previously licensed under the ISC license by Qualcomm Atheros, Inc. |
| * |
| * |
| * Permission to use, copy, modify, and/or distribute this software for |
| * any purpose with or without fee is hereby granted, provided that the |
| * above copyright notice and this permission notice appear in all |
| * copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| * PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| /* |
| * This file was originally distributed by Qualcomm Atheros, Inc. |
| * under proprietary terms before Copyright ownership was assigned |
| * to the Linux Foundation. |
| */ |
| |
| #if !defined( __WLAN_QCT_PAL_API_H ) |
| #define __WLAN_QCT_PAL_API_H |
| |
| /**========================================================================= |
| |
| \file wlan_qct_pal_api.h |
| |
| \brief define general APIs PAL exports. wpt = (Wlan Pal Type) wpal = (Wlan PAL) |
| |
| Definitions for platform independent |
| |
| |
| ========================================================================*/ |
| |
| #include "wlan_qct_pal_type.h" |
| #include "wlan_qct_pal_status.h" |
| |
| #ifdef MEMORY_DEBUG |
| #include "vos_memory.h" |
| #endif /* MEMORY_DEBUG */ |
| |
| typedef struct sPalStruct |
| { |
| /*?must check the data type*/ |
| void* devHandle; |
| } tPalContext; |
| |
| extern tPalContext gContext; |
| |
| /*********************************MACRO**********************/ |
| |
| // macro to get maximum of two values. |
| #define WPAL_MAX( _x, _y ) ( ( (_x) > (_y) ) ? (_x) : (_y) ) |
| |
| // macro to get minimum of two values |
| #define WPAL_MIN( _x, _y ) ( ( (_x) < (_y) ) ? (_x) : (_y) ) |
| |
| // macro to get the ceiling of an integer division operation... |
| #define WPAL_CEIL_DIV( _a, _b ) (( 0 != (_a) % (_b) ) ? ( (_a) / (_b) + 1 ) : ( (_a) / (_b) )) |
| |
| // macro to return the floor of an integer division operation |
| #define WPAL_FLOOR_DIV( _a, _b ) ( ( (_a) - ( (_a) % (_b) ) ) / (_b) ) |
| |
| #define WPAL_SWAP_U16(_x) \ |
| ( ( ( (_x) << 8 ) & 0xFF00 ) | ( ( (_x) >> 8 ) & 0x00FF ) ) |
| |
| #define WPAL_SWAP_U32(_x) \ |
| (( ( ( (_x) << 24 ) & 0xFF000000 ) | ( ( (_x) >> 24 ) & 0x000000FF ) ) | \ |
| ( ( ( (_x) << 8 ) & 0x00FF0000 ) | ( ( (_x) >> 8 ) & 0x0000FF00 ) )) |
| |
| // Endian operations for Big Endian and Small Endian modes |
| #ifndef ANI_BIG_BYTE_ENDIAN |
| |
| //This portion is for little-endian cpu |
| #define WPAL_CPU_TO_BE32(_x) WPAL_SWAP_U32(_x) |
| #define WPAL_BE32_TO_CPU(_x) WPAL_SWAP_U32(_x) |
| #define WPAL_CPU_TO_BE16(_x) WPAL_SWAP_U16(_x) |
| #define WPAL_BE16_TO_CPU(_x) WPAL_SWAP_U16(_x) |
| #define WPAL_CPU_TO_LE32(_x) (_x) |
| #define WPAL_LE32_TO_CPU(_x) (_x) |
| #define WPAL_CPU_TO_LE16(_x) (_x) |
| #define WPAL_LE16_TO_CPU(_x) (_x) |
| |
| #else //#ifndef ANI_BIG_BYTE_ENDIAN |
| |
| //This portion is for big-endian cpu |
| #define WPAL_CPU_TO_BE32(_x) (_x) |
| #define WPAL_BE32_TO_CPU(_x) (_x) |
| #define WPAL_CPU_TO_BE16(_x) (_x) |
| #define WPAL_BE16_TO_CPU(_x) (_x) |
| #define WPAL_CPU_TO_LE32(_x) WPAL_SWAP_U32(_x) |
| #define WPAL_LE32_TO_CPU(_x) WPAL_SWAP_U32(_x) |
| #define WPAL_CPU_TO_LE16(_x) WPAL_SWAP_U16(_x) |
| #define WPAL_LE16_TO_CPU(_x) WPAL_SWAP_U16(_x) |
| |
| #endif //#ifndef ANI_BIG_BYTE_ENDIAN |
| |
| |
| /*********************************Generic API*******************************/ |
| /*--------------------------------------------------------------------------- |
| wpalOpen - Initialize PAL |
| Param: |
| ppPalContext pointer to a caller allocated pointer. It is opaque to caller. |
| Caller save the returned pointer for future use when calling |
| PAL APIs. If this is NULL, it means that PAL doesn't need it. |
| devHandle - pointer to the OS specific device handle |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - success. Otherwise fail. |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalOpen(void **ppPalContext, void *devHandle); |
| |
| /*--------------------------------------------------------------------------- |
| wpalClose - Release PAL |
| Param: |
| pPalContext pointer returned from wpalOpen. |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - success. Otherwise fail. |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalClose(void *pPalContext); |
| |
| |
| /*********************************Memory API********************************/ |
| #ifdef MEMORY_DEBUG |
| /* For Memory Debugging, Hook up PAL memory API to VOS memory API */ |
| #define wpalMemoryAllocate vos_mem_malloc |
| #define wpalMemoryFree vos_mem_free |
| #else |
| |
| /*--------------------------------------------------------------------------- |
| wpalMemoryAllocate - Allocate memory |
| Param: |
| size number of bytes to allocate |
| Return: |
| A pointer to the allocated memory. |
| NULL fail to allocate memory |
| ---------------------------------------------------------------------------*/ |
| void *wpalMemoryAllocate(wpt_uint32 size); |
| |
| /*--------------------------------------------------------------------------- |
| wpalMemoryFree - Free allocated memory |
| Param: |
| pv pointer to buffer to be freed |
| Return: |
| None |
| ---------------------------------------------------------------------------*/ |
| void wpalMemoryFree(void *pv); |
| #endif /* MEMORY_DEBUG */ |
| |
| /*--------------------------------------------------------------------------- |
| wpalMemoryCopy - copy memory |
| Param: |
| dest address which data is copied to |
| src address which data is copied from |
| size number of bytes to copy |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS |
| eWLAN_PAL_STATUS_INVALID_PARAM |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalMemoryCopy(void * dest, void * src, wpt_uint32 size); |
| |
| |
| /*--------------------------------------------------------------------------- |
| wpalMemoryCompare - compare memory |
| Param: |
| buf1 address of buffer1 |
| buf2 address of buffer2 |
| size number of bytes to compare |
| Return: |
| eWLAN_PAL_TRUE if two buffers have same content |
| eWLAN_PAL_FALSE not match |
| ---------------------------------------------------------------------------*/ |
| wpt_boolean wpalMemoryCompare(void * buf1, void * buf2, wpt_uint32 size); |
| |
| /*--------------------------------------------------------------------------- |
| wpalMemoryZero - Zero memory |
| Param: |
| buf address of buffer to be zero |
| size number of bytes to zero |
| Return: |
| None |
| ---------------------------------------------------------------------------*/ |
| void wpalMemoryZero(void *buf, wpt_uint32 size); |
| |
| |
| /*--------------------------------------------------------------------------- |
| wpalMemoryFill - Fill memory with one pattern |
| Param: |
| buf address of buffer to be zero |
| size number of bytes to zero |
| bFill - one byte of data to fill in (size) bytes from the start of the buffer |
| Return: |
| None |
| ---------------------------------------------------------------------------*/ |
| void wpalMemoryFill(void *buf, wpt_uint32 size, wpt_byte bFill); |
| |
| |
| /*--------------------------------------------------------------------------- |
| wpalDmaMemoryAllocate - Allocate memory ready for DMA. Aligned at 4-byte |
| Param: |
| pPalContext - PAL context pointer |
| size number of bytes to allocate |
| ppPhysicalAddr Physical address of the buffer if allocation succeeds |
| Return: |
| A pointer to the allocated memory (virtual address). |
| NULL fail to allocate memory |
| -----------------------------------------------------------------------------*/ |
| void *wpalDmaMemoryAllocate(wpt_uint32 size, void **ppPhysicalAddr); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDmaMemoryFree - Free memory ready for DMA |
| Param: |
| pPalContext - PAL context pointer |
| pv address for the buffer to be freed |
| Return: |
| None |
| ---------------------------------------------------------------------------*/ |
| void wpalDmaMemoryFree(void *pv); |
| |
| |
| |
| /*--------------------------------------------------------------------------- |
| wpalDbgReadRegister - Read register from the WiFi BB chip |
| Param: |
| regAddr - register address |
| pregValue - return value from register if success |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalDbgReadRegister(wpt_uint32 regAddr, wpt_uint32 *pregValue); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDbgWriteRegister - Write a value to the register in the WiFi BB chip |
| Param: |
| regAddr - register address |
| regValue - value to be written |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalDbgWriteRegister(wpt_uint32 regAddr, wpt_uint32 regValue); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDbgReadMemory - Read memory from WiFi BB chip space |
| Param: |
| memAddr - address of memory |
| buf - output |
| len - length to be read |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalDbgReadMemory(wpt_uint32 memAddr, wpt_uint8 *buf, wpt_uint32 len); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDbgWriteMemory - Write a value to the memory in the WiFi BB chip space |
| Param: |
| memAddr - memory address |
| buf - vlaue to be written |
| len - length of buf |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalDbgWriteMemory(wpt_uint32 memAddr, wpt_uint8 *buf, wpt_uint32 len); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDriverShutdown - Shutdown WLAN driver |
| |
| This API is requied by SSR, call in to 'VOS shutdown' to shutdown WLAN |
| driver when Riva crashes. |
| |
| Param: |
| None |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalDriverShutdown(void); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDriverShutdown - Re-init WLAN driver |
| |
| This API is requied by SSR, call in to 'VOS re-init' to re-init WLAN |
| driver. |
| |
| Param: |
| None |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalDriverReInit(void); |
| |
| /*--------------------------------------------------------------------------- |
| wpalRivaSubystemRestart - Initiate Riva SSR |
| |
| This API is called by WLAN driver to initiate Riva SSR |
| |
| Param: |
| None |
| Return: |
| eWLAN_PAL_STATUS_SUCCESS - when everything is OK |
| ---------------------------------------------------------------------------*/ |
| wpt_status wpalRivaSubystemRestart(void); |
| |
| /*--------------------------------------------------------------------------- |
| wpalWlanReload - Initiate WLAN Driver reload |
| |
| Param: |
| reason: hang reason |
| Return: |
| NONE |
| ---------------------------------------------------------------------------*/ |
| void wpalWlanReload(wpt_uint32 reason); |
| |
| /*--------------------------------------------------------------------------- |
| wpalWcnssResetIntr - Trigger the reset FIQ to Riva |
| |
| Param: |
| None |
| Return: |
| NONE |
| ---------------------------------------------------------------------------*/ |
| void wpalWcnssResetIntr(void); |
| |
| /*--------------------------------------------------------------------------- |
| wpalWcnssIsProntoHwVer3 - Check for Pronto ver3 HW |
| |
| Param: |
| None |
| Return: |
| TRUE if Ponto Hw Ver 3 |
| Therefore use WQ6 instead of WQ23 for TX Low/High Priority Channel |
| ---------------------------------------------------------------------------*/ |
| int wpalWcnssIsProntoHwVer3(void); |
| /*--------------------------------------------------------------------------- |
| wpalFwDumpReq - Trigger the dump commands to Firmware |
| |
| Param: |
| cmd - Command No. to execute |
| arg1 - argument 1 to cmd |
| arg2 - argument 2 to cmd |
| arg3 - argument 3 to cmd |
| arg4 - argument 4 to cmd |
| async -asynchronous event. Don't wait for completion. |
| Return: |
| NONE |
| ---------------------------------------------------------------------------*/ |
| void wpalFwDumpReq(wpt_uint32 cmd, wpt_uint32 arg1, wpt_uint32 arg2, |
| wpt_uint32 arg3, wpt_uint32 arg4, wpt_boolean async); |
| |
| /*--------------------------------------------------------------------------- |
| wpalDevicePanic - Trigger Device Panic |
| Trigger device panic to help debug |
| |
| Param: |
| NONE |
| |
| Return: |
| NONE |
| ---------------------------------------------------------------------------*/ |
| void wpalDevicePanic(void); |
| |
| /*--------------------------------------------------------------------------- |
| wpalIslogPInProgress - calls vos API vos_is_logp_in_progress() |
| |
| Param: |
| NONE |
| Return: |
| STATUS |
| --------------------------------------------------------------------------*/ |
| int wpalIslogPInProgress(void); |
| |
| /*--------------------------------------------------------------------------- |
| wpalIsSsrPanicOnFailure - calls vos API isSsrPanicOnFailure() |
| |
| Param: |
| NONE |
| Return: |
| STATUS |
| --------------------------------------------------------------------------*/ |
| int wpalIsSsrPanicOnFailure(void); |
| |
| int wpalGetDxeReplenishRXTimerVal(void); |
| int wpalIsDxeSSREnable(void); |
| |
| wpt_uint8 wpalIsFwLoggingEnabled(void); |
| wpt_uint8 wpalIsFwLoggingSupported(void); |
| wpt_uint8 wpalIsFwEvLoggingEnabled(void); |
| bool wpalIsArpPkt(void *pPacket); |
| void wpalUpdateTXArpFWdeliveredStats(void); |
| #endif // __WLAN_QCT_PAL_API_H |