staging: r8188eu: Add files for new driver - part 21
authorLarry Finger <Larry.Finger@lwfinger.net>
Thu, 22 Aug 2013 03:34:03 +0000 (22:34 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Aug 2013 17:20:11 +0000 (10:20 -0700)
This commit adds files include/autoconf.h, include/basic_types.h,
include/cmd_osdep.h, include/drv_types.h, include/drv_types_linux.h,
include/ethernet.h. include/h2clbk.h, include/hal_com.h, and include/hal_intf.h.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/include/autoconf.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/basic_types.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/cmd_osdep.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/drv_types.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/drv_types_linux.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/ethernet.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/h2clbk.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/hal_com.h [new file with mode: 0644]
drivers/staging/rtl8188eu/include/hal_intf.h [new file with mode: 0644]

diff --git a/drivers/staging/rtl8188eu/include/autoconf.h b/drivers/staging/rtl8188eu/include/autoconf.h
new file mode 100644 (file)
index 0000000..8c81eef
--- /dev/null
@@ -0,0 +1,43 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+
+/*  temporarily flag ******* */
+/*
+ * Public  General Config
+ */
+#define RTL871X_MODULE_NAME "88EU"
+#define DRV_NAME "rtl8188eu"
+
+/*
+ * Internal  General Config
+ */
+
+#define CONFIG_88EU_AP_MODE
+
+#define CONFIG_88EU_P2P
+
+#define RTW_NOTCH_FILTER 0 /* 0:Disable, 1:Enable, */
+
+#define CONFIG_BR_EXT_BRNAME   "br0"
+
+/*
+ * Debug Related Config
+ */
+#define DBG    1
diff --git a/drivers/staging/rtl8188eu/include/basic_types.h b/drivers/staging/rtl8188eu/include/basic_types.h
new file mode 100644 (file)
index 0000000..8a7ca99
--- /dev/null
@@ -0,0 +1,184 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __BASIC_TYPES_H__
+#define __BASIC_TYPES_H__
+
+#define SUCCESS        0
+#define FAIL   (-1)
+
+#include <linux/types.h>
+#define NDIS_OID uint
+
+typedef void (*proc_t)(void *);
+
+#define FIELD_OFFSET(s, field) ((ssize_t)&((s *)(0))->field)
+
+#define MEM_ALIGNMENT_OFFSET   (sizeof(size_t))
+#define MEM_ALIGNMENT_PADDING  (sizeof(size_t) - 1)
+
+/* port from fw */
+/*  TODO: Macros Below are Sync from SD7-Driver. It is necessary
+ * to check correctness */
+
+/*
+ *     Call endian free function when
+ *             1. Read/write packet content.
+ *             2. Before write integer to IO.
+ *             3. After read integer from IO.
+*/
+
+/* Convert little data endian to host ordering */
+#define EF1BYTE(_val)          \
+       ((u8)(_val))
+#define EF2BYTE(_val)          \
+       (le16_to_cpu(_val))
+#define EF4BYTE(_val)          \
+       (le32_to_cpu(_val))
+
+/* Read data from memory */
+#define READEF1BYTE(_ptr)      \
+       EF1BYTE(*((u8 *)(_ptr)))
+/* Read le16 data from memory and convert to host ordering */
+#define READEF2BYTE(_ptr)      \
+       EF2BYTE(*(_ptr))
+#define READEF4BYTE(_ptr)      \
+       EF4BYTE(*(_ptr))
+
+/* Write data to memory */
+#define WRITEEF1BYTE(_ptr, _val)                       \
+       do {                                            \
+               (*((u8 *)(_ptr))) = EF1BYTE(_val)       \
+       } while (0)
+/* Write le data to memory in host ordering */
+#define WRITEEF2BYTE(_ptr, _val)                       \
+       do {                                            \
+               (*((u16 *)(_ptr))) = EF2BYTE(_val)      \
+       } while (0)
+
+#define WRITEEF4BYTE(_ptr, _val)                       \
+       do {                                            \
+               (*((u32 *)(_ptr))) = EF2BYTE(_val)      \
+       } while (0)
+
+/* Create a bit mask
+ * Examples:
+ * BIT_LEN_MASK_32(0) => 0x00000000
+ * BIT_LEN_MASK_32(1) => 0x00000001
+ * BIT_LEN_MASK_32(2) => 0x00000003
+ * BIT_LEN_MASK_32(32) => 0xFFFFFFFF
+ */
+#define BIT_LEN_MASK_32(__bitlen)       \
+       (0xFFFFFFFF >> (32 - (__bitlen)))
+#define BIT_LEN_MASK_16(__bitlen)       \
+       (0xFFFF >> (16 - (__bitlen)))
+#define BIT_LEN_MASK_8(__bitlen) \
+       (0xFF >> (8 - (__bitlen)))
+
+/* Create an offset bit mask
+ * Examples:
+ * BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003
+ * BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000
+ */
+#define BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen) \
+       (BIT_LEN_MASK_32(__bitlen) << (__bitoffset))
+#define BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen) \
+       (BIT_LEN_MASK_16(__bitlen) << (__bitoffset))
+#define BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen) \
+       (BIT_LEN_MASK_8(__bitlen) << (__bitoffset))
+
+/*Description:
+ * Return 4-byte value in host byte ordering from
+ * 4-byte pointer in little-endian system.
+ */
+#define LE_P4BYTE_TO_HOST_4BYTE(__pstart) \
+       (EF4BYTE(*((__le32 *)(__pstart))))
+#define LE_P2BYTE_TO_HOST_2BYTE(__pstart) \
+       (EF2BYTE(*((__le16 *)(__pstart))))
+#define LE_P1BYTE_TO_HOST_1BYTE(__pstart) \
+       (EF1BYTE(*((u8 *)(__pstart))))
+
+/*Description:
+Translate subfield (continuous bits in little-endian) of 4-byte
+value to host byte ordering.*/
+#define LE_BITS_TO_4BYTE(__pstart, __bitoffset, __bitlen) \
+       ( \
+               (LE_P4BYTE_TO_HOST_4BYTE(__pstart) >> (__bitoffset))  & \
+               BIT_LEN_MASK_32(__bitlen) \
+       )
+#define LE_BITS_TO_2BYTE(__pstart, __bitoffset, __bitlen) \
+       ( \
+               (LE_P2BYTE_TO_HOST_2BYTE(__pstart) >> (__bitoffset)) & \
+               BIT_LEN_MASK_16(__bitlen) \
+       )
+#define LE_BITS_TO_1BYTE(__pstart, __bitoffset, __bitlen) \
+       ( \
+               (LE_P1BYTE_TO_HOST_1BYTE(__pstart) >> (__bitoffset)) & \
+               BIT_LEN_MASK_8(__bitlen) \
+       )
+
+/* Description:
+ * Mask subfield (continuous bits in little-endian) of 4-byte value
+ * and return the result in 4-byte value in host byte ordering.
+ */
+#define LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) \
+       ( \
+               LE_P4BYTE_TO_HOST_4BYTE(__pstart)  & \
+               (~BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen)) \
+       )
+#define LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) \
+       ( \
+               LE_P2BYTE_TO_HOST_2BYTE(__pstart) & \
+               (~BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen)) \
+       )
+#define LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) \
+       ( \
+               LE_P1BYTE_TO_HOST_1BYTE(__pstart) & \
+               (~BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen)) \
+       )
+
+/* Description:
+ * Set subfield of little-endian 4-byte value to specified value.
+ */
+#define SET_BITS_TO_LE_4BYTE(__pstart, __bitoffset, __bitlen, __val) \
+               *((u32 *)(__pstart)) =                          \
+               (                                                       \
+               LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) | \
+               ((((u32)__val) & BIT_LEN_MASK_32(__bitlen)) << (__bitoffset)) \
+               )
+
+#define SET_BITS_TO_LE_2BYTE(__pstart, __bitoffset, __bitlen, __val) \
+               *((u16 *)(__pstart)) =                          \
+               (                                               \
+               LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) | \
+               ((((u16)__val) & BIT_LEN_MASK_16(__bitlen)) << (__bitoffset)) \
+               );
+
+#define SET_BITS_TO_LE_1BYTE(__pstart, __bitoffset, __bitlen, __val) \
+               *((u8 *)(__pstart)) = EF1BYTE                   \
+               (                                               \
+               LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) | \
+               ((((u8)__val) & BIT_LEN_MASK_8(__bitlen)) << (__bitoffset)) \
+               )
+
+/*  Get the N-bytes aligment offset from the current length */
+#define        N_BYTE_ALIGMENT(__value, __aligment) ((__aligment == 1) ? \
+       (__value) : (((__value + __aligment - 1) / __aligment) * __aligment))
+
+#endif /* __BASIC_TYPES_H__ */
diff --git a/drivers/staging/rtl8188eu/include/cmd_osdep.h b/drivers/staging/rtl8188eu/include/cmd_osdep.h
new file mode 100644 (file)
index 0000000..5a8465e
--- /dev/null
@@ -0,0 +1,32 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __CMD_OSDEP_H_
+#define __CMD_OSDEP_H_
+
+#include <osdep_service.h>
+#include <drv_types.h>
+
+extern int _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv);
+extern int _rtw_init_evt_priv(struct evt_priv *pevtpriv);
+extern void _rtw_free_cmd_priv(struct cmd_priv *pcmdpriv);
+extern int _rtw_enqueue_cmd(struct __queue *queue, struct cmd_obj *obj);
+extern struct cmd_obj  *_rtw_dequeue_cmd(struct __queue *queue);
+
+#endif
diff --git a/drivers/staging/rtl8188eu/include/drv_types.h b/drivers/staging/rtl8188eu/include/drv_types.h
new file mode 100644 (file)
index 0000000..6e49359
--- /dev/null
@@ -0,0 +1,335 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+/*-----------------------------------------------------------------------------
+
+       For type defines and data structure defines
+
+------------------------------------------------------------------------------*/
+
+
+#ifndef __DRV_TYPES_H__
+#define __DRV_TYPES_H__
+
+#define DRV_NAME "r8188eu"
+
+#include <osdep_service.h>
+#include <wlan_bssdef.h>
+#include <drv_types_linux.h>
+#include <rtw_ht.h>
+#include <rtw_cmd.h>
+#include <wlan_bssdef.h>
+#include <rtw_xmit.h>
+#include <rtw_recv.h>
+#include <hal_intf.h>
+#include <hal_com.h>
+#include <rtw_qos.h>
+#include <rtw_security.h>
+#include <rtw_pwrctrl.h>
+#include <rtw_io.h>
+#include <rtw_eeprom.h>
+#include <sta_info.h>
+#include <rtw_mlme.h>
+#include <rtw_debug.h>
+#include <rtw_rf.h>
+#include <rtw_event.h>
+#include <rtw_led.h>
+#include <rtw_mlme_ext.h>
+#include <rtw_p2p.h>
+#include <rtw_ap.h>
+#include <rtw_mp.h>
+#include <rtw_br_ext.h>
+
+enum _NIC_VERSION {
+       RTL8711_NIC,
+       RTL8712_NIC,
+       RTL8713_NIC,
+       RTL8716_NIC
+};
+
+#define SPEC_DEV_ID_NONE               BIT(0)
+#define SPEC_DEV_ID_DISABLE_HT         BIT(1)
+#define SPEC_DEV_ID_ENABLE_PS          BIT(2)
+#define SPEC_DEV_ID_RF_CONFIG_1T1R     BIT(3)
+#define SPEC_DEV_ID_RF_CONFIG_2T2R     BIT(4)
+#define SPEC_DEV_ID_ASSIGN_IFNAME      BIT(5)
+
+struct specific_device_id {
+       u32             flags;
+       u16             idVendor;
+       u16             idProduct;
+};
+
+struct registry_priv {
+       u8      chip_version;
+       u8      rfintfs;
+       u8      lbkmode;
+       u8      hci;
+       struct ndis_802_11_ssid ssid;
+       u8      network_mode;   /* infra, ad-hoc, auto */
+       u8      channel;/* ad-hoc support requirement */
+       u8      wireless_mode;/* A, B, G, auto */
+       u8      scan_mode;/* active, passive */
+       u8      radio_enable;
+       u8      preamble;/* long, short, auto */
+       u8      vrtl_carrier_sense;/* Enable, Disable, Auto */
+       u8      vcs_type;/* RTS/CTS, CTS-to-self */
+       u16     rts_thresh;
+       u16     frag_thresh;
+       u8      adhoc_tx_pwr;
+       u8      soft_ap;
+       u8      power_mgnt;
+       u8      ips_mode;
+       u8      smart_ps;
+       u8      long_retry_lmt;
+       u8      short_retry_lmt;
+       u16     busy_thresh;
+       u8      ack_policy;
+       u8      mp_mode;
+       u8      software_encrypt;
+       u8      software_decrypt;
+       u8      acm_method;
+         /* UAPSD */
+       u8      wmm_enable;
+       u8      uapsd_enable;
+       u8      uapsd_max_sp;
+       u8      uapsd_acbk_en;
+       u8      uapsd_acbe_en;
+       u8      uapsd_acvi_en;
+       u8      uapsd_acvo_en;
+
+       struct wlan_bssid_ex    dev_network;
+
+       u8      ht_enable;
+       u8      cbw40_enable;
+       u8      ampdu_enable;/* for tx */
+       u8      rx_stbc;
+       u8      ampdu_amsdu;/* A-MPDU Supports A-MSDU is permitted */
+       u8      lowrate_two_xmit;
+
+       u8      rf_config;
+       u8      low_power;
+
+       u8      wifi_spec;/*  !turbo_mode */
+
+       u8      channel_plan;
+       bool    bAcceptAddbaReq;
+
+       u8      antdiv_cfg;
+       u8      antdiv_type;
+
+       u8      usbss_enable;/* 0:disable,1:enable */
+       u8      hwpdn_mode;/* 0:disable,1:enable,2:decide by EFUSE config */
+       u8      hwpwrp_detect;/* 0:disable,1:enable */
+
+       u8      hw_wps_pbc;/* 0:disable,1:enable */
+
+       u8      max_roaming_times; /*  the max number driver will try */
+
+       u8      fw_iol; /* enable iol without other concern */
+
+       u8      enable80211d;
+
+       u8      ifname[16];
+       u8      if2name[16];
+
+       u8      notch_filter;
+};
+
+/* For registry parameters */
+#define RGTRY_OFT(field) ((u32)FIELD_OFFSET(struct registry_priv, field))
+#define RGTRY_SZ(field)   sizeof(((struct registry_priv *)0)->field)
+#define BSSID_OFT(field) ((u32)FIELD_OFFSET(struct wlan_bssid_ex, field))
+#define BSSID_SZ(field)   sizeof(((struct wlan_bssid_ex *)0)->field)
+
+#define MAX_CONTINUAL_URB_ERR          4
+
+struct dvobj_priv {
+       struct adapter *if1;
+       struct adapter *if2;
+
+       /* For 92D, DMDP have 2 interface. */
+       u8      InterfaceNumber;
+       u8      NumInterfaces;
+
+       /* In /Out Pipe information */
+       int     RtInPipe[2];
+       int     RtOutPipe[3];
+       u8      Queue2Pipe[HW_QUEUE_ENTRY];/* for out pipe mapping */
+
+       u8      irq_alloc;
+
+/*-------- below is for USB INTERFACE --------*/
+
+       u8      nr_endpoint;
+       u8      ishighspeed;
+       u8      RtNumInPipes;
+       u8      RtNumOutPipes;
+       int     ep_num[5]; /* endpoint number */
+       int     RegUsbSS;
+       struct semaphore usb_suspend_sema;
+       struct mutex  usb_vendor_req_mutex;
+
+       u8 *usb_alloc_vendor_req_buf;
+       u8 *usb_vendor_req_buf;
+
+       struct usb_interface *pusbintf;
+       struct usb_device *pusbdev;
+
+       ATOMIC_T continual_urb_error;
+};
+
+static inline struct device *dvobj_to_dev(struct dvobj_priv *dvobj)
+{
+       /* todo: get interface type from dvobj and the return
+        * the dev accordingly */
+       return &dvobj->pusbintf->dev;
+};
+
+enum _IFACE_TYPE {
+       IFACE_PORT0, /* mapping to port0 for C/D series chips */
+       IFACE_PORT1, /* mapping to port1 for C/D series chip */
+       MAX_IFACE_PORT,
+};
+
+enum _ADAPTER_TYPE {
+       PRIMARY_ADAPTER,
+       SECONDARY_ADAPTER,
+       MAX_ADAPTER,
+};
+
+enum driver_state {
+       DRIVER_NORMAL = 0,
+       DRIVER_DISAPPEAR = 1,
+       DRIVER_REPLACE_DONGLE = 2,
+};
+
+struct adapter {
+       int     DriverState;/* for disable driver using module, use dongle toi
+                            * replace module. */
+       int     pid[3];/* process id from UI, 0:wps, 1:hostapd, 2:dhcpcd */
+       int     bDongle;/* build-in module or external dongle */
+       u16     chip_type;
+       u16     HardwareType;
+       u16     interface_type;/* USB,SDIO,SPI,PCI */
+
+       struct dvobj_priv *dvobj;
+       struct  mlme_priv mlmepriv;
+       struct  mlme_ext_priv mlmeextpriv;
+       struct  cmd_priv        cmdpriv;
+       struct  evt_priv        evtpriv;
+       struct  io_priv iopriv;
+       struct  xmit_priv       xmitpriv;
+       struct  recv_priv       recvpriv;
+       struct  sta_priv        stapriv;
+       struct  security_priv   securitypriv;
+       struct  registry_priv   registrypriv;
+       struct  pwrctrl_priv    pwrctrlpriv;
+       struct  eeprom_priv eeprompriv;
+       struct  led_priv        ledpriv;
+       struct  mp_priv mppriv;
+
+#ifdef CONFIG_88EU_AP_MODE
+       struct  hostapd_priv    *phostapdpriv;
+#endif
+
+       struct wifidirect_info  wdinfo;
+
+       void *HalData;
+       u32 hal_data_sz;
+       struct hal_ops  HalFunc;
+
+       s32     bDriverStopped;
+       s32     bSurpriseRemoved;
+       s32     bCardDisableWOHSM;
+
+       u32     IsrContent;
+       u32     ImrContent;
+
+       u8      EepromAddressSize;
+       u8      hw_init_completed;
+       u8      bDriverIsGoingToUnload;
+       u8      init_adpt_in_progress;
+       u8      bHaltInProgress;
+
+       void *cmdThread;
+       void *evtThread;
+       void *xmitThread;
+       void *recvThread;
+       void (*intf_start)(struct adapter *adapter);
+       void (*intf_stop)(struct adapter *adapter);
+       struct  net_device *pnetdev;
+
+       /*  used by rtw_rereg_nd_name related function */
+       struct rereg_nd_name_data {
+               struct  net_device *old_pnetdev;
+               char old_ifname[IFNAMSIZ];
+               u8 old_ips_mode;
+               u8 old_bRegUseLed;
+       } rereg_nd_name_priv;
+
+       int bup;
+       struct net_device_stats stats;
+       struct iw_statistics iwstats;
+       struct proc_dir_entry *dir_dev;/*  for proc directory */
+
+       int net_closed;
+       u8 bFWReady;
+       u8 bBTFWReady;
+       u8 bReadPortCancel;
+       u8 bWritePortCancel;
+       u8 bRxRSSIDisplay;
+       /* The driver will show up the desired channel number
+        * when this flag is 1. */
+       u8 bNotifyChannelChange;
+#ifdef CONFIG_88EU_P2P
+       /* The driver will show the current P2P status when the
+        * upper application reads it. */
+       u8 bShowGetP2PState;
+#endif
+       struct adapter *pbuddy_adapter;
+
+       struct mutex *hw_init_mutex;
+
+       spinlock_t br_ext_lock;
+       struct nat25_network_db_entry   *nethash[NAT25_HASH_SIZE];
+       int                             pppoe_connection_in_progress;
+       unsigned char                   pppoe_addr[MACADDRLEN];
+       unsigned char                   scdb_mac[MACADDRLEN];
+       unsigned char                   scdb_ip[4];
+       struct nat25_network_db_entry   *scdb_entry;
+       unsigned char                   br_mac[MACADDRLEN];
+       unsigned char                   br_ip[4];
+       struct br_ext_info              ethBrExtInfo;
+
+       u8      fix_rate;
+
+       unsigned char     in_cta_test;
+};
+
+#define adapter_to_dvobj(adapter) (adapter->dvobj)
+
+int rtw_handle_dualmac(struct adapter *adapter, bool init);
+
+static inline u8 *myid(struct eeprom_priv *peepriv)
+{
+       return peepriv->mac_addr;
+}
+
+#endif /* __DRV_TYPES_H__ */
diff --git a/drivers/staging/rtl8188eu/include/drv_types_linux.h b/drivers/staging/rtl8188eu/include/drv_types_linux.h
new file mode 100644 (file)
index 0000000..812b744
--- /dev/null
@@ -0,0 +1,24 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __DRV_TYPES_LINUX_H__
+#define __DRV_TYPES_LINUX_H__
+
+
+#endif
diff --git a/drivers/staging/rtl8188eu/include/ethernet.h b/drivers/staging/rtl8188eu/include/ethernet.h
new file mode 100644 (file)
index 0000000..a59f912
--- /dev/null
@@ -0,0 +1,42 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+/*! \file */
+#ifndef __INC_ETHERNET_H
+#define __INC_ETHERNET_H
+
+#define ETHERNET_ADDRESS_LENGTH                6       /*  Ethernet Address Length */
+#define ETHERNET_HEADER_SIZE           14      /*  Ethernet Header Length */
+#define LLC_HEADER_SIZE                        6       /*  LLC Header Length */
+#define TYPE_LENGTH_FIELD_SIZE         2       /*  Type/Length Size */
+#define MINIMUM_ETHERNET_PACKET_SIZE   60      /*  Min Ethernet Packet Size */
+#define MAXIMUM_ETHERNET_PACKET_SIZE   1514    /*  Max Ethernet Packet Size */
+
+/*  Is Multicast Address? */
+#define RT_ETH_IS_MULTICAST(_addr)     ((((u8 *)(_addr))[0]&0x01) != 0)
+#define RT_ETH_IS_BROADCAST(_addr)     (                       \
+               ((u8 *)(_addr))[0] == 0xff &&           \
+               ((u8 *)(_addr))[1] == 0xff &&           \
+               ((u8 *)(_addr))[2] == 0xff &&           \
+               ((u8 *)(_addr))[3] == 0xff &&           \
+               ((u8 *)(_addr))[4] == 0xff &&           \
+               ((u8 *)(_addr))[5] == 0xff)     /*  Is Broadcast Address? */
+
+
+#endif /*  #ifndef __INC_ETHERNET_H */
diff --git a/drivers/staging/rtl8188eu/include/h2clbk.h b/drivers/staging/rtl8188eu/include/h2clbk.h
new file mode 100644 (file)
index 0000000..e595030
--- /dev/null
@@ -0,0 +1,35 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+
+
+#define _H2CLBK_H_
+
+
+#include <rtl8711_spec.h>
+#include <TypeDef.h>
+
+
+void _lbk_cmd(struct adapter *adapter);
+
+void _lbk_rsp(struct adapter *adapter);
+
+void _lbk_evt(IN struct adapter *adapter);
+
+void h2c_event_callback(unsigned char *dev, unsigned char *pbuf);
diff --git a/drivers/staging/rtl8188eu/include/hal_com.h b/drivers/staging/rtl8188eu/include/hal_com.h
new file mode 100644 (file)
index 0000000..81c2709
--- /dev/null
@@ -0,0 +1,173 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __HAL_COMMON_H__
+#define __HAL_COMMON_H__
+
+/*  */
+/*        Rate Definition */
+/*  */
+/* CCK */
+#define        RATR_1M                                 0x00000001
+#define        RATR_2M                                 0x00000002
+#define        RATR_55M                                0x00000004
+#define        RATR_11M                                0x00000008
+/* OFDM */
+#define        RATR_6M                                 0x00000010
+#define        RATR_9M                                 0x00000020
+#define        RATR_12M                                0x00000040
+#define        RATR_18M                                0x00000080
+#define        RATR_24M                                0x00000100
+#define        RATR_36M                                0x00000200
+#define        RATR_48M                                0x00000400
+#define        RATR_54M                                0x00000800
+/* MCS 1 Spatial Stream */
+#define        RATR_MCS0                               0x00001000
+#define        RATR_MCS1                               0x00002000
+#define        RATR_MCS2                               0x00004000
+#define        RATR_MCS3                               0x00008000
+#define        RATR_MCS4                               0x00010000
+#define        RATR_MCS5                               0x00020000
+#define        RATR_MCS6                               0x00040000
+#define        RATR_MCS7                               0x00080000
+/* MCS 2 Spatial Stream */
+#define        RATR_MCS8                               0x00100000
+#define        RATR_MCS9                               0x00200000
+#define        RATR_MCS10                              0x00400000
+#define        RATR_MCS11                              0x00800000
+#define        RATR_MCS12                              0x01000000
+#define        RATR_MCS13                              0x02000000
+#define        RATR_MCS14                              0x04000000
+#define        RATR_MCS15                              0x08000000
+
+/* CCK */
+#define RATE_1M                                        BIT(0)
+#define RATE_2M                                        BIT(1)
+#define RATE_5_5M                              BIT(2)
+#define RATE_11M                               BIT(3)
+/* OFDM */
+#define RATE_6M                                        BIT(4)
+#define RATE_9M                                        BIT(5)
+#define RATE_12M                               BIT(6)
+#define RATE_18M                               BIT(7)
+#define RATE_24M                               BIT(8)
+#define RATE_36M                               BIT(9)
+#define RATE_48M                               BIT(10)
+#define RATE_54M                               BIT(11)
+/* MCS 1 Spatial Stream */
+#define RATE_MCS0                              BIT(12)
+#define RATE_MCS1                              BIT(13)
+#define RATE_MCS2                              BIT(14)
+#define RATE_MCS3                              BIT(15)
+#define RATE_MCS4                              BIT(16)
+#define RATE_MCS5                              BIT(17)
+#define RATE_MCS6                              BIT(18)
+#define RATE_MCS7                              BIT(19)
+/* MCS 2 Spatial Stream */
+#define RATE_MCS8                              BIT(20)
+#define RATE_MCS9                              BIT(21)
+#define RATE_MCS10                             BIT(22)
+#define RATE_MCS11                             BIT(23)
+#define RATE_MCS12                             BIT(24)
+#define RATE_MCS13                             BIT(25)
+#define RATE_MCS14                             BIT(26)
+#define RATE_MCS15                             BIT(27)
+
+/*  ALL CCK Rate */
+#define        RATE_ALL_CCK            (RATR_1M | RATR_2M | RATR_55M | RATR_11M)
+#define        RATE_ALL_OFDM_AG        (RATR_6M | RATR_9M | RATR_12M | RATR_18M | \
+                                RATR_24M | RATR_36M | RATR_48M | RATR_54M)
+#define        RATE_ALL_OFDM_1SS       (RATR_MCS0 | RATR_MCS1 | RATR_MCS2 |    \
+                                RATR_MCS3 | RATR_MCS4 | RATR_MCS5|RATR_MCS6 | \
+                                RATR_MCS7)
+#define        RATE_ALL_OFDM_2SS       (RATR_MCS8 | RATR_MCS9 | RATR_MCS10 | \
+                                RATR_MCS11 | RATR_MCS12 | RATR_MCS13 | \
+                                RATR_MCS14 | RATR_MCS15)
+
+/*------------------------------ Tx Desc definition Macro --------------------*/
+/* pragma mark -- Tx Desc related definition. -- */
+/*     Rate */
+/*  CCK Rates, TxHT = 0 */
+#define DESC_RATE1M                            0x00
+#define DESC_RATE2M                            0x01
+#define DESC_RATE5_5M                          0x02
+#define DESC_RATE11M                           0x03
+
+/*  OFDM Rates, TxHT = 0 */
+#define DESC_RATE6M                            0x04
+#define DESC_RATE9M                            0x05
+#define DESC_RATE12M                           0x06
+#define DESC_RATE18M                           0x07
+#define DESC_RATE24M                           0x08
+#define DESC_RATE36M                           0x09
+#define DESC_RATE48M                           0x0a
+#define DESC_RATE54M                           0x0b
+
+/*  MCS Rates, TxHT = 1 */
+#define DESC_RATEMCS0                          0x0c
+#define DESC_RATEMCS1                          0x0d
+#define DESC_RATEMCS2                          0x0e
+#define DESC_RATEMCS3                          0x0f
+#define DESC_RATEMCS4                          0x10
+#define DESC_RATEMCS5                          0x11
+#define DESC_RATEMCS6                          0x12
+#define DESC_RATEMCS7                          0x13
+#define DESC_RATEMCS8                          0x14
+#define DESC_RATEMCS9                          0x15
+#define DESC_RATEMCS10                         0x16
+#define DESC_RATEMCS11                         0x17
+#define DESC_RATEMCS12                         0x18
+#define DESC_RATEMCS13                         0x19
+#define DESC_RATEMCS14                         0x1a
+#define DESC_RATEMCS15                         0x1b
+#define DESC_RATEMCS15_SG                      0x1c
+#define DESC_RATEMCS32                         0x20
+
+/*  1 Byte long (in unit of TU) */
+#define REG_P2P_CTWIN                          0x0572
+#define REG_NOA_DESC_SEL                       0x05CF
+#define REG_NOA_DESC_DURATION                  0x05E0
+#define REG_NOA_DESC_INTERVAL                  0x05E4
+#define REG_NOA_DESC_START                     0x05E8
+#define REG_NOA_DESC_COUNT                     0x05EC
+
+#include "HalVerDef.h"
+void dump_chip_info(struct HAL_VERSION ChipVersion);
+
+
+/* return the final channel plan decision */
+u8 hal_com_get_channel_plan(struct adapter *padapter,
+                           u8 hw_channel_plan,
+                           u8 sw_channel_plan,
+                           u8 def_channel_plan,
+                           bool AutoLoadFail
+);
+
+u8 MRateToHwRate(u8 rate);
+
+void HalSetBrateCfg(struct adapter *Adapter, u8 *mBratesOS, u16 *pBrateCfg);
+
+bool Hal_MappingOutPipe(struct adapter *pAdapter, u8 NumOutPipe);
+
+void hal_init_macaddr(struct adapter *adapter);
+
+void c2h_evt_clear(struct adapter *adapter);
+s32 c2h_evt_read(struct adapter *adapter, u8 *buf);
+
+#endif /* __HAL_COMMON_H__ */
diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h
new file mode 100644 (file)
index 0000000..439c3c9
--- /dev/null
@@ -0,0 +1,426 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+#ifndef __HAL_INTF_H__
+#define __HAL_INTF_H__
+
+#include <osdep_service.h>
+#include <drv_types.h>
+#include <Hal8188EPhyCfg.h>
+
+enum RTL871X_HCI_TYPE {
+       RTW_PCIE        = BIT0,
+       RTW_USB         = BIT1,
+       RTW_SDIO        = BIT2,
+       RTW_GSPI        = BIT3,
+};
+
+enum _CHIP_TYPE {
+       NULL_CHIP_TYPE,
+       RTL8712_8188S_8191S_8192S,
+       RTL8188C_8192C,
+       RTL8192D,
+       RTL8723A,
+       RTL8188E,
+       MAX_CHIP_TYPE
+};
+
+enum hw_variables {
+       HW_VAR_MEDIA_STATUS,
+       HW_VAR_MEDIA_STATUS1,
+       HW_VAR_SET_OPMODE,
+       HW_VAR_MAC_ADDR,
+       HW_VAR_BSSID,
+       HW_VAR_INIT_RTS_RATE,
+       HW_VAR_BASIC_RATE,
+       HW_VAR_TXPAUSE,
+       HW_VAR_BCN_FUNC,
+       HW_VAR_CORRECT_TSF,
+       HW_VAR_CHECK_BSSID,
+       HW_VAR_MLME_DISCONNECT,
+       HW_VAR_MLME_SITESURVEY,
+       HW_VAR_MLME_JOIN,
+       HW_VAR_BEACON_INTERVAL,
+       HW_VAR_SLOT_TIME,
+       HW_VAR_RESP_SIFS,
+       HW_VAR_ACK_PREAMBLE,
+       HW_VAR_SEC_CFG,
+       HW_VAR_BCN_VALID,
+       HW_VAR_RF_TYPE,
+       HW_VAR_DM_FLAG,
+       HW_VAR_DM_FUNC_OP,
+       HW_VAR_DM_FUNC_SET,
+       HW_VAR_DM_FUNC_CLR,
+       HW_VAR_CAM_EMPTY_ENTRY,
+       HW_VAR_CAM_INVALID_ALL,
+       HW_VAR_CAM_WRITE,
+       HW_VAR_CAM_READ,
+       HW_VAR_AC_PARAM_VO,
+       HW_VAR_AC_PARAM_VI,
+       HW_VAR_AC_PARAM_BE,
+       HW_VAR_AC_PARAM_BK,
+       HW_VAR_ACM_CTRL,
+       HW_VAR_AMPDU_MIN_SPACE,
+       HW_VAR_AMPDU_FACTOR,
+       HW_VAR_RXDMA_AGG_PG_TH,
+       HW_VAR_SET_RPWM,
+       HW_VAR_H2C_FW_PWRMODE,
+       HW_VAR_H2C_FW_JOINBSSRPT,
+       HW_VAR_FWLPS_RF_ON,
+       HW_VAR_H2C_FW_P2P_PS_OFFLOAD,
+       HW_VAR_TDLS_WRCR,
+       HW_VAR_TDLS_INIT_CH_SEN,
+       HW_VAR_TDLS_RS_RCR,
+       HW_VAR_TDLS_DONE_CH_SEN,
+       HW_VAR_INITIAL_GAIN,
+       HW_VAR_TRIGGER_GPIO_0,
+       HW_VAR_BT_SET_COEXIST,
+       HW_VAR_BT_ISSUE_DELBA,
+       HW_VAR_CURRENT_ANTENNA,
+       HW_VAR_ANTENNA_DIVERSITY_LINK,
+       HW_VAR_ANTENNA_DIVERSITY_SELECT,
+       HW_VAR_SWITCH_EPHY_WoWLAN,
+       HW_VAR_EFUSE_USAGE,
+       HW_VAR_EFUSE_BYTES,
+       HW_VAR_EFUSE_BT_USAGE,
+       HW_VAR_EFUSE_BT_BYTES,
+       HW_VAR_FIFO_CLEARN_UP,
+       HW_VAR_CHECK_TXBUF,
+       HW_VAR_APFM_ON_MAC, /* Auto FSM to Turn On, include clock, isolation,
+                            * power control for MAC only */
+       /*  The valid upper nav range for the HW updating, if the true value is
+        *  larger than the upper range, the HW won't update it. */
+       /*  Unit in microsecond. 0 means disable this function. */
+       HW_VAR_NAV_UPPER,
+       HW_VAR_RPT_TIMER_SETTING,
+       HW_VAR_TX_RPT_MAX_MACID,
+       HW_VAR_H2C_MEDIA_STATUS_RPT,
+       HW_VAR_CHK_HI_QUEUE_EMPTY,
+};
+
+enum hal_def_variable {
+       HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
+       HAL_DEF_IS_SUPPORT_ANT_DIV,
+       HAL_DEF_CURRENT_ANTENNA,
+       HAL_DEF_DRVINFO_SZ,
+       HAL_DEF_MAX_RECVBUF_SZ,
+       HAL_DEF_RX_PACKET_OFFSET,
+       HAL_DEF_DBG_DUMP_RXPKT,/* for dbg */
+       HAL_DEF_DBG_DM_FUNC,/* for dbg */
+       HAL_DEF_RA_DECISION_RATE,
+       HAL_DEF_RA_SGI,
+       HAL_DEF_PT_PWR_STATUS,
+       HW_VAR_MAX_RX_AMPDU_FACTOR,
+       HW_DEF_RA_INFO_DUMP,
+       HAL_DEF_DBG_DUMP_TXPKT,
+       HW_DEF_FA_CNT_DUMP,
+       HW_DEF_ODM_DBG_FLAG,
+};
+
+enum hal_odm_variable {
+       HAL_ODM_STA_INFO,
+       HAL_ODM_P2P_STATE,
+       HAL_ODM_WIFI_DISPLAY_STATE,
+};
+
+enum hal_intf_ps_func {
+       HAL_USB_SELECT_SUSPEND,
+       HAL_MAX_ID,
+};
+
+typedef s32 (*c2h_id_filter)(u8 id);
+
+struct hal_ops {
+       u32     (*hal_power_on)(struct adapter *padapter);
+       u32     (*hal_init)(struct adapter *padapter);
+       u32     (*hal_deinit)(struct adapter *padapter);
+
+       void    (*free_hal_data)(struct adapter *padapter);
+
+       u32     (*inirp_init)(struct adapter *padapter);
+       u32     (*inirp_deinit)(struct adapter *padapter);
+
+       s32     (*init_xmit_priv)(struct adapter *padapter);
+       void    (*free_xmit_priv)(struct adapter *padapter);
+
+       s32     (*init_recv_priv)(struct adapter *padapter);
+       void    (*free_recv_priv)(struct adapter *padapter);
+
+       void    (*InitSwLeds)(struct adapter *padapter);
+       void    (*DeInitSwLeds)(struct adapter *padapter);
+
+       void    (*dm_init)(struct adapter *padapter);
+       void    (*dm_deinit)(struct adapter *padapter);
+       void    (*read_chip_version)(struct adapter *padapter);
+
+       void    (*init_default_value)(struct adapter *padapter);
+
+       void    (*intf_chip_configure)(struct adapter *padapter);
+
+       void    (*read_adapter_info)(struct adapter *padapter);
+
+       void    (*enable_interrupt)(struct adapter *padapter);
+       void    (*disable_interrupt)(struct adapter *padapter);
+       s32     (*interrupt_handler)(struct adapter *padapter);
+
+       void    (*set_bwmode_handler)(struct adapter *padapter,
+                                     enum ht_channel_width Bandwidth,
+                                     u8 Offset);
+       void    (*set_channel_handler)(struct adapter *padapter, u8 channel);
+
+       void    (*hal_dm_watchdog)(struct adapter *padapter);
+
+       void    (*SetHwRegHandler)(struct adapter *padapter, u8 variable,
+                                  u8 *val);
+       void    (*GetHwRegHandler)(struct adapter *padapter, u8 variable,
+                                  u8 *val);
+
+       u8      (*GetHalDefVarHandler)(struct adapter *padapter,
+                                      enum hal_def_variable eVariable,
+                                      void *pValue);
+       u8      (*SetHalDefVarHandler)(struct adapter *padapter,
+                                      enum hal_def_variable eVariable,
+                                      void *pValue);
+
+       void    (*GetHalODMVarHandler)(struct adapter *padapter,
+                                      enum hal_odm_variable eVariable,
+                                      void *pValue1, bool bSet);
+       void    (*SetHalODMVarHandler)(struct adapter *padapter,
+                                      enum hal_odm_variable eVariable,
+                                      void *pValue1, bool bSet);
+
+       void    (*UpdateRAMaskHandler)(struct adapter *padapter,
+                                      u32 mac_id, u8 rssi_level);
+       void    (*SetBeaconRelatedRegistersHandler)(struct adapter *padapter);
+
+       void    (*Add_RateATid)(struct adapter *adapter, u32 bitmap, u8 arg,
+                               u8 rssi_level);
+       void    (*run_thread)(struct adapter *adapter);
+       void    (*cancel_thread)(struct adapter *adapter);
+
+       u8      (*AntDivBeforeLinkHandler)(struct adapter *adapter);
+       void    (*AntDivCompareHandler)(struct adapter *adapter,
+                                       struct wlan_bssid_ex *dst,
+                                       struct wlan_bssid_ex *src);
+       u8      (*interface_ps_func)(struct adapter *padapter,
+                                    enum hal_intf_ps_func efunc_id, u8 *val);
+
+       s32     (*hal_xmit)(struct adapter *padapter,
+                           struct xmit_frame *pxmitframe);
+       s32 (*mgnt_xmit)(struct adapter *padapter,
+                        struct xmit_frame *pmgntframe);
+
+       u32     (*read_bbreg)(struct adapter *padapter, u32 RegAddr,
+                             u32 BitMask);
+       void    (*write_bbreg)(struct adapter *padapter, u32 RegAddr,
+                              u32 BitMask, u32 Data);
+       u32     (*read_rfreg)(struct adapter *padapter,
+                             enum rf_radio_path eRFPath, u32 RegAddr,
+                             u32 BitMask);
+       void    (*write_rfreg)(struct adapter *padapter,
+                              enum rf_radio_path eRFPath, u32 RegAddr,
+                              u32 BitMask, u32 Data);
+
+       void (*EfusePowerSwitch)(struct adapter *padapter, u8 bWrite,
+                                u8 PwrState);
+       void (*ReadEFuse)(struct adapter *padapter, u8 efuseType, u16 _offset,
+                         u16 _size_byte, u8 *pbuf, bool bPseudoTest);
+       void (*EFUSEGetEfuseDefinition)(struct adapter *padapter, u8 efuseType,
+                                       u8 type, void *pOut, bool bPseudoTest);
+       u16     (*EfuseGetCurrentSize)(struct adapter *padapter, u8 efuseType,
+                                      bool bPseudoTest);
+       int     (*Efuse_PgPacketRead)(struct adapter *adapter, u8 offset,
+                                     u8 *data, bool bPseudoTest);
+       int     (*Efuse_PgPacketWrite)(struct adapter *padapter, u8 offset,
+                                      u8 word_en, u8 *data, bool bPseudoTest);
+       u8      (*Efuse_WordEnableDataWrite)(struct adapter *padapter,
+                                            u16 efuse_addr, u8 word_en,
+                                            u8 *data, bool bPseudoTest);
+       bool    (*Efuse_PgPacketWrite_BT)(struct adapter *padapter, u8 offset,
+                                         u8 word_en, u8 *data, bool test);
+
+       void (*sreset_init_value)(struct adapter *padapter);
+       void (*sreset_reset_value)(struct adapter *padapter);
+       void (*silentreset)(struct adapter *padapter);
+       void (*sreset_xmit_status_check)(struct adapter *padapter);
+       void (*sreset_linked_status_check) (struct adapter *padapter);
+       u8 (*sreset_get_wifi_status)(struct adapter *padapter);
+
+       int (*IOL_exec_cmds_sync)(struct adapter *padapter,
+                                 struct xmit_frame *frame, u32 max_wait,
+                                 u32 bndy_cnt);
+
+       void (*hal_notch_filter)(struct adapter *adapter, bool enable);
+       void (*hal_reset_security_engine)(struct adapter *adapter);
+       s32 (*c2h_handler)(struct adapter *padapter,
+                          struct c2h_evt_hdr *c2h_evt);
+       c2h_id_filter c2h_id_filter_ccx;
+};
+
+enum rt_eeprom_type {
+       EEPROM_93C46,
+       EEPROM_93C56,
+       EEPROM_BOOT_EFUSE,
+};
+
+#define RF_CHANGE_BY_INIT      0
+#define RF_CHANGE_BY_IPS       BIT28
+#define RF_CHANGE_BY_PS                BIT29
+#define RF_CHANGE_BY_HW                BIT30
+#define RF_CHANGE_BY_SW                BIT31
+
+enum hardware_type {
+       HARDWARE_TYPE_RTL8180,
+       HARDWARE_TYPE_RTL8185,
+       HARDWARE_TYPE_RTL8187,
+       HARDWARE_TYPE_RTL8188,
+       HARDWARE_TYPE_RTL8190P,
+       HARDWARE_TYPE_RTL8192E,
+       HARDWARE_TYPE_RTL819xU,
+       HARDWARE_TYPE_RTL8192SE,
+       HARDWARE_TYPE_RTL8192SU,
+       HARDWARE_TYPE_RTL8192CE,
+       HARDWARE_TYPE_RTL8192CU,
+       HARDWARE_TYPE_RTL8192DE,
+       HARDWARE_TYPE_RTL8192DU,
+       HARDWARE_TYPE_RTL8723AE,
+       HARDWARE_TYPE_RTL8723AU,
+       HARDWARE_TYPE_RTL8723AS,
+       HARDWARE_TYPE_RTL8188EE,
+       HARDWARE_TYPE_RTL8188EU,
+       HARDWARE_TYPE_RTL8188ES,
+       HARDWARE_TYPE_MAX,
+};
+
+/*  RTL8188E Series */
+#define IS_HARDWARE_TYPE_8188EE(_Adapter)                      \
+(((struct adapter *)_Adapter)->HardwareType == HARDWARE_TYPE_RTL8188EE)
+#define IS_HARDWARE_TYPE_8188EU(_Adapter)                      \
+(((struct adapter *)_Adapter)->HardwareType == HARDWARE_TYPE_RTL8188EU)
+#define IS_HARDWARE_TYPE_8188ES(_Adapter)                      \
+(((struct adapter *)_Adapter)->HardwareType == HARDWARE_TYPE_RTL8188ES)
+#define        IS_HARDWARE_TYPE_8188E(_Adapter)        \
+(IS_HARDWARE_TYPE_8188EE(_Adapter) || IS_HARDWARE_TYPE_8188EU(_Adapter) || \
+ IS_HARDWARE_TYPE_8188ES(_Adapter))
+
+#define GET_EEPROM_EFUSE_PRIV(adapter) (&adapter->eeprompriv)
+
+#define is_boot_from_eeprom(adapter) (adapter->eeprompriv.EepromOrEfuse)
+
+void rtw_hal_def_value_init(struct adapter *padapter);
+
+void   rtw_hal_free_data(struct adapter *padapter);
+
+void rtw_hal_dm_init(struct adapter *padapter);
+void rtw_hal_dm_deinit(struct adapter *padapter);
+void rtw_hal_sw_led_init(struct adapter *padapter);
+void rtw_hal_sw_led_deinit(struct adapter *padapter);
+
+u32 rtw_hal_power_on(struct adapter *padapter);
+uint rtw_hal_init(struct adapter *padapter);
+uint rtw_hal_deinit(struct adapter *padapter);
+void rtw_hal_stop(struct adapter *padapter);
+void rtw_hal_set_hwreg(struct adapter *padapter, u8 variable, u8 *val);
+void rtw_hal_get_hwreg(struct adapter *padapter, u8 variable, u8 *val);
+
+void rtw_hal_chip_configure(struct adapter *padapter);
+void rtw_hal_read_chip_info(struct adapter *padapter);
+void rtw_hal_read_chip_version(struct adapter *padapter);
+
+u8 rtw_hal_set_def_var(struct adapter *padapter,
+                      enum hal_def_variable eVariable, void *pValue);
+u8 rtw_hal_get_def_var(struct adapter *padapter,
+                      enum hal_def_variable eVariable, void *pValue);
+
+void rtw_hal_set_odm_var(struct adapter *padapter,
+                        enum hal_odm_variable eVariable, void *pValue1,
+                        bool bSet);
+void rtw_hal_get_odm_var(struct adapter *padapter,
+                        enum hal_odm_variable eVariable,
+                        void *pValue1, bool bSet);
+
+void rtw_hal_enable_interrupt(struct adapter *padapter);
+void rtw_hal_disable_interrupt(struct adapter *padapter);
+
+u32    rtw_hal_inirp_init(struct adapter *padapter);
+u32    rtw_hal_inirp_deinit(struct adapter *padapter);
+
+u8     rtw_hal_intf_ps_func(struct adapter *padapter,
+                            enum hal_intf_ps_func efunc_id, u8 *val);
+
+s32    rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe);
+s32    rtw_hal_mgnt_xmit(struct adapter *padapter,
+                         struct xmit_frame *pmgntframe);
+
+s32    rtw_hal_init_xmit_priv(struct adapter *padapter);
+void   rtw_hal_free_xmit_priv(struct adapter *padapter);
+
+s32    rtw_hal_init_recv_priv(struct adapter *padapter);
+void   rtw_hal_free_recv_priv(struct adapter *padapter);
+
+void rtw_hal_update_ra_mask(struct adapter *padapter, u32 mac_id, u8 level);
+void   rtw_hal_add_ra_tid(struct adapter *adapt, u32 bitmap, u8 arg, u8 level);
+void   rtw_hal_clone_data(struct adapter *dst_adapt,
+                          struct adapter *src_adapt);
+void   rtw_hal_start_thread(struct adapter *padapter);
+void   rtw_hal_stop_thread(struct adapter *padapter);
+
+void rtw_hal_bcn_related_reg_setting(struct adapter *padapter);
+
+u32    rtw_hal_read_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask);
+void   rtw_hal_write_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask,
+                           u32 Data);
+u32    rtw_hal_read_rfreg(struct adapter *padapter, enum rf_radio_path eRFPath,
+                          u32 RegAddr, u32 BitMask);
+void   rtw_hal_write_rfreg(struct adapter *padapter,
+                           enum rf_radio_path eRFPath, u32 RegAddr,
+                           u32 BitMask, u32 Data);
+
+s32    rtw_hal_interrupt_handler(struct adapter *padapter);
+
+void   rtw_hal_set_bwmode(struct adapter *padapter,
+                          enum ht_channel_width Bandwidth, u8 Offset);
+void   rtw_hal_set_chan(struct adapter *padapter, u8 channel);
+void   rtw_hal_dm_watchdog(struct adapter *padapter);
+
+u8     rtw_hal_antdiv_before_linked(struct adapter *padapter);
+void   rtw_hal_antdiv_rssi_compared(struct adapter *padapter,
+                                    struct wlan_bssid_ex *dst,
+                                    struct wlan_bssid_ex *src);
+
+void rtw_hal_sreset_init(struct adapter *padapter);
+void rtw_hal_sreset_reset(struct adapter *padapter);
+void rtw_hal_sreset_reset_value(struct adapter *padapter);
+void rtw_hal_sreset_xmit_status_check(struct adapter *padapter);
+void rtw_hal_sreset_linked_status_check(struct adapter *padapter);
+u8   rtw_hal_sreset_get_wifi_status(struct adapter *padapter);
+
+int rtw_hal_iol_cmd(struct adapter  *adapter, struct xmit_frame *xmit_frame,
+                   u32 max_wating_ms, u32 bndy_cnt);
+
+void rtw_hal_notch_filter(struct adapter *adapter, bool enable);
+void rtw_hal_reset_security_engine(struct adapter *adapter);
+
+s32 rtw_hal_c2h_handler(struct adapter *adapter,
+                       struct c2h_evt_hdr *c2h_evt);
+c2h_id_filter rtw_hal_c2h_id_filter_ccx(struct adapter *adapter);
+void indicate_wx_scan_complete_event(struct adapter *padapter);
+u8 rtw_do_join(struct adapter *padapter);
+
+#endif /* __HAL_INTF_H__ */