blob: 7904fd47af9e669fd8374c2122df50664f97be4b [file] [log] [blame]
/*
* Copyright (c) 2013-2015 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.
*/
#ifndef _ADF_CMN_OS_TYPES_PVT_H
#define _ADF_CMN_OS_TYPES_PVT_H
#ifndef __KERNEL__
#define __iomem
#else
#include <linux/types.h>
#endif
#include <asm/types.h>
#include <asm/byteorder.h>
#include <linux/version.h>
#ifdef __KERNEL__
#include <generated/autoconf.h>
#include <linux/compiler.h>
#include <linux/dma-mapping.h>
#include <linux/wireless.h>
#include <linux/if.h>
#else
/*
* Provide dummy defs for kernel data types, functions, and enums
* used in this header file.
*/
/*
* Hack - coexist with prior defs of dma_addr_t.
* Eventually all other defs of dma_addr_t should be removed.
* At that point, the "already_defined" wrapper can be removed.
*/
#ifndef __dma_addr_t_already_defined__
#define __dma_addr_t_already_defined__
typedef unsigned long dma_addr_t;
#endif
#define uint64_t u_int64_t
#define uint32_t u_int32_t
#define uint16_t u_int16_t
#define uint8_t u_int8_t
#define SIOCGIWAP 0
#define IWEVCUSTOM 0
#define IWEVREGISTERED 0
#define IWEVEXPIRED 0
#define SIOCGIWSCAN 0
#define DMA_TO_DEVICE 0
#define DMA_FROM_DEVICE 0
#define __iomem
#endif /* __KERNEL__ */
/**
* max sg that we support
*/
#define __ADF_OS_MAX_SCATTER 1
#define __ADF_OS_NAME_SIZE IFNAMSIZ
#if defined(__LITTLE_ENDIAN_BITFIELD)
#define ADF_LITTLE_ENDIAN_MACHINE
#elif defined (__BIG_ENDIAN_BITFIELD)
#define ADF_BIG_ENDIAN_MACHINE
#else
#error "Please fix <asm/byteorder.h>"
#endif
#define __adf_os_packed __attribute__ ((packed))
#define __adf_os_ull(_num) _num ## ULL
typedef struct completion __adf_os_comp_t;
struct __adf_net_drv;
typedef int (*__adf_os_intr)(void *);
/**
* Private definitions of general data types
*/
typedef dma_addr_t __adf_os_dma_addr_t;
typedef size_t __adf_os_dma_size_t;
typedef dma_addr_t __adf_os_dma_context_t;
#define adf_os_dma_mem_context(context) dma_addr_t context
#define adf_os_get_dma_mem_context(var, field) ((adf_os_dma_context_t)(var->field))
typedef enum __adf_os_cache_sync{
__ADF_SYNC_PREREAD,
__ADF_SYNC_PREWRITE,
__ADF_SYNC_POSTREAD,
__ADF_SYNC_POSTWRITE
}__adf_os_cache_sync_t;
typedef struct __adf_os_resource{
unsigned long paddr;
void __iomem * vaddr;
unsigned long len;
}__adf_os_resource_t;
/**
* generic data types
*/
struct __adf_device {
void *drv;
void *drv_hdl;
char *drv_name;
int irq;
struct device *dev;
__adf_os_resource_t res;
__adf_os_intr func;/*Interrupt handler*/
#ifdef QCA_ARP_SPOOFING_WAR
void *filter_cb;
#endif
};
typedef struct __adf_device *__adf_os_device_t;
typedef size_t __adf_os_size_t;
typedef off_t __adf_os_off_t;
typedef uint8_t __iomem * __adf_os_iomem_t;
typedef struct __adf_os_segment{
dma_addr_t daddr;
uint32_t len;
}__adf_os_segment_t;
struct __adf_os_dma_map{
uint32_t mapped;
uint32_t nsegs;
uint32_t coherent;
__adf_os_segment_t seg[__ADF_OS_MAX_SCATTER];
};
typedef struct __adf_os_dma_map *__adf_os_dma_map_t;
typedef uint32_t ath_dma_addr_t;
typedef uint8_t __a_uint8_t;
typedef int8_t __a_int8_t;
typedef uint16_t __a_uint16_t;
typedef int16_t __a_int16_t;
typedef uint32_t __a_uint32_t;
typedef int32_t __a_int32_t;
typedef uint64_t __a_uint64_t;
typedef int64_t __a_int64_t;
enum __adf_net_wireless_evcode{
__ADF_IEEE80211_ASSOC = SIOCGIWAP,
__ADF_IEEE80211_REASSOC =IWEVCUSTOM,
__ADF_IEEE80211_DISASSOC = SIOCGIWAP,
__ADF_IEEE80211_JOIN = IWEVREGISTERED,
__ADF_IEEE80211_LEAVE = IWEVEXPIRED,
__ADF_IEEE80211_SCAN = SIOCGIWSCAN,
__ADF_IEEE80211_REPLAY = IWEVCUSTOM,
__ADF_IEEE80211_MICHAEL = IWEVCUSTOM,
__ADF_IEEE80211_REJOIN = IWEVCUSTOM,
__ADF_CUSTOM_PUSH_BUTTON = IWEVCUSTOM,
};
#define __adf_os_print printk
#define __adf_os_vprint vprintk
#define __adf_os_snprint snprintf
#define __adf_os_vsnprint vsnprintf
#define __ADF_OS_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL
#define __ADF_OS_DMA_TO_DEVICE DMA_TO_DEVICE
#define __ADF_OS_DMA_FROM_DEVICE DMA_FROM_DEVICE
#define __adf_os_inline inline
#endif /*_ADF_CMN_OS_TYPES_PVT_H*/