Attachment '0001-staging-brcm80211-remove-brcm80211-driver-from-the-s.patch'

Download

   1 From e829177d1bc9f09b5f08fdd551bc1d557aef627b Mon Sep 17 00:00:00 2001
   2 From: Arend van Spriel <arend@broadcom.com>
   3 Date: Fri, 7 Oct 2011 16:24:40 +0200
   4 Subject: [PATCH] staging: brcm80211: remove brcm80211 driver from the staging tree
   5 
   6 With the mainline patch being applied to the wireless-next repository
   7 by John Linville this driver is no longer needed under the staging
   8 directory. This patch ends its life under the staging tree.
   9 
  10 Cc: John W. Linville <linville@tuxdriver.com>
  11 Signed-off-by: Arend van Spriel <arend@broadcom.com>
  12 ---
  13 Hi Greg,
  14 
  15 John recommended to do the delete through your staging tree. So here it is.
  16 
  17 Thanks for the ride. It has been a learning experience for all of us here.
  18 Apart from the significant cleanup (which needs ongoing work for sure) it
  19 took some time to find the right way of working in coordinating our changes
  20 with community patches.
  21 
  22 Gr. AvS
  23 ---
  24  drivers/staging/Kconfig                            |    2 -
  25  drivers/staging/Makefile                           |    2 -
  26  drivers/staging/brcm80211/Kconfig                  |   35 -
  27  drivers/staging/brcm80211/Makefile                 |   23 -
  28  drivers/staging/brcm80211/README                   |    1 -
  29  drivers/staging/brcm80211/TODO                     |    9 -
  30  drivers/staging/brcm80211/brcmfmac/Makefile        |   33 -
  31  drivers/staging/brcm80211/brcmfmac/bcmchip.h       |   32 -
  32  drivers/staging/brcm80211/brcmfmac/bcmsdh.c        |  371 -
  33  drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c  |  625 -
  34  drivers/staging/brcm80211/brcmfmac/dhd.h           |  773 -
  35  drivers/staging/brcm80211/brcmfmac/dhd_bus.h       |   57 -
  36  drivers/staging/brcm80211/brcmfmac/dhd_cdc.c       |  498 -
  37  drivers/staging/brcm80211/brcmfmac/dhd_common.c    |  872 -
  38  drivers/staging/brcm80211/brcmfmac/dhd_dbg.h       |   58 -
  39  drivers/staging/brcm80211/brcmfmac/dhd_linux.c     | 1354 -
  40  drivers/staging/brcm80211/brcmfmac/dhd_proto.h     |   60 -
  41  drivers/staging/brcm80211/brcmfmac/dhd_sdio.c      | 4581 ----
  42  drivers/staging/brcm80211/brcmfmac/sdio_host.h     |  252 -
  43  drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c   | 3730 ---
  44  drivers/staging/brcm80211/brcmfmac/wl_cfg80211.h   |  375 -
  45  drivers/staging/brcm80211/brcmsmac/Makefile        |   51 -
  46  drivers/staging/brcm80211/brcmsmac/aiutils.c       | 2079 --
  47  drivers/staging/brcm80211/brcmsmac/aiutils.h       |  378 -
  48  drivers/staging/brcm80211/brcmsmac/ampdu.c         | 1241 -
  49  drivers/staging/brcm80211/brcmsmac/ampdu.h         |   30 -
  50  drivers/staging/brcm80211/brcmsmac/antsel.c        |  308 -
  51  drivers/staging/brcm80211/brcmsmac/antsel.h        |   29 -
  52  .../brcm80211/brcmsmac/brcms_trace_events.c        |   23 -
  53  .../brcm80211/brcmsmac/brcms_trace_events.h        |   92 -
  54  drivers/staging/brcm80211/brcmsmac/channel.c       | 1565 --
  55  drivers/staging/brcm80211/brcmsmac/channel.h       |   53 -
  56  drivers/staging/brcm80211/brcmsmac/d11.h           | 1898 --
  57  drivers/staging/brcm80211/brcmsmac/dma.c           | 1425 -
  58  drivers/staging/brcm80211/brcmsmac/dma.h           |  120 -
  59  drivers/staging/brcm80211/brcmsmac/mac80211_if.c   | 1701 --
  60  drivers/staging/brcm80211/brcmsmac/mac80211_if.h   |  107 -
  61  drivers/staging/brcm80211/brcmsmac/main.c          | 8841 ------
  62  drivers/staging/brcm80211/brcmsmac/main.h          |  819 -
  63  drivers/staging/brcm80211/brcmsmac/nicpci.c        |  835 -
  64  drivers/staging/brcm80211/brcmsmac/nicpci.h        |   82 -
  65  drivers/staging/brcm80211/brcmsmac/otp.c           |  426 -
  66  drivers/staging/brcm80211/brcmsmac/otp.h           |   36 -
  67  drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c   | 2988 --
  68  drivers/staging/brcm80211/brcmsmac/phy/phy_hal.h   |  301 -
  69  drivers/staging/brcm80211/brcmsmac/phy/phy_int.h   | 1169 -
  70  drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c   | 5154 ----
  71  drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.h   |  121 -
  72  drivers/staging/brcm80211/brcmsmac/phy/phy_n.c     |28876 --------------------
  73  drivers/staging/brcm80211/brcmsmac/phy/phy_qmath.c |  308 -
  74  drivers/staging/brcm80211/brcmsmac/phy/phy_qmath.h |   42 -
  75  drivers/staging/brcm80211/brcmsmac/phy/phy_radio.h | 1533 --
  76  drivers/staging/brcm80211/brcmsmac/phy/phyreg_n.h  |  167 -
  77  .../staging/brcm80211/brcmsmac/phy/phytbl_lcn.c    | 3250 ---
  78  .../staging/brcm80211/brcmsmac/phy/phytbl_lcn.h    |   54 -
  79  drivers/staging/brcm80211/brcmsmac/phy/phytbl_n.c  |10630 -------
  80  drivers/staging/brcm80211/brcmsmac/phy/phytbl_n.h  |   50 -
  81  drivers/staging/brcm80211/brcmsmac/phy_shim.c      |  226 -
  82  drivers/staging/brcm80211/brcmsmac/phy_shim.h      |  185 -
  83  drivers/staging/brcm80211/brcmsmac/pmu.c           |  458 -
  84  drivers/staging/brcm80211/brcmsmac/pmu.h           |   38 -
  85  drivers/staging/brcm80211/brcmsmac/pub.h           |  655 -
  86  drivers/staging/brcm80211/brcmsmac/rate.c          |  514 -
  87  drivers/staging/brcm80211/brcmsmac/rate.h          |  250 -
  88  drivers/staging/brcm80211/brcmsmac/scb.h           |   82 -
  89  drivers/staging/brcm80211/brcmsmac/srom.c          | 1298 -
  90  drivers/staging/brcm80211/brcmsmac/srom.h          |   34 -
  91  drivers/staging/brcm80211/brcmsmac/stf.c           |  438 -
  92  drivers/staging/brcm80211/brcmsmac/stf.h           |   42 -
  93  drivers/staging/brcm80211/brcmsmac/types.h         |  352 -
  94  drivers/staging/brcm80211/brcmsmac/ucode_loader.c  |  109 -
  95  drivers/staging/brcm80211/brcmsmac/ucode_loader.h  |   58 -
  96  drivers/staging/brcm80211/brcmutil/Makefile        |   29 -
  97  drivers/staging/brcm80211/brcmutil/utils.c         |  600 -
  98  drivers/staging/brcm80211/brcmutil/wifi.c          |  136 -
  99  drivers/staging/brcm80211/include/brcm_hw_ids.h    |   59 -
 100  drivers/staging/brcm80211/include/brcmu_utils.h    |  223 -
 101  drivers/staging/brcm80211/include/brcmu_wifi.h     |  275 -
 102  drivers/staging/brcm80211/include/chipcommon.h     |  284 -
 103  drivers/staging/brcm80211/include/defs.h           |  104 -
 104  drivers/staging/brcm80211/include/soc.h            |   90 -
 105  81 files changed, 0 insertions(+), 97064 deletions(-)
 106  delete mode 100644 drivers/staging/brcm80211/Kconfig
 107  delete mode 100644 drivers/staging/brcm80211/Makefile
 108  delete mode 100644 drivers/staging/brcm80211/README
 109  delete mode 100644 drivers/staging/brcm80211/TODO
 110  delete mode 100644 drivers/staging/brcm80211/brcmfmac/Makefile
 111  delete mode 100644 drivers/staging/brcm80211/brcmfmac/bcmchip.h
 112  delete mode 100644 drivers/staging/brcm80211/brcmfmac/bcmsdh.c
 113  delete mode 100644 drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
 114  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd.h
 115  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_bus.h
 116  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_cdc.c
 117  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_common.c
 118  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_dbg.h
 119  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_linux.c
 120  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_proto.h
 121  delete mode 100644 drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
 122  delete mode 100644 drivers/staging/brcm80211/brcmfmac/sdio_host.h
 123  delete mode 100644 drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
 124  delete mode 100644 drivers/staging/brcm80211/brcmfmac/wl_cfg80211.h
 125  delete mode 100644 drivers/staging/brcm80211/brcmsmac/Makefile
 126  delete mode 100644 drivers/staging/brcm80211/brcmsmac/aiutils.c
 127  delete mode 100644 drivers/staging/brcm80211/brcmsmac/aiutils.h
 128  delete mode 100644 drivers/staging/brcm80211/brcmsmac/ampdu.c
 129  delete mode 100644 drivers/staging/brcm80211/brcmsmac/ampdu.h
 130  delete mode 100644 drivers/staging/brcm80211/brcmsmac/antsel.c
 131  delete mode 100644 drivers/staging/brcm80211/brcmsmac/antsel.h
 132  delete mode 100644 drivers/staging/brcm80211/brcmsmac/brcms_trace_events.c
 133  delete mode 100644 drivers/staging/brcm80211/brcmsmac/brcms_trace_events.h
 134  delete mode 100644 drivers/staging/brcm80211/brcmsmac/channel.c
 135  delete mode 100644 drivers/staging/brcm80211/brcmsmac/channel.h
 136  delete mode 100644 drivers/staging/brcm80211/brcmsmac/d11.h
 137  delete mode 100644 drivers/staging/brcm80211/brcmsmac/dma.c
 138  delete mode 100644 drivers/staging/brcm80211/brcmsmac/dma.h
 139  delete mode 100644 drivers/staging/brcm80211/brcmsmac/mac80211_if.c
 140  delete mode 100644 drivers/staging/brcm80211/brcmsmac/mac80211_if.h
 141  delete mode 100644 drivers/staging/brcm80211/brcmsmac/main.c
 142  delete mode 100644 drivers/staging/brcm80211/brcmsmac/main.h
 143  delete mode 100644 drivers/staging/brcm80211/brcmsmac/nicpci.c
 144  delete mode 100644 drivers/staging/brcm80211/brcmsmac/nicpci.h
 145  delete mode 100644 drivers/staging/brcm80211/brcmsmac/otp.c
 146  delete mode 100644 drivers/staging/brcm80211/brcmsmac/otp.h
 147  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c
 148  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_hal.h
 149  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_int.h
 150  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
 151  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.h
 152  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
 153  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_qmath.c
 154  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_qmath.h
 155  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phy_radio.h
 156  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phyreg_n.h
 157  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.c
 158  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.h
 159  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phytbl_n.c
 160  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy/phytbl_n.h
 161  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy_shim.c
 162  delete mode 100644 drivers/staging/brcm80211/brcmsmac/phy_shim.h
 163  delete mode 100644 drivers/staging/brcm80211/brcmsmac/pmu.c
 164  delete mode 100644 drivers/staging/brcm80211/brcmsmac/pmu.h
 165  delete mode 100644 drivers/staging/brcm80211/brcmsmac/pub.h
 166  delete mode 100644 drivers/staging/brcm80211/brcmsmac/rate.c
 167  delete mode 100644 drivers/staging/brcm80211/brcmsmac/rate.h
 168  delete mode 100644 drivers/staging/brcm80211/brcmsmac/scb.h
 169  delete mode 100644 drivers/staging/brcm80211/brcmsmac/srom.c
 170  delete mode 100644 drivers/staging/brcm80211/brcmsmac/srom.h
 171  delete mode 100644 drivers/staging/brcm80211/brcmsmac/stf.c
 172  delete mode 100644 drivers/staging/brcm80211/brcmsmac/stf.h
 173  delete mode 100644 drivers/staging/brcm80211/brcmsmac/types.h
 174  delete mode 100644 drivers/staging/brcm80211/brcmsmac/ucode_loader.c
 175  delete mode 100644 drivers/staging/brcm80211/brcmsmac/ucode_loader.h
 176  delete mode 100644 drivers/staging/brcm80211/brcmutil/Makefile
 177  delete mode 100644 drivers/staging/brcm80211/brcmutil/utils.c
 178  delete mode 100644 drivers/staging/brcm80211/brcmutil/wifi.c
 179  delete mode 100644 drivers/staging/brcm80211/include/brcm_hw_ids.h
 180  delete mode 100644 drivers/staging/brcm80211/include/brcmu_utils.h
 181  delete mode 100644 drivers/staging/brcm80211/include/brcmu_wifi.h
 182  delete mode 100644 drivers/staging/brcm80211/include/chipcommon.h
 183  delete mode 100644 drivers/staging/brcm80211/include/defs.h
 184  delete mode 100644 drivers/staging/brcm80211/include/soc.h
 185 
 186 diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
 187 index eac0a7f..ece5033 100644
 188 --- a/drivers/staging/Kconfig
 189 +++ b/drivers/staging/Kconfig
 190 @@ -44,8 +44,6 @@ source "drivers/staging/wlan-ng/Kconfig"
 191  
 192  source "drivers/staging/echo/Kconfig"
 193  
 194 -source "drivers/staging/brcm80211/Kconfig"
 195 -
 196  source "drivers/staging/comedi/Kconfig"
 197  
 198  source "drivers/staging/olpc_dcon/Kconfig"
 199 diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
 200 index 20be112..bd82674 100644
 201 --- a/drivers/staging/Makefile
 202 +++ b/drivers/staging/Makefile
 203 @@ -14,8 +14,6 @@ obj-$(CONFIG_USBIP_CORE)	+= usbip/
 204  obj-$(CONFIG_W35UND)		+= winbond/
 205  obj-$(CONFIG_PRISM2_USB)	+= wlan-ng/
 206  obj-$(CONFIG_ECHO)		+= echo/
 207 -obj-$(CONFIG_BRCMSMAC)		+= brcm80211/
 208 -obj-$(CONFIG_BRCMFMAC)		+= brcm80211/
 209  obj-$(CONFIG_COMEDI)		+= comedi/
 210  obj-$(CONFIG_FB_OLPC_DCON)	+= olpc_dcon/
 211  obj-$(CONFIG_ASUS_OLED)		+= asus_oled/
 212 diff --git a/drivers/staging/brcm80211/Kconfig b/drivers/staging/brcm80211/Kconfig
 213 deleted file mode 100644
 214 index f51e0f1..0000000
 215 --- a/drivers/staging/brcm80211/Kconfig
 216 +++ /dev/null
 217 @@ -1,35 +0,0 @@
 218 -config BRCMUTIL
 219 -	tristate
 220 -
 221 -config BRCMSMAC
 222 -	tristate "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
 223 -	depends on PCI
 224 -	depends on WLAN && MAC80211
 225 -	depends on BCMA=n
 226 -	select BRCMUTIL
 227 -	select FW_LOADER
 228 -	select CRC_CCITT
 229 -	select CRC8
 230 -	select CORDIC
 231 -	---help---
 232 -	  This module adds support for PCIe wireless adapters based on Broadcom
 233 -	  IEEE802.11n SoftMAC chipsets.  If you choose to build a module, it'll
 234 -	  be called brcmsmac.ko.
 235 -
 236 -config BRCMFMAC
 237 -	tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
 238 -	depends on MMC
 239 -	depends on WLAN && CFG80211
 240 -	select BRCMUTIL
 241 -	select FW_LOADER
 242 -	---help---
 243 -	  This module adds support for embedded wireless adapters based on
 244 -	  Broadcom IEEE802.11n FullMAC chipsets.  This driver uses the kernel's
 245 -	  wireless extensions subsystem.  If you choose to build a module,
 246 -	  it'll be called brcmfmac.ko.
 247 -
 248 -config BRCMDBG
 249 -	bool "Broadcom driver debug functions"
 250 -	depends on BRCMSMAC || BRCMFMAC
 251 -	---help---
 252 -	  Selecting this enables additional code for debug purposes.
 253 diff --git a/drivers/staging/brcm80211/Makefile b/drivers/staging/brcm80211/Makefile
 254 deleted file mode 100644
 255 index f41c047..0000000
 256 --- a/drivers/staging/brcm80211/Makefile
 257 +++ /dev/null
 258 @@ -1,23 +0,0 @@
 259 -#
 260 -# Makefile fragment for Broadcom 802.11n Networking Device Driver
 261 -#
 262 -# Copyright (c) 2010 Broadcom Corporation
 263 -#
 264 -# Permission to use, copy, modify, and/or distribute this software for any
 265 -# purpose with or without fee is hereby granted, provided that the above
 266 -# copyright notice and this permission notice appear in all copies.
 267 -#
 268 -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 269 -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 270 -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 271 -# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 272 -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 273 -# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 274 -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 275 -
 276 -# common flags
 277 -subdir-ccflags-$(CONFIG_BRCMDBG)	+= -DBCMDBG
 278 -
 279 -obj-$(CONFIG_BRCMUTIL)	+= brcmutil/
 280 -obj-$(CONFIG_BRCMFMAC)	+= brcmfmac/
 281 -obj-$(CONFIG_BRCMSMAC)	+= brcmsmac/
 282 diff --git a/drivers/staging/brcm80211/README b/drivers/staging/brcm80211/README
 283 deleted file mode 100644
 284 index bb86b1b..0000000
 285 --- a/drivers/staging/brcm80211/README
 286 +++ /dev/null
 287 @@ -1 +0,0 @@
 288 -refer to: http://linuxwireless.org/en/users/Drivers/brcm80211
 289 diff --git a/drivers/staging/brcm80211/TODO b/drivers/staging/brcm80211/TODO
 290 deleted file mode 100644
 291 index 7f68762..0000000
 292 --- a/drivers/staging/brcm80211/TODO
 293 +++ /dev/null
 294 @@ -1,9 +0,0 @@
 295 -To Do List for Broadcom Mac80211 driver before getting in mainline
 296 -
 297 -Bugs
 298 -====
 299 -- none known at this moment
 300 -
 301 -brcm80211 info page
 302 -=====================
 303 -http://linuxwireless.org/en/users/Drivers/brcm80211
 304 diff --git a/drivers/staging/brcm80211/brcmfmac/Makefile b/drivers/staging/brcm80211/brcmfmac/Makefile
 305 deleted file mode 100644
 306 index a1b7637..0000000
 307 --- a/drivers/staging/brcm80211/brcmfmac/Makefile
 308 +++ /dev/null
 309 @@ -1,33 +0,0 @@
 310 -#
 311 -# Makefile fragment for Broadcom 802.11n Networking Device Driver
 312 -#
 313 -# Copyright (c) 2010 Broadcom Corporation
 314 -#
 315 -# Permission to use, copy, modify, and/or distribute this software for any
 316 -# purpose with or without fee is hereby granted, provided that the above
 317 -# copyright notice and this permission notice appear in all copies.
 318 -#
 319 -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 320 -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 321 -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 322 -# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 323 -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 324 -# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 325 -# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 326 -
 327 -ccflags-y += \
 328 -	-Idrivers/staging/brcm80211/brcmfmac	\
 329 -	-Idrivers/staging/brcm80211/include
 330 -
 331 -DHDOFILES = \
 332 -	wl_cfg80211.o \
 333 -	dhd_cdc.o \
 334 -	dhd_common.o \
 335 -	dhd_sdio.o	\
 336 -	dhd_linux.o \
 337 -	bcmsdh.o \
 338 -	bcmsdh_sdmmc.o
 339 -
 340 -obj-$(CONFIG_BRCMFMAC) += brcmfmac.o
 341 -brcmfmac-objs += $(DHDOFILES)
 342 -ccflags-y += -D__CHECK_ENDIAN__
 343 diff --git a/drivers/staging/brcm80211/brcmfmac/bcmchip.h b/drivers/staging/brcm80211/brcmfmac/bcmchip.h
 344 deleted file mode 100644
 345 index d7d3afd..0000000
 346 --- a/drivers/staging/brcm80211/brcmfmac/bcmchip.h
 347 +++ /dev/null
 348 @@ -1,32 +0,0 @@
 349 -/*
 350 - * Copyright (c) 2011 Broadcom Corporation
 351 - *
 352 - * Permission to use, copy, modify, and/or distribute this software for any
 353 - * purpose with or without fee is hereby granted, provided that the above
 354 - * copyright notice and this permission notice appear in all copies.
 355 - *
 356 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 357 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 358 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 359 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 360 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 361 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 362 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 363 - */
 364 -
 365 -#ifndef _bcmchip_h_
 366 -#define _bcmchip_h_
 367 -
 368 -/* bcm4329 */
 369 -/* SDIO device core, ID 0x829 */
 370 -#define BCM4329_CORE_BUS_BASE		0x18011000
 371 -/* internal memory core, ID 0x80e */
 372 -#define BCM4329_CORE_SOCRAM_BASE	0x18003000
 373 -/* ARM Cortex M3 core, ID 0x82a */
 374 -#define BCM4329_CORE_ARM_BASE		0x18002000
 375 -#define BCM4329_RAMSIZE			0x48000
 376 -/* firmware name */
 377 -#define BCM4329_FW_NAME			"brcm/bcm4329-fullmac-4.bin"
 378 -#define BCM4329_NV_NAME			"brcm/bcm4329-fullmac-4.txt"
 379 -
 380 -#endif				/* _bcmchip_h_ */
 381 diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh.c b/drivers/staging/brcm80211/brcmfmac/bcmsdh.c
 382 deleted file mode 100644
 383 index bff9dcd..0000000
 384 --- a/drivers/staging/brcm80211/brcmfmac/bcmsdh.c
 385 +++ /dev/null
 386 @@ -1,371 +0,0 @@
 387 -/*
 388 - * Copyright (c) 2010 Broadcom Corporation
 389 - *
 390 - * Permission to use, copy, modify, and/or distribute this software for any
 391 - * purpose with or without fee is hereby granted, provided that the above
 392 - * copyright notice and this permission notice appear in all copies.
 393 - *
 394 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 395 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 396 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 397 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 398 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 399 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 400 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 401 - */
 402 -/* ****************** SDIO CARD Interface Functions **************************/
 403 -
 404 -#include <linux/types.h>
 405 -#include <linux/netdevice.h>
 406 -#include <linux/pci.h>
 407 -#include <linux/pci_ids.h>
 408 -#include <linux/sched.h>
 409 -#include <linux/completion.h>
 410 -#include <linux/mmc/sdio.h>
 411 -#include <linux/mmc/sdio_func.h>
 412 -#include <linux/mmc/card.h>
 413 -
 414 -#include <defs.h>
 415 -#include <brcm_hw_ids.h>
 416 -#include <brcmu_utils.h>
 417 -#include <brcmu_wifi.h>
 418 -#include <soc.h>
 419 -#include "dhd.h"
 420 -#include "dhd_bus.h"
 421 -#include "dhd_dbg.h"
 422 -#include "sdio_host.h"
 423 -
 424 -#define SDIOH_API_ACCESS_RETRY_LIMIT	2
 425 -
 426 -static void brcmf_sdioh_irqhandler(struct sdio_func *func)
 427 -{
 428 -	struct brcmf_sdio_dev *sdiodev = dev_get_drvdata(&func->card->dev);
 429 -
 430 -	brcmf_dbg(TRACE, "***IRQHandler\n");
 431 -
 432 -	sdio_release_host(func);
 433 -
 434 -	brcmf_sdbrcm_isr(sdiodev->bus);
 435 -
 436 -	sdio_claim_host(func);
 437 -}
 438 -
 439 -int brcmf_sdcard_intr_reg(struct brcmf_sdio_dev *sdiodev)
 440 -{
 441 -	brcmf_dbg(TRACE, "Entering\n");
 442 -
 443 -	sdio_claim_host(sdiodev->func[1]);
 444 -	sdio_claim_irq(sdiodev->func[1], brcmf_sdioh_irqhandler);
 445 -	sdio_release_host(sdiodev->func[1]);
 446 -
 447 -	return 0;
 448 -}
 449 -
 450 -int brcmf_sdcard_intr_dereg(struct brcmf_sdio_dev *sdiodev)
 451 -{
 452 -	brcmf_dbg(TRACE, "Entering\n");
 453 -
 454 -	sdio_claim_host(sdiodev->func[1]);
 455 -	sdio_release_irq(sdiodev->func[1]);
 456 -	sdio_release_host(sdiodev->func[1]);
 457 -
 458 -	return 0;
 459 -}
 460 -
 461 -u8 brcmf_sdcard_cfg_read(struct brcmf_sdio_dev *sdiodev, uint fnc_num, u32 addr,
 462 -			 int *err)
 463 -{
 464 -	int status;
 465 -	s32 retry = 0;
 466 -	u8 data = 0;
 467 -
 468 -	do {
 469 -		if (retry)	/* wait for 1 ms till bus get settled down */
 470 -			udelay(1000);
 471 -		status = brcmf_sdioh_request_byte(sdiodev, SDIOH_READ, fnc_num,
 472 -						  addr, (u8 *) &data);
 473 -	} while (status != 0
 474 -		 && (retry++ < SDIOH_API_ACCESS_RETRY_LIMIT));
 475 -	if (err)
 476 -		*err = status;
 477 -
 478 -	brcmf_dbg(INFO, "fun = %d, addr = 0x%x, u8data = 0x%x\n",
 479 -		  fnc_num, addr, data);
 480 -
 481 -	return data;
 482 -}
 483 -
 484 -void
 485 -brcmf_sdcard_cfg_write(struct brcmf_sdio_dev *sdiodev, uint fnc_num, u32 addr,
 486 -		       u8 data, int *err)
 487 -{
 488 -	int status;
 489 -	s32 retry = 0;
 490 -
 491 -	do {
 492 -		if (retry)	/* wait for 1 ms till bus get settled down */
 493 -			udelay(1000);
 494 -		status = brcmf_sdioh_request_byte(sdiodev, SDIOH_WRITE, fnc_num,
 495 -						  addr, (u8 *) &data);
 496 -	} while (status != 0
 497 -		 && (retry++ < SDIOH_API_ACCESS_RETRY_LIMIT));
 498 -	if (err)
 499 -		*err = status;
 500 -
 501 -	brcmf_dbg(INFO, "fun = %d, addr = 0x%x, u8data = 0x%x\n",
 502 -		  fnc_num, addr, data);
 503 -}
 504 -
 505 -int
 506 -brcmf_sdcard_set_sbaddr_window(struct brcmf_sdio_dev *sdiodev, u32 address)
 507 -{
 508 -	int err = 0;
 509 -	brcmf_sdcard_cfg_write(sdiodev, SDIO_FUNC_1, SBSDIO_FUNC1_SBADDRLOW,
 510 -			 (address >> 8) & SBSDIO_SBADDRLOW_MASK, &err);
 511 -	if (!err)
 512 -		brcmf_sdcard_cfg_write(sdiodev, SDIO_FUNC_1,
 513 -				       SBSDIO_FUNC1_SBADDRMID,
 514 -				       (address >> 16) & SBSDIO_SBADDRMID_MASK,
 515 -				       &err);
 516 -	if (!err)
 517 -		brcmf_sdcard_cfg_write(sdiodev, SDIO_FUNC_1,
 518 -				       SBSDIO_FUNC1_SBADDRHIGH,
 519 -				       (address >> 24) & SBSDIO_SBADDRHIGH_MASK,
 520 -				       &err);
 521 -
 522 -	return err;
 523 -}
 524 -
 525 -u32 brcmf_sdcard_reg_read(struct brcmf_sdio_dev *sdiodev, u32 addr, uint size)
 526 -{
 527 -	int status;
 528 -	u32 word = 0;
 529 -	uint bar0 = addr & ~SBSDIO_SB_OFT_ADDR_MASK;
 530 -
 531 -	brcmf_dbg(INFO, "fun = 1, addr = 0x%x\n", addr);
 532 -
 533 -	if (bar0 != sdiodev->sbwad) {
 534 -		if (brcmf_sdcard_set_sbaddr_window(sdiodev, bar0))
 535 -			return 0xFFFFFFFF;
 536 -
 537 -		sdiodev->sbwad = bar0;
 538 -	}
 539 -
 540 -	addr &= SBSDIO_SB_OFT_ADDR_MASK;
 541 -	if (size == 4)
 542 -		addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
 543 -
 544 -	status = brcmf_sdioh_request_word(sdiodev, SDIOH_READ, SDIO_FUNC_1,
 545 -					  addr, &word, size);
 546 -
 547 -	sdiodev->regfail = (status != 0);
 548 -
 549 -	brcmf_dbg(INFO, "u32data = 0x%x\n", word);
 550 -
 551 -	/* if ok, return appropriately masked word */
 552 -	if (status == 0) {
 553 -		switch (size) {
 554 -		case sizeof(u8):
 555 -			return word & 0xff;
 556 -		case sizeof(u16):
 557 -			return word & 0xffff;
 558 -		case sizeof(u32):
 559 -			return word;
 560 -		default:
 561 -			sdiodev->regfail = true;
 562 -
 563 -		}
 564 -	}
 565 -
 566 -	/* otherwise, bad sdio access or invalid size */
 567 -	brcmf_dbg(ERROR, "error reading addr 0x%04x size %d\n", addr, size);
 568 -	return 0xFFFFFFFF;
 569 -}
 570 -
 571 -u32 brcmf_sdcard_reg_write(struct brcmf_sdio_dev *sdiodev, u32 addr, uint size,
 572 -			   u32 data)
 573 -{
 574 -	int status;
 575 -	uint bar0 = addr & ~SBSDIO_SB_OFT_ADDR_MASK;
 576 -	int err = 0;
 577 -
 578 -	brcmf_dbg(INFO, "fun = 1, addr = 0x%x, uint%ddata = 0x%x\n",
 579 -		  addr, size * 8, data);
 580 -
 581 -	if (bar0 != sdiodev->sbwad) {
 582 -		err = brcmf_sdcard_set_sbaddr_window(sdiodev, bar0);
 583 -		if (err)
 584 -			return err;
 585 -
 586 -		sdiodev->sbwad = bar0;
 587 -	}
 588 -
 589 -	addr &= SBSDIO_SB_OFT_ADDR_MASK;
 590 -	if (size == 4)
 591 -		addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
 592 -	status =
 593 -	    brcmf_sdioh_request_word(sdiodev, SDIOH_WRITE, SDIO_FUNC_1,
 594 -				     addr, &data, size);
 595 -	sdiodev->regfail = (status != 0);
 596 -
 597 -	if (status == 0)
 598 -		return 0;
 599 -
 600 -	brcmf_dbg(ERROR, "error writing 0x%08x to addr 0x%04x size %d\n",
 601 -		  data, addr, size);
 602 -	return 0xFFFFFFFF;
 603 -}
 604 -
 605 -bool brcmf_sdcard_regfail(struct brcmf_sdio_dev *sdiodev)
 606 -{
 607 -	return sdiodev->regfail;
 608 -}
 609 -
 610 -int
 611 -brcmf_sdcard_recv_buf(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn,
 612 -		      uint flags,
 613 -		      u8 *buf, uint nbytes, struct sk_buff *pkt)
 614 -{
 615 -	int status;
 616 -	uint incr_fix;
 617 -	uint width;
 618 -	uint bar0 = addr & ~SBSDIO_SB_OFT_ADDR_MASK;
 619 -	int err = 0;
 620 -
 621 -	brcmf_dbg(INFO, "fun = %d, addr = 0x%x, size = %d\n", fn, addr, nbytes);
 622 -
 623 -	/* Async not implemented yet */
 624 -	if (flags & SDIO_REQ_ASYNC)
 625 -		return -ENOTSUPP;
 626 -
 627 -	if (bar0 != sdiodev->sbwad) {
 628 -		err = brcmf_sdcard_set_sbaddr_window(sdiodev, bar0);
 629 -		if (err)
 630 -			return err;
 631 -
 632 -		sdiodev->sbwad = bar0;
 633 -	}
 634 -
 635 -	addr &= SBSDIO_SB_OFT_ADDR_MASK;
 636 -
 637 -	incr_fix = (flags & SDIO_REQ_FIXED) ? SDIOH_DATA_FIX : SDIOH_DATA_INC;
 638 -	width = (flags & SDIO_REQ_4BYTE) ? 4 : 2;
 639 -	if (width == 4)
 640 -		addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
 641 -
 642 -	status = brcmf_sdioh_request_buffer(sdiodev, incr_fix, SDIOH_READ,
 643 -					    fn, addr, width, nbytes, buf, pkt);
 644 -
 645 -	return status;
 646 -}
 647 -
 648 -int
 649 -brcmf_sdcard_send_buf(struct brcmf_sdio_dev *sdiodev, u32 addr, uint fn,
 650 -		      uint flags, u8 *buf, uint nbytes, struct sk_buff *pkt)
 651 -{
 652 -	uint incr_fix;
 653 -	uint width;
 654 -	uint bar0 = addr & ~SBSDIO_SB_OFT_ADDR_MASK;
 655 -	int err = 0;
 656 -
 657 -	brcmf_dbg(INFO, "fun = %d, addr = 0x%x, size = %d\n", fn, addr, nbytes);
 658 -
 659 -	/* Async not implemented yet */
 660 -	if (flags & SDIO_REQ_ASYNC)
 661 -		return -ENOTSUPP;
 662 -
 663 -	if (bar0 != sdiodev->sbwad) {
 664 -		err = brcmf_sdcard_set_sbaddr_window(sdiodev, bar0);
 665 -		if (err)
 666 -			return err;
 667 -
 668 -		sdiodev->sbwad = bar0;
 669 -	}
 670 -
 671 -	addr &= SBSDIO_SB_OFT_ADDR_MASK;
 672 -
 673 -	incr_fix = (flags & SDIO_REQ_FIXED) ? SDIOH_DATA_FIX : SDIOH_DATA_INC;
 674 -	width = (flags & SDIO_REQ_4BYTE) ? 4 : 2;
 675 -	if (width == 4)
 676 -		addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
 677 -
 678 -	return brcmf_sdioh_request_buffer(sdiodev, incr_fix, SDIOH_WRITE, fn,
 679 -					  addr, width, nbytes, buf, pkt);
 680 -}
 681 -
 682 -int brcmf_sdcard_rwdata(struct brcmf_sdio_dev *sdiodev, uint rw, u32 addr,
 683 -			u8 *buf, uint nbytes)
 684 -{
 685 -	addr &= SBSDIO_SB_OFT_ADDR_MASK;
 686 -	addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
 687 -
 688 -	return brcmf_sdioh_request_buffer(sdiodev, SDIOH_DATA_INC,
 689 -		(rw ? SDIOH_WRITE : SDIOH_READ), SDIO_FUNC_1,
 690 -		addr, 4, nbytes, buf, NULL);
 691 -}
 692 -
 693 -int brcmf_sdcard_abort(struct brcmf_sdio_dev *sdiodev, uint fn)
 694 -{
 695 -	char t_func = (char)fn;
 696 -	brcmf_dbg(TRACE, "Enter\n");
 697 -
 698 -	/* issue abort cmd52 command through F0 */
 699 -	brcmf_sdioh_request_byte(sdiodev, SDIOH_WRITE, SDIO_FUNC_0,
 700 -				 SDIO_CCCR_ABORT, &t_func);
 701 -
 702 -	brcmf_dbg(TRACE, "Exit\n");
 703 -	return 0;
 704 -}
 705 -
 706 -int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
 707 -{
 708 -	u32 regs = 0;
 709 -	int ret = 0;
 710 -
 711 -	ret = brcmf_sdioh_attach(sdiodev);
 712 -	if (ret)
 713 -		goto out;
 714 -
 715 -	regs = SI_ENUM_BASE;
 716 -
 717 -	/* Report the BAR, to fix if needed */
 718 -	sdiodev->sbwad = SI_ENUM_BASE;
 719 -
 720 -	/* try to attach to the target device */
 721 -	sdiodev->bus = brcmf_sdbrcm_probe(0, 0, 0, 0, regs, sdiodev);
 722 -	if (!sdiodev->bus) {
 723 -		brcmf_dbg(ERROR, "device attach failed\n");
 724 -		ret = -ENODEV;
 725 -		goto out;
 726 -	}
 727 -
 728 -out:
 729 -	if (ret)
 730 -		brcmf_sdio_remove(sdiodev);
 731 -
 732 -	return ret;
 733 -}
 734 -EXPORT_SYMBOL(brcmf_sdio_probe);
 735 -
 736 -int brcmf_sdio_remove(struct brcmf_sdio_dev *sdiodev)
 737 -{
 738 -	if (sdiodev->bus) {
 739 -		brcmf_sdbrcm_disconnect(sdiodev->bus);
 740 -		sdiodev->bus = NULL;
 741 -	}
 742 -
 743 -	brcmf_sdioh_detach(sdiodev);
 744 -
 745 -	sdiodev->sbwad = 0;
 746 -
 747 -	return 0;
 748 -}
 749 -EXPORT_SYMBOL(brcmf_sdio_remove);
 750 -
 751 -void brcmf_sdio_wdtmr_enable(struct brcmf_sdio_dev *sdiodev, bool enable)
 752 -{
 753 -	if (enable)
 754 -		brcmf_sdbrcm_wd_timer(sdiodev->bus, BRCMF_WD_POLL_MS);
 755 -	else
 756 -		brcmf_sdbrcm_wd_timer(sdiodev->bus, 0);
 757 -}
 758 diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
 759 deleted file mode 100644
 760 index e919de2..0000000
 761 --- a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
 762 +++ /dev/null
 763 @@ -1,625 +0,0 @@
 764 -/*
 765 - * Copyright (c) 2010 Broadcom Corporation
 766 - *
 767 - * Permission to use, copy, modify, and/or distribute this software for any
 768 - * purpose with or without fee is hereby granted, provided that the above
 769 - * copyright notice and this permission notice appear in all copies.
 770 - *
 771 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 772 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 773 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 774 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 775 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 776 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 777 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 778 - */
 779 -#include <linux/types.h>
 780 -#include <linux/netdevice.h>
 781 -#include <linux/mmc/sdio.h>
 782 -#include <linux/mmc/core.h>
 783 -#include <linux/mmc/sdio_func.h>
 784 -#include <linux/mmc/sdio_ids.h>
 785 -#include <linux/mmc/card.h>
 786 -#include <linux/suspend.h>
 787 -#include <linux/errno.h>
 788 -#include <linux/sched.h>	/* request_irq() */
 789 -#include <net/cfg80211.h>
 790 -
 791 -#include <defs.h>
 792 -#include <brcm_hw_ids.h>
 793 -#include <brcmu_utils.h>
 794 -#include <brcmu_wifi.h>
 795 -#include "sdio_host.h"
 796 -#include "dhd.h"
 797 -#include "dhd_dbg.h"
 798 -#include "wl_cfg80211.h"
 799 -
 800 -#define SDIO_VENDOR_ID_BROADCOM		0x02d0
 801 -
 802 -#define DMA_ALIGN_MASK	0x03
 803 -
 804 -#define SDIO_DEVICE_ID_BROADCOM_4329	0x4329
 805 -
 806 -#define SDIO_FUNC1_BLOCKSIZE		64
 807 -#define SDIO_FUNC2_BLOCKSIZE		512
 808 -
 809 -/* devices we support, null terminated */
 810 -static const struct sdio_device_id brcmf_sdmmc_ids[] = {
 811 -	{SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4329)},
 812 -	{ /* end: all zeroes */ },
 813 -};
 814 -MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
 815 -
 816 -static bool
 817 -brcmf_pm_resume_error(struct brcmf_sdio_dev *sdiodev)
 818 -{
 819 -	bool is_err = false;
 820 -#ifdef CONFIG_PM_SLEEP
 821 -	is_err = atomic_read(&sdiodev->suspend);
 822 -#endif
 823 -	return is_err;
 824 -}
 825 -
 826 -static void
 827 -brcmf_pm_resume_wait(struct brcmf_sdio_dev *sdiodev, wait_queue_head_t *wq)
 828 -{
 829 -#ifdef CONFIG_PM_SLEEP
 830 -	int retry = 0;
 831 -	while (atomic_read(&sdiodev->suspend) && retry++ != 30)
 832 -		wait_event_timeout(*wq, false, HZ/100);
 833 -#endif
 834 -}
 835 -
 836 -static inline int brcmf_sdioh_f0_write_byte(struct brcmf_sdio_dev *sdiodev,
 837 -					    uint regaddr, u8 *byte)
 838 -{
 839 -	struct sdio_func *sdfunc = sdiodev->func[0];
 840 -	int err_ret;
 841 -
 842 -	/*
 843 -	 * Can only directly write to some F0 registers.
 844 -	 * Handle F2 enable/disable and Abort command
 845 -	 * as a special case.
 846 -	 */
 847 -	if (regaddr == SDIO_CCCR_IOEx) {
 848 -		sdfunc = sdiodev->func[2];
 849 -		if (sdfunc) {
 850 -			sdio_claim_host(sdfunc);
 851 -			if (*byte & SDIO_FUNC_ENABLE_2) {
 852 -				/* Enable Function 2 */
 853 -				err_ret = sdio_enable_func(sdfunc);
 854 -				if (err_ret)
 855 -					brcmf_dbg(ERROR,
 856 -						  "enable F2 failed:%d\n",
 857 -						  err_ret);
 858 -			} else {
 859 -				/* Disable Function 2 */
 860 -				err_ret = sdio_disable_func(sdfunc);
 861 -				if (err_ret)
 862 -					brcmf_dbg(ERROR,
 863 -						  "Disable F2 failed:%d\n",
 864 -						  err_ret);
 865 -			}
 866 -			sdio_release_host(sdfunc);
 867 -		}
 868 -	} else if (regaddr == SDIO_CCCR_ABORT) {
 869 -		sdio_claim_host(sdfunc);
 870 -		sdio_writeb(sdfunc, *byte, regaddr, &err_ret);
 871 -		sdio_release_host(sdfunc);
 872 -	} else if (regaddr < 0xF0) {
 873 -		brcmf_dbg(ERROR, "F0 Wr:0x%02x: write disallowed\n", regaddr);
 874 -		err_ret = -EPERM;
 875 -	} else {
 876 -		sdio_claim_host(sdfunc);
 877 -		sdio_f0_writeb(sdfunc, *byte, regaddr, &err_ret);
 878 -		sdio_release_host(sdfunc);
 879 -	}
 880 -
 881 -	return err_ret;
 882 -}
 883 -
 884 -int brcmf_sdioh_request_byte(struct brcmf_sdio_dev *sdiodev, uint rw, uint func,
 885 -			     uint regaddr, u8 *byte)
 886 -{
 887 -	int err_ret;
 888 -
 889 -	brcmf_dbg(INFO, "rw=%d, func=%d, addr=0x%05x\n", rw, func, regaddr);
 890 -
 891 -	brcmf_pm_resume_wait(sdiodev, &sdiodev->request_byte_wait);
 892 -	if (brcmf_pm_resume_error(sdiodev))
 893 -		return -EIO;
 894 -
 895 -	if (rw && func == 0) {
 896 -		/* handle F0 separately */
 897 -		err_ret = brcmf_sdioh_f0_write_byte(sdiodev, regaddr, byte);
 898 -	} else {
 899 -		sdio_claim_host(sdiodev->func[func]);
 900 -		if (rw) /* CMD52 Write */
 901 -			sdio_writeb(sdiodev->func[func], *byte, regaddr,
 902 -				    &err_ret);
 903 -		else if (func == 0) {
 904 -			*byte = sdio_f0_readb(sdiodev->func[func], regaddr,
 905 -					      &err_ret);
 906 -		} else {
 907 -			*byte = sdio_readb(sdiodev->func[func], regaddr,
 908 -					   &err_ret);
 909 -		}
 910 -		sdio_release_host(sdiodev->func[func]);
 911 -	}
 912 -
 913 -	if (err_ret)
 914 -		brcmf_dbg(ERROR, "Failed to %s byte F%d:@0x%05x=%02x, Err: %d\n",
 915 -			  rw ? "write" : "read", func, regaddr, *byte, err_ret);
 916 -
 917 -	return err_ret;
 918 -}
 919 -
 920 -int brcmf_sdioh_request_word(struct brcmf_sdio_dev *sdiodev,
 921 -			     uint rw, uint func, uint addr, u32 *word,
 922 -			     uint nbytes)
 923 -{
 924 -	int err_ret = -EIO;
 925 -
 926 -	if (func == 0) {
 927 -		brcmf_dbg(ERROR, "Only CMD52 allowed to F0\n");
 928 -		return -EINVAL;
 929 -	}
 930 -
 931 -	brcmf_dbg(INFO, "rw=%d, func=%d, addr=0x%05x, nbytes=%d\n",
 932 -		  rw, func, addr, nbytes);
 933 -
 934 -	brcmf_pm_resume_wait(sdiodev, &sdiodev->request_word_wait);
 935 -	if (brcmf_pm_resume_error(sdiodev))
 936 -		return -EIO;
 937 -	/* Claim host controller */
 938 -	sdio_claim_host(sdiodev->func[func]);
 939 -
 940 -	if (rw) {		/* CMD52 Write */
 941 -		if (nbytes == 4)
 942 -			sdio_writel(sdiodev->func[func], *word, addr,
 943 -				    &err_ret);
 944 -		else if (nbytes == 2)
 945 -			sdio_writew(sdiodev->func[func], (*word & 0xFFFF),
 946 -				    addr, &err_ret);
 947 -		else
 948 -			brcmf_dbg(ERROR, "Invalid nbytes: %d\n", nbytes);
 949 -	} else {		/* CMD52 Read */
 950 -		if (nbytes == 4)
 951 -			*word = sdio_readl(sdiodev->func[func], addr, &err_ret);
 952 -		else if (nbytes == 2)
 953 -			*word = sdio_readw(sdiodev->func[func], addr,
 954 -					   &err_ret) & 0xFFFF;
 955 -		else
 956 -			brcmf_dbg(ERROR, "Invalid nbytes: %d\n", nbytes);
 957 -	}
 958 -
 959 -	/* Release host controller */
 960 -	sdio_release_host(sdiodev->func[func]);
 961 -
 962 -	if (err_ret)
 963 -		brcmf_dbg(ERROR, "Failed to %s word, Err: 0x%08x\n",
 964 -			  rw ? "write" : "read", err_ret);
 965 -
 966 -	return err_ret;
 967 -}
 968 -
 969 -static int
 970 -brcmf_sdioh_request_packet(struct brcmf_sdio_dev *sdiodev, uint fix_inc,
 971 -			   uint write, uint func, uint addr,
 972 -			   struct sk_buff *pkt)
 973 -{
 974 -	bool fifo = (fix_inc == SDIOH_DATA_FIX);
 975 -	u32 SGCount = 0;
 976 -	int err_ret = 0;
 977 -
 978 -	struct sk_buff *pnext;
 979 -
 980 -	brcmf_dbg(TRACE, "Enter\n");
 981 -
 982 -	brcmf_pm_resume_wait(sdiodev, &sdiodev->request_packet_wait);
 983 -	if (brcmf_pm_resume_error(sdiodev))
 984 -		return -EIO;
 985 -
 986 -	/* Claim host controller */
 987 -	sdio_claim_host(sdiodev->func[func]);
 988 -	for (pnext = pkt; pnext; pnext = pnext->next) {
 989 -		uint pkt_len = pnext->len;
 990 -		pkt_len += 3;
 991 -		pkt_len &= 0xFFFFFFFC;
 992 -
 993 -		if ((write) && (!fifo)) {
 994 -			err_ret = sdio_memcpy_toio(sdiodev->func[func], addr,
 995 -						   ((u8 *) (pnext->data)),
 996 -						   pkt_len);
 997 -		} else if (write) {
 998 -			err_ret = sdio_memcpy_toio(sdiodev->func[func], addr,
 999 -						   ((u8 *) (pnext->data)),
1000 -						   pkt_len);
1001 -		} else if (fifo) {
1002 -			err_ret = sdio_readsb(sdiodev->func[func],
1003 -					      ((u8 *) (pnext->data)),
1004 -					      addr, pkt_len);
1005 -		} else {
1006 -			err_ret = sdio_memcpy_fromio(sdiodev->func[func],
1007 -						     ((u8 *) (pnext->data)),
1008 -						     addr, pkt_len);
1009 -		}
1010 -
1011 -		if (err_ret) {
1012 -			brcmf_dbg(ERROR, "%s FAILED %p[%d], addr=0x%05x, pkt_len=%d, ERR=0x%08x\n",
1013 -				  write ? "TX" : "RX", pnext, SGCount, addr,
1014 -				  pkt_len, err_ret);
1015 -		} else {
1016 -			brcmf_dbg(TRACE, "%s xfr'd %p[%d], addr=0x%05x, len=%d\n",
1017 -				  write ? "TX" : "RX", pnext, SGCount, addr,
1018 -				  pkt_len);
1019 -		}
1020 -
1021 -		if (!fifo)
1022 -			addr += pkt_len;
1023 -		SGCount++;
1024 -
1025 -	}
1026 -
1027 -	/* Release host controller */
1028 -	sdio_release_host(sdiodev->func[func]);
1029 -
1030 -	brcmf_dbg(TRACE, "Exit\n");
1031 -	return err_ret;
1032 -}
1033 -
1034 -/*
1035 - * This function takes a buffer or packet, and fixes everything up
1036 - * so that in the end, a DMA-able packet is created.
1037 - *
1038 - * A buffer does not have an associated packet pointer,
1039 - * and may or may not be aligned.
1040 - * A packet may consist of a single packet, or a packet chain.
1041 - * If it is a packet chain, then all the packets in the chain
1042 - * must be properly aligned.
1043 - *
1044 - * If the packet data is not aligned, then there may only be
1045 - * one packet, and in this case,  it is copied to a new
1046 - * aligned packet.
1047 - *
1048 - */
1049 -int brcmf_sdioh_request_buffer(struct brcmf_sdio_dev *sdiodev,
1050 -			       uint fix_inc, uint write, uint func, uint addr,
1051 -			       uint reg_width, uint buflen_u, u8 *buffer,
1052 -			       struct sk_buff *pkt)
1053 -{
1054 -	int Status;
1055 -	struct sk_buff *mypkt = NULL;
1056 -
1057 -	brcmf_dbg(TRACE, "Enter\n");
1058 -
1059 -	brcmf_pm_resume_wait(sdiodev, &sdiodev->request_buffer_wait);
1060 -	if (brcmf_pm_resume_error(sdiodev))
1061 -		return -EIO;
1062 -	/* Case 1: we don't have a packet. */
1063 -	if (pkt == NULL) {
1064 -		brcmf_dbg(DATA, "Creating new %s Packet, len=%d\n",
1065 -			  write ? "TX" : "RX", buflen_u);
1066 -		mypkt = brcmu_pkt_buf_get_skb(buflen_u);
1067 -		if (!mypkt) {
1068 -			brcmf_dbg(ERROR, "brcmu_pkt_buf_get_skb failed: len %d\n",
1069 -				  buflen_u);
1070 -			return -EIO;
1071 -		}
1072 -
1073 -		/* For a write, copy the buffer data into the packet. */
1074 -		if (write)
1075 -			memcpy(mypkt->data, buffer, buflen_u);
1076 -
1077 -		Status = brcmf_sdioh_request_packet(sdiodev, fix_inc, write,
1078 -						    func, addr, mypkt);
1079 -
1080 -		/* For a read, copy the packet data back to the buffer. */
1081 -		if (!write)
1082 -			memcpy(buffer, mypkt->data, buflen_u);
1083 -
1084 -		brcmu_pkt_buf_free_skb(mypkt);
1085 -	} else if (((ulong) (pkt->data) & DMA_ALIGN_MASK) != 0) {
1086 -		/*
1087 -		 * Case 2: We have a packet, but it is unaligned.
1088 -		 * In this case, we cannot have a chain (pkt->next == NULL)
1089 -		 */
1090 -		brcmf_dbg(DATA, "Creating aligned %s Packet, len=%d\n",
1091 -			  write ? "TX" : "RX", pkt->len);
1092 -		mypkt = brcmu_pkt_buf_get_skb(pkt->len);
1093 -		if (!mypkt) {
1094 -			brcmf_dbg(ERROR, "brcmu_pkt_buf_get_skb failed: len %d\n",
1095 -				  pkt->len);
1096 -			return -EIO;
1097 -		}
1098 -
1099 -		/* For a write, copy the buffer data into the packet. */
1100 -		if (write)
1101 -			memcpy(mypkt->data, pkt->data, pkt->len);
1102 -
1103 -		Status = brcmf_sdioh_request_packet(sdiodev, fix_inc, write,
1104 -						    func, addr, mypkt);
1105 -
1106 -		/* For a read, copy the packet data back to the buffer. */
1107 -		if (!write)
1108 -			memcpy(pkt->data, mypkt->data, mypkt->len);
1109 -
1110 -		brcmu_pkt_buf_free_skb(mypkt);
1111 -	} else {		/* case 3: We have a packet and
1112 -				 it is aligned. */
1113 -		brcmf_dbg(DATA, "Aligned %s Packet, direct DMA\n",
1114 -			  write ? "Tx" : "Rx");
1115 -		Status = brcmf_sdioh_request_packet(sdiodev, fix_inc, write,
1116 -						    func, addr, pkt);
1117 -	}
1118 -
1119 -	return Status;
1120 -}
1121 -
1122 -/* Read client card reg */
1123 -static int
1124 -brcmf_sdioh_card_regread(struct brcmf_sdio_dev *sdiodev, int func, u32 regaddr,
1125 -			 int regsize, u32 *data)
1126 -{
1127 -
1128 -	if ((func == 0) || (regsize == 1)) {
1129 -		u8 temp = 0;
1130 -
1131 -		brcmf_sdioh_request_byte(sdiodev, SDIOH_READ, func, regaddr,
1132 -					 &temp);
1133 -		*data = temp;
1134 -		*data &= 0xff;
1135 -		brcmf_dbg(DATA, "byte read data=0x%02x\n", *data);
1136 -	} else {
1137 -		brcmf_sdioh_request_word(sdiodev, SDIOH_READ, func, regaddr,
1138 -					 data, regsize);
1139 -		if (regsize == 2)
1140 -			*data &= 0xffff;
1141 -
1142 -		brcmf_dbg(DATA, "word read data=0x%08x\n", *data);
1143 -	}
1144 -
1145 -	return SUCCESS;
1146 -}
1147 -
1148 -static int brcmf_sdioh_get_cisaddr(struct brcmf_sdio_dev *sdiodev, u32 regaddr)
1149 -{
1150 -	/* read 24 bits and return valid 17 bit addr */
1151 -	int i;
1152 -	u32 scratch, regdata;
1153 -	__le32 scratch_le;
1154 -	u8 *ptr = (u8 *)&scratch_le;
1155 -
1156 -	for (i = 0; i < 3; i++) {
1157 -		if ((brcmf_sdioh_card_regread(sdiodev, 0, regaddr, 1,
1158 -				&regdata)) != SUCCESS)
1159 -			brcmf_dbg(ERROR, "Can't read!\n");
1160 -
1161 -		*ptr++ = (u8) regdata;
1162 -		regaddr++;
1163 -	}
1164 -
1165 -	/* Only the lower 17-bits are valid */
1166 -	scratch = le32_to_cpu(scratch_le);
1167 -	scratch &= 0x0001FFFF;
1168 -	return scratch;
1169 -}
1170 -
1171 -static int brcmf_sdioh_enablefuncs(struct brcmf_sdio_dev *sdiodev)
1172 -{
1173 -	int err_ret;
1174 -	u32 fbraddr;
1175 -	u8 func;
1176 -
1177 -	brcmf_dbg(TRACE, "\n");
1178 -
1179 -	/* Get the Card's common CIS address */
1180 -	sdiodev->func_cis_ptr[0] = brcmf_sdioh_get_cisaddr(sdiodev,
1181 -							   SDIO_CCCR_CIS);
1182 -	brcmf_dbg(INFO, "Card's Common CIS Ptr = 0x%x\n",
1183 -		  sdiodev->func_cis_ptr[0]);
1184 -
1185 -	/* Get the Card's function CIS (for each function) */
1186 -	for (fbraddr = SDIO_FBR_BASE(1), func = 1;
1187 -	     func <= sdiodev->num_funcs; func++, fbraddr += SDIOD_FBR_SIZE) {
1188 -		sdiodev->func_cis_ptr[func] =
1189 -		    brcmf_sdioh_get_cisaddr(sdiodev, SDIO_FBR_CIS + fbraddr);
1190 -		brcmf_dbg(INFO, "Function %d CIS Ptr = 0x%x\n",
1191 -			  func, sdiodev->func_cis_ptr[func]);
1192 -	}
1193 -
1194 -	/* Enable Function 1 */
1195 -	sdio_claim_host(sdiodev->func[1]);
1196 -	err_ret = sdio_enable_func(sdiodev->func[1]);
1197 -	sdio_release_host(sdiodev->func[1]);
1198 -	if (err_ret)
1199 -		brcmf_dbg(ERROR, "Failed to enable F1 Err: 0x%08x\n", err_ret);
1200 -
1201 -	return false;
1202 -}
1203 -
1204 -/*
1205 - *	Public entry points & extern's
1206 - */
1207 -int brcmf_sdioh_attach(struct brcmf_sdio_dev *sdiodev)
1208 -{
1209 -	int err_ret = 0;
1210 -
1211 -	brcmf_dbg(TRACE, "\n");
1212 -
1213 -	sdiodev->num_funcs = 2;
1214 -
1215 -	sdio_claim_host(sdiodev->func[1]);
1216 -	err_ret = sdio_set_block_size(sdiodev->func[1], SDIO_FUNC1_BLOCKSIZE);
1217 -	sdio_release_host(sdiodev->func[1]);
1218 -	if (err_ret) {
1219 -		brcmf_dbg(ERROR, "Failed to set F1 blocksize\n");
1220 -		goto out;
1221 -	}
1222 -
1223 -	sdio_claim_host(sdiodev->func[2]);
1224 -	err_ret = sdio_set_block_size(sdiodev->func[2], SDIO_FUNC2_BLOCKSIZE);
1225 -	sdio_release_host(sdiodev->func[2]);
1226 -	if (err_ret) {
1227 -		brcmf_dbg(ERROR, "Failed to set F2 blocksize\n");
1228 -		goto out;
1229 -	}
1230 -
1231 -	brcmf_sdioh_enablefuncs(sdiodev);
1232 -
1233 -out:
1234 -	brcmf_dbg(TRACE, "Done\n");
1235 -	return err_ret;
1236 -}
1237 -
1238 -void brcmf_sdioh_detach(struct brcmf_sdio_dev *sdiodev)
1239 -{
1240 -	brcmf_dbg(TRACE, "\n");
1241 -
1242 -	/* Disable Function 2 */
1243 -	sdio_claim_host(sdiodev->func[2]);
1244 -	sdio_disable_func(sdiodev->func[2]);
1245 -	sdio_release_host(sdiodev->func[2]);
1246 -
1247 -	/* Disable Function 1 */
1248 -	sdio_claim_host(sdiodev->func[1]);
1249 -	sdio_disable_func(sdiodev->func[1]);
1250 -	sdio_release_host(sdiodev->func[1]);
1251 -
1252 -}
1253 -
1254 -static int brcmf_ops_sdio_probe(struct sdio_func *func,
1255 -			      const struct sdio_device_id *id)
1256 -{
1257 -	int ret = 0;
1258 -	struct brcmf_sdio_dev *sdiodev;
1259 -	brcmf_dbg(TRACE, "Enter\n");
1260 -	brcmf_dbg(TRACE, "func->class=%x\n", func->class);
1261 -	brcmf_dbg(TRACE, "sdio_vendor: 0x%04x\n", func->vendor);
1262 -	brcmf_dbg(TRACE, "sdio_device: 0x%04x\n", func->device);
1263 -	brcmf_dbg(TRACE, "Function#: 0x%04x\n", func->num);
1264 -
1265 -	if (func->num == 1) {
1266 -		if (dev_get_drvdata(&func->card->dev)) {
1267 -			brcmf_dbg(ERROR, "card private drvdata occupied\n");
1268 -			return -ENXIO;
1269 -		}
1270 -		sdiodev = kzalloc(sizeof(struct brcmf_sdio_dev), GFP_KERNEL);
1271 -		if (!sdiodev)
1272 -			return -ENOMEM;
1273 -		sdiodev->func[0] = func->card->sdio_func[0];
1274 -		sdiodev->func[1] = func;
1275 -		dev_set_drvdata(&func->card->dev, sdiodev);
1276 -
1277 -		atomic_set(&sdiodev->suspend, false);
1278 -		init_waitqueue_head(&sdiodev->request_byte_wait);
1279 -		init_waitqueue_head(&sdiodev->request_word_wait);
1280 -		init_waitqueue_head(&sdiodev->request_packet_wait);
1281 -		init_waitqueue_head(&sdiodev->request_buffer_wait);
1282 -	}
1283 -
1284 -	if (func->num == 2) {
1285 -		sdiodev = dev_get_drvdata(&func->card->dev);
1286 -		if ((!sdiodev) || (sdiodev->func[1]->card != func->card))
1287 -			return -ENODEV;
1288 -		sdiodev->func[2] = func;
1289 -
1290 -		brcmf_dbg(TRACE, "F2 found, calling brcmf_sdio_probe...\n");
1291 -		ret = brcmf_sdio_probe(sdiodev);
1292 -	}
1293 -
1294 -	return ret;
1295 -}
1296 -
1297 -static void brcmf_ops_sdio_remove(struct sdio_func *func)
1298 -{
1299 -	struct brcmf_sdio_dev *sdiodev;
1300 -	brcmf_dbg(TRACE, "Enter\n");
1301 -	brcmf_dbg(INFO, "func->class=%x\n", func->class);
1302 -	brcmf_dbg(INFO, "sdio_vendor: 0x%04x\n", func->vendor);
1303 -	brcmf_dbg(INFO, "sdio_device: 0x%04x\n", func->device);
1304 -	brcmf_dbg(INFO, "Function#: 0x%04x\n", func->num);
1305 -
1306 -	if (func->num == 2) {
1307 -		sdiodev = dev_get_drvdata(&func->card->dev);
1308 -		brcmf_dbg(TRACE, "F2 found, calling brcmf_sdio_remove...\n");
1309 -		brcmf_sdio_remove(sdiodev);
1310 -		dev_set_drvdata(&func->card->dev, NULL);
1311 -		kfree(sdiodev);
1312 -	}
1313 -}
1314 -
1315 -#ifdef CONFIG_PM_SLEEP
1316 -static int brcmf_sdio_suspend(struct device *dev)
1317 -{
1318 -	mmc_pm_flag_t sdio_flags;
1319 -	struct brcmf_sdio_dev *sdiodev;
1320 -	struct sdio_func *func = dev_to_sdio_func(dev);
1321 -	int ret = 0;
1322 -
1323 -	brcmf_dbg(TRACE, "\n");
1324 -
1325 -	sdiodev = dev_get_drvdata(&func->card->dev);
1326 -
1327 -	atomic_set(&sdiodev->suspend, true);
1328 -
1329 -	sdio_flags = sdio_get_host_pm_caps(sdiodev->func[1]);
1330 -	if (!(sdio_flags & MMC_PM_KEEP_POWER)) {
1331 -		brcmf_dbg(ERROR, "Host can't keep power while suspended\n");
1332 -		return -EINVAL;
1333 -	}
1334 -
1335 -	ret = sdio_set_host_pm_flags(sdiodev->func[1], MMC_PM_KEEP_POWER);
1336 -	if (ret) {
1337 -		brcmf_dbg(ERROR, "Failed to set pm_flags\n");
1338 -		return ret;
1339 -	}
1340 -
1341 -	brcmf_sdio_wdtmr_enable(sdiodev, false);
1342 -
1343 -	return ret;
1344 -}
1345 -
1346 -static int brcmf_sdio_resume(struct device *dev)
1347 -{
1348 -	struct brcmf_sdio_dev *sdiodev;
1349 -	struct sdio_func *func = dev_to_sdio_func(dev);
1350 -
1351 -	sdiodev = dev_get_drvdata(&func->card->dev);
1352 -	brcmf_sdio_wdtmr_enable(sdiodev, true);
1353 -	atomic_set(&sdiodev->suspend, false);
1354 -	return 0;
1355 -}
1356 -
1357 -static const struct dev_pm_ops brcmf_sdio_pm_ops = {
1358 -	.suspend	= brcmf_sdio_suspend,
1359 -	.resume		= brcmf_sdio_resume,
1360 -};
1361 -#endif	/* CONFIG_PM_SLEEP */
1362 -
1363 -static struct sdio_driver brcmf_sdmmc_driver = {
1364 -	.probe = brcmf_ops_sdio_probe,
1365 -	.remove = brcmf_ops_sdio_remove,
1366 -	.name = "brcmfmac",
1367 -	.id_table = brcmf_sdmmc_ids,
1368 -#ifdef CONFIG_PM_SLEEP
1369 -	.drv = {
1370 -		.pm = &brcmf_sdio_pm_ops,
1371 -	},
1372 -#endif	/* CONFIG_PM_SLEEP */
1373 -};
1374 -
1375 -/* bus register interface */
1376 -int brcmf_bus_register(void)
1377 -{
1378 -	brcmf_dbg(TRACE, "Enter\n");
1379 -
1380 -	return sdio_register_driver(&brcmf_sdmmc_driver);
1381 -}
1382 -
1383 -void brcmf_bus_unregister(void)
1384 -{
1385 -	brcmf_dbg(TRACE, "Enter\n");
1386 -
1387 -	sdio_unregister_driver(&brcmf_sdmmc_driver);
1388 -}
1389 diff --git a/drivers/staging/brcm80211/brcmfmac/dhd.h b/drivers/staging/brcm80211/brcmfmac/dhd.h
1390 deleted file mode 100644
1391 index 3ec7477..0000000
1392 --- a/drivers/staging/brcm80211/brcmfmac/dhd.h
1393 +++ /dev/null
1394 @@ -1,773 +0,0 @@
1395 -/*
1396 - * Copyright (c) 2010 Broadcom Corporation
1397 - *
1398 - * Permission to use, copy, modify, and/or distribute this software for any
1399 - * purpose with or without fee is hereby granted, provided that the above
1400 - * copyright notice and this permission notice appear in all copies.
1401 - *
1402 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1403 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1404 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
1405 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1406 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
1407 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
1408 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1409 - */
1410 -
1411 -/****************
1412 - * Common types *
1413 - */
1414 -
1415 -#ifndef _BRCMF_H_
1416 -#define _BRCMF_H_
1417 -
1418 -#define BRCMF_VERSION_STR		"4.218.248.5"
1419 -
1420 -/*******************************************************************************
1421 - * IO codes that are interpreted by dongle firmware
1422 - ******************************************************************************/
1423 -#define BRCMF_C_UP				2
1424 -#define BRCMF_C_SET_PROMISC			10
1425 -#define BRCMF_C_GET_RATE			12
1426 -#define BRCMF_C_GET_INFRA			19
1427 -#define BRCMF_C_SET_INFRA			20
1428 -#define BRCMF_C_GET_AUTH			21
1429 -#define BRCMF_C_SET_AUTH			22
1430 -#define BRCMF_C_GET_BSSID			23
1431 -#define BRCMF_C_GET_SSID			25
1432 -#define BRCMF_C_SET_SSID			26
1433 -#define BRCMF_C_GET_CHANNEL			29
1434 -#define BRCMF_C_GET_SRL				31
1435 -#define BRCMF_C_GET_LRL				33
1436 -#define BRCMF_C_GET_RADIO			37
1437 -#define BRCMF_C_SET_RADIO			38
1438 -#define BRCMF_C_GET_PHYTYPE			39
1439 -#define BRCMF_C_SET_KEY				45
1440 -#define BRCMF_C_SET_PASSIVE_SCAN		49
1441 -#define BRCMF_C_SCAN				50
1442 -#define BRCMF_C_SCAN_RESULTS			51
1443 -#define BRCMF_C_DISASSOC			52
1444 -#define BRCMF_C_REASSOC				53
1445 -#define BRCMF_C_SET_ROAM_TRIGGER		55
1446 -#define BRCMF_C_SET_ROAM_DELTA			57
1447 -#define BRCMF_C_GET_DTIMPRD			77
1448 -#define BRCMF_C_SET_COUNTRY			84
1449 -#define BRCMF_C_GET_PM				85
1450 -#define BRCMF_C_SET_PM				86
1451 -#define BRCMF_C_GET_AP				117
1452 -#define BRCMF_C_SET_AP				118
1453 -#define BRCMF_C_GET_RSSI			127
1454 -#define BRCMF_C_GET_WSEC			133
1455 -#define BRCMF_C_SET_WSEC			134
1456 -#define BRCMF_C_GET_PHY_NOISE			135
1457 -#define BRCMF_C_GET_BSS_INFO			136
1458 -#define BRCMF_C_SET_SCAN_CHANNEL_TIME		185
1459 -#define BRCMF_C_SET_SCAN_UNASSOC_TIME		187
1460 -#define BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON	201
1461 -#define BRCMF_C_GET_VALID_CHANNELS		217
1462 -#define BRCMF_C_GET_KEY_PRIMARY			235
1463 -#define BRCMF_C_SET_KEY_PRIMARY			236
1464 -#define BRCMF_C_SET_SCAN_PASSIVE_TIME		258
1465 -#define BRCMF_C_GET_VAR				262
1466 -#define BRCMF_C_SET_VAR				263
1467 -
1468 -/* phy types (returned by WLC_GET_PHYTPE) */
1469 -#define	WLC_PHY_TYPE_A		0
1470 -#define	WLC_PHY_TYPE_B		1
1471 -#define	WLC_PHY_TYPE_G		2
1472 -#define	WLC_PHY_TYPE_N		4
1473 -#define	WLC_PHY_TYPE_LP		5
1474 -#define	WLC_PHY_TYPE_SSN	6
1475 -#define	WLC_PHY_TYPE_HT		7
1476 -#define	WLC_PHY_TYPE_LCN	8
1477 -#define	WLC_PHY_TYPE_NULL	0xf
1478 -
1479 -#define BRCMF_EVENTING_MASK_LEN	16
1480 -
1481 -#define TOE_TX_CSUM_OL		0x00000001
1482 -#define TOE_RX_CSUM_OL		0x00000002
1483 -
1484 -#define	BRCMF_BSS_INFO_VERSION	108 /* current ver of brcmf_bss_info struct */
1485 -
1486 -/* size of brcmf_scan_params not including variable length array */
1487 -#define BRCMF_SCAN_PARAMS_FIXED_SIZE 64
1488 -
1489 -/* masks for channel and ssid count */
1490 -#define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
1491 -#define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
1492 -
1493 -#define BRCMF_SCAN_ACTION_START      1
1494 -#define BRCMF_SCAN_ACTION_CONTINUE   2
1495 -#define WL_SCAN_ACTION_ABORT      3
1496 -
1497 -#define BRCMF_ISCAN_REQ_VERSION 1
1498 -
1499 -/* brcmf_iscan_results status values */
1500 -#define BRCMF_SCAN_RESULTS_SUCCESS	0
1501 -#define BRCMF_SCAN_RESULTS_PARTIAL	1
1502 -#define BRCMF_SCAN_RESULTS_PENDING	2
1503 -#define BRCMF_SCAN_RESULTS_ABORTED	3
1504 -#define BRCMF_SCAN_RESULTS_NO_MEM	4
1505 -
1506 -/* Indicates this key is using soft encrypt */
1507 -#define WL_SOFT_KEY	(1 << 0)
1508 -/* primary (ie tx) key */
1509 -#define BRCMF_PRIMARY_KEY	(1 << 1)
1510 -/* Reserved for backward compat */
1511 -#define WL_KF_RES_4	(1 << 4)
1512 -/* Reserved for backward compat */
1513 -#define WL_KF_RES_5	(1 << 5)
1514 -/* Indicates a group key for a IBSS PEER */
1515 -#define WL_IBSS_PEER_GROUP_KEY	(1 << 6)
1516 -
1517 -/* For supporting multiple interfaces */
1518 -#define BRCMF_MAX_IFS	16
1519 -#define BRCMF_DEL_IF	-0xe
1520 -#define BRCMF_BAD_IF	-0xf
1521 -
1522 -#define DOT11_BSSTYPE_ANY			2
1523 -#define DOT11_MAX_DEFAULT_KEYS	4
1524 -
1525 -#define BRCMF_EVENT_MSG_LINK		0x01
1526 -#define BRCMF_EVENT_MSG_FLUSHTXQ	0x02
1527 -#define BRCMF_EVENT_MSG_GROUP		0x04
1528 -
1529 -struct brcmf_event_msg {
1530 -	__be16 version;
1531 -	__be16 flags;
1532 -	__be32 event_type;
1533 -	__be32 status;
1534 -	__be32 reason;
1535 -	__be32 auth_type;
1536 -	__be32 datalen;
1537 -	u8 addr[ETH_ALEN];
1538 -	char ifname[IFNAMSIZ];
1539 -} __packed;
1540 -
1541 -struct brcm_ethhdr {
1542 -	u16 subtype;
1543 -	u16 length;
1544 -	u8 version;
1545 -	u8 oui[3];
1546 -	u16 usr_subtype;
1547 -} __packed;
1548 -
1549 -struct brcmf_event {
1550 -	struct ethhdr eth;
1551 -	struct brcm_ethhdr hdr;
1552 -	struct brcmf_event_msg msg;
1553 -} __packed;
1554 -
1555 -struct dngl_stats {
1556 -	unsigned long rx_packets;	/* total packets received */
1557 -	unsigned long tx_packets;	/* total packets transmitted */
1558 -	unsigned long rx_bytes;	/* total bytes received */
1559 -	unsigned long tx_bytes;	/* total bytes transmitted */
1560 -	unsigned long rx_errors;	/* bad packets received */
1561 -	unsigned long tx_errors;	/* packet transmit problems */
1562 -	unsigned long rx_dropped;	/* packets dropped by dongle */
1563 -	unsigned long tx_dropped;	/* packets dropped by dongle */
1564 -	unsigned long multicast;	/* multicast packets received */
1565 -};
1566 -
1567 -/* event codes sent by the dongle to this driver */
1568 -#define BRCMF_E_SET_SSID			0
1569 -#define BRCMF_E_JOIN				1
1570 -#define BRCMF_E_START				2
1571 -#define BRCMF_E_AUTH				3
1572 -#define BRCMF_E_AUTH_IND			4
1573 -#define BRCMF_E_DEAUTH				5
1574 -#define BRCMF_E_DEAUTH_IND			6
1575 -#define BRCMF_E_ASSOC				7
1576 -#define BRCMF_E_ASSOC_IND			8
1577 -#define BRCMF_E_REASSOC				9
1578 -#define BRCMF_E_REASSOC_IND			10
1579 -#define BRCMF_E_DISASSOC			11
1580 -#define BRCMF_E_DISASSOC_IND			12
1581 -#define BRCMF_E_QUIET_START			13
1582 -#define BRCMF_E_QUIET_END			14
1583 -#define BRCMF_E_BEACON_RX			15
1584 -#define BRCMF_E_LINK				16
1585 -#define BRCMF_E_MIC_ERROR			17
1586 -#define BRCMF_E_NDIS_LINK			18
1587 -#define BRCMF_E_ROAM				19
1588 -#define BRCMF_E_TXFAIL				20
1589 -#define BRCMF_E_PMKID_CACHE			21
1590 -#define BRCMF_E_RETROGRADE_TSF			22
1591 -#define BRCMF_E_PRUNE				23
1592 -#define BRCMF_E_AUTOAUTH			24
1593 -#define BRCMF_E_EAPOL_MSG			25
1594 -#define BRCMF_E_SCAN_COMPLETE			26
1595 -#define BRCMF_E_ADDTS_IND			27
1596 -#define BRCMF_E_DELTS_IND			28
1597 -#define BRCMF_E_BCNSENT_IND			29
1598 -#define BRCMF_E_BCNRX_MSG			30
1599 -#define BRCMF_E_BCNLOST_MSG			31
1600 -#define BRCMF_E_ROAM_PREP			32
1601 -#define BRCMF_E_PFN_NET_FOUND			33
1602 -#define BRCMF_E_PFN_NET_LOST			34
1603 -#define BRCMF_E_RESET_COMPLETE			35
1604 -#define BRCMF_E_JOIN_START			36
1605 -#define BRCMF_E_ROAM_START			37
1606 -#define BRCMF_E_ASSOC_START			38
1607 -#define BRCMF_E_IBSS_ASSOC			39
1608 -#define BRCMF_E_RADIO				40
1609 -#define BRCMF_E_PSM_WATCHDOG			41
1610 -#define BRCMF_E_PROBREQ_MSG			44
1611 -#define BRCMF_E_SCAN_CONFIRM_IND		45
1612 -#define BRCMF_E_PSK_SUP				46
1613 -#define BRCMF_E_COUNTRY_CODE_CHANGED		47
1614 -#define	BRCMF_E_EXCEEDED_MEDIUM_TIME		48
1615 -#define BRCMF_E_ICV_ERROR			49
1616 -#define BRCMF_E_UNICAST_DECODE_ERROR		50
1617 -#define BRCMF_E_MULTICAST_DECODE_ERROR		51
1618 -#define BRCMF_E_TRACE				52
1619 -#define BRCMF_E_IF				54
1620 -#define BRCMF_E_RSSI				56
1621 -#define BRCMF_E_PFN_SCAN_COMPLETE		57
1622 -#define BRCMF_E_EXTLOG_MSG			58
1623 -#define BRCMF_E_ACTION_FRAME			59
1624 -#define BRCMF_E_ACTION_FRAME_COMPLETE		60
1625 -#define BRCMF_E_PRE_ASSOC_IND			61
1626 -#define BRCMF_E_PRE_REASSOC_IND			62
1627 -#define BRCMF_E_CHANNEL_ADOPTED			63
1628 -#define BRCMF_E_AP_STARTED			64
1629 -#define BRCMF_E_DFS_AP_STOP			65
1630 -#define BRCMF_E_DFS_AP_RESUME			66
1631 -#define BRCMF_E_RESERVED1			67
1632 -#define BRCMF_E_RESERVED2			68
1633 -#define BRCMF_E_ESCAN_RESULT			69
1634 -#define BRCMF_E_ACTION_FRAME_OFF_CHAN_COMPLETE	70
1635 -#define BRCMF_E_DCS_REQUEST			73
1636 -
1637 -#define BRCMF_E_FIFO_CREDIT_MAP			74
1638 -
1639 -#define BRCMF_E_LAST				75
1640 -
1641 -#define BRCMF_E_STATUS_SUCCESS			0
1642 -#define BRCMF_E_STATUS_FAIL			1
1643 -#define BRCMF_E_STATUS_TIMEOUT			2
1644 -#define BRCMF_E_STATUS_NO_NETWORKS		3
1645 -#define BRCMF_E_STATUS_ABORT			4
1646 -#define BRCMF_E_STATUS_NO_ACK			5
1647 -#define BRCMF_E_STATUS_UNSOLICITED		6
1648 -#define BRCMF_E_STATUS_ATTEMPT			7
1649 -#define BRCMF_E_STATUS_PARTIAL			8
1650 -#define BRCMF_E_STATUS_NEWSCAN			9
1651 -#define BRCMF_E_STATUS_NEWASSOC			10
1652 -#define BRCMF_E_STATUS_11HQUIET			11
1653 -#define BRCMF_E_STATUS_SUPPRESS			12
1654 -#define BRCMF_E_STATUS_NOCHANS			13
1655 -#define BRCMF_E_STATUS_CS_ABORT			15
1656 -#define BRCMF_E_STATUS_ERROR			16
1657 -
1658 -#define BRCMF_E_REASON_INITIAL_ASSOC		0
1659 -#define BRCMF_E_REASON_LOW_RSSI			1
1660 -#define BRCMF_E_REASON_DEAUTH			2
1661 -#define BRCMF_E_REASON_DISASSOC			3
1662 -#define BRCMF_E_REASON_BCNS_LOST		4
1663 -#define BRCMF_E_REASON_MINTXRATE		9
1664 -#define BRCMF_E_REASON_TXFAIL			10
1665 -
1666 -#define BRCMF_E_REASON_FAST_ROAM_FAILED		5
1667 -#define BRCMF_E_REASON_DIRECTED_ROAM		6
1668 -#define BRCMF_E_REASON_TSPEC_REJECTED		7
1669 -#define BRCMF_E_REASON_BETTER_AP		8
1670 -
1671 -#define BRCMF_E_PRUNE_ENCR_MISMATCH		1
1672 -#define BRCMF_E_PRUNE_BCAST_BSSID		2
1673 -#define BRCMF_E_PRUNE_MAC_DENY			3
1674 -#define BRCMF_E_PRUNE_MAC_NA			4
1675 -#define BRCMF_E_PRUNE_REG_PASSV			5
1676 -#define BRCMF_E_PRUNE_SPCT_MGMT			6
1677 -#define BRCMF_E_PRUNE_RADAR			7
1678 -#define BRCMF_E_RSN_MISMATCH			8
1679 -#define BRCMF_E_PRUNE_NO_COMMON_RATES		9
1680 -#define BRCMF_E_PRUNE_BASIC_RATES		10
1681 -#define BRCMF_E_PRUNE_CIPHER_NA			12
1682 -#define BRCMF_E_PRUNE_KNOWN_STA			13
1683 -#define BRCMF_E_PRUNE_WDS_PEER			15
1684 -#define BRCMF_E_PRUNE_QBSS_LOAD			16
1685 -#define BRCMF_E_PRUNE_HOME_AP			17
1686 -
1687 -#define BRCMF_E_SUP_OTHER			0
1688 -#define BRCMF_E_SUP_DECRYPT_KEY_DATA		1
1689 -#define BRCMF_E_SUP_BAD_UCAST_WEP128		2
1690 -#define BRCMF_E_SUP_BAD_UCAST_WEP40		3
1691 -#define BRCMF_E_SUP_UNSUP_KEY_LEN		4
1692 -#define BRCMF_E_SUP_PW_KEY_CIPHER		5
1693 -#define BRCMF_E_SUP_MSG3_TOO_MANY_IE		6
1694 -#define BRCMF_E_SUP_MSG3_IE_MISMATCH		7
1695 -#define BRCMF_E_SUP_NO_INSTALL_FLAG		8
1696 -#define BRCMF_E_SUP_MSG3_NO_GTK			9
1697 -#define BRCMF_E_SUP_GRP_KEY_CIPHER		10
1698 -#define BRCMF_E_SUP_GRP_MSG1_NO_GTK		11
1699 -#define BRCMF_E_SUP_GTK_DECRYPT_FAIL		12
1700 -#define BRCMF_E_SUP_SEND_FAIL			13
1701 -#define BRCMF_E_SUP_DEAUTH			14
1702 -
1703 -#define BRCMF_E_IF_ADD				1
1704 -#define BRCMF_E_IF_DEL				2
1705 -#define BRCMF_E_IF_CHANGE			3
1706 -
1707 -#define BRCMF_E_IF_ROLE_STA			0
1708 -#define BRCMF_E_IF_ROLE_AP			1
1709 -#define BRCMF_E_IF_ROLE_WDS			2
1710 -
1711 -#define BRCMF_E_LINK_BCN_LOSS			1
1712 -#define BRCMF_E_LINK_DISASSOC			2
1713 -#define BRCMF_E_LINK_ASSOC_REC			3
1714 -#define BRCMF_E_LINK_BSSCFG_DIS			4
1715 -
1716 -/* The level of bus communication with the dongle */
1717 -enum brcmf_bus_state {
1718 -	BRCMF_BUS_DOWN,		/* Not ready for frame transfers */
1719 -	BRCMF_BUS_LOAD,		/* Download access only (CPU reset) */
1720 -	BRCMF_BUS_DATA		/* Ready for frame transfers */
1721 -};
1722 -
1723 -/* Pattern matching filter. Specifies an offset within received packets to
1724 - * start matching, the pattern to match, the size of the pattern, and a bitmask
1725 - * that indicates which bits within the pattern should be matched.
1726 - */
1727 -struct brcmf_pkt_filter_pattern {
1728 -	/*
1729 -	 * Offset within received packet to start pattern matching.
1730 -	 * Offset '0' is the first byte of the ethernet header.
1731 -	 */
1732 -	u32 offset;
1733 -	/* Size of the pattern.  Bitmask must be the same size.*/
1734 -	u32 size_bytes;
1735 -	/*
1736 -	 * Variable length mask and pattern data. mask starts at offset 0.
1737 -	 * Pattern immediately follows mask.
1738 -	 */
1739 -	u8 mask_and_pattern[1];
1740 -};
1741 -
1742 -/* IOVAR "pkt_filter_add" parameter. Used to install packet filters. */
1743 -struct brcmf_pkt_filter {
1744 -	u32 id;		/* Unique filter id, specified by app. */
1745 -	u32 type;		/* Filter type (WL_PKT_FILTER_TYPE_xxx). */
1746 -	u32 negate_match;	/* Negate the result of filter matches */
1747 -	union {			/* Filter definitions */
1748 -		struct brcmf_pkt_filter_pattern pattern; /* Filter pattern */
1749 -	} u;
1750 -};
1751 -
1752 -/* IOVAR "pkt_filter_enable" parameter. */
1753 -struct brcmf_pkt_filter_enable {
1754 -	u32 id;		/* Unique filter id */
1755 -	u32 enable;		/* Enable/disable bool */
1756 -};
1757 -
1758 -/* BSS info structure
1759 - * Applications MUST CHECK ie_offset field and length field to access IEs and
1760 - * next bss_info structure in a vector (in struct brcmf_scan_results)
1761 - */
1762 -struct brcmf_bss_info {
1763 -	__le32 version;		/* version field */
1764 -	__le32 length;		/* byte length of data in this record,
1765 -				 * starting at version and including IEs
1766 -				 */
1767 -	u8 BSSID[ETH_ALEN];
1768 -	__le16 beacon_period;	/* units are Kusec */
1769 -	__le16 capability;	/* Capability information */
1770 -	u8 SSID_len;
1771 -	u8 SSID[32];
1772 -	struct {
1773 -		__le32 count;   /* # rates in this set */
1774 -		u8 rates[16]; /* rates in 500kbps units w/hi bit set if basic */
1775 -	} rateset;		/* supported rates */
1776 -	__le16 chanspec;	/* chanspec for bss */
1777 -	__le16 atim_window;	/* units are Kusec */
1778 -	u8 dtim_period;	/* DTIM period */
1779 -	__le16 RSSI;		/* receive signal strength (in dBm) */
1780 -	s8 phy_noise;		/* noise (in dBm) */
1781 -
1782 -	u8 n_cap;		/* BSS is 802.11N Capable */
1783 -	/* 802.11N BSS Capabilities (based on HT_CAP_*): */
1784 -	__le32 nbss_cap;
1785 -	u8 ctl_ch;		/* 802.11N BSS control channel number */
1786 -	__le32 reserved32[1];	/* Reserved for expansion of BSS properties */
1787 -	u8 flags;		/* flags */
1788 -	u8 reserved[3];	/* Reserved for expansion of BSS properties */
1789 -	u8 basic_mcs[MCSSET_LEN];	/* 802.11N BSS required MCS set */
1790 -
1791 -	__le16 ie_offset;	/* offset at which IEs start, from beginning */
1792 -	__le32 ie_length;	/* byte length of Information Elements */
1793 -	__le16 SNR;		/* average SNR of during frame reception */
1794 -	/* Add new fields here */
1795 -	/* variable length Information Elements */
1796 -};
1797 -
1798 -struct brcm_rateset_le {
1799 -	/* # rates in this set */
1800 -	__le32 count;
1801 -	/* rates in 500kbps units w/hi bit set if basic */
1802 -	u8 rates[WL_NUMRATES];
1803 -};
1804 -
1805 -struct brcmf_ssid {
1806 -	u32 SSID_len;
1807 -	unsigned char SSID[32];
1808 -};
1809 -
1810 -struct brcmf_ssid_le {
1811 -	__le32 SSID_len;
1812 -	unsigned char SSID[32];
1813 -};
1814 -
1815 -struct brcmf_scan_params_le {
1816 -	struct brcmf_ssid_le ssid_le;	/* default: {0, ""} */
1817 -	u8 bssid[ETH_ALEN];	/* default: bcast */
1818 -	s8 bss_type;		/* default: any,
1819 -				 * DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT
1820 -				 */
1821 -	u8 scan_type;	/* flags, 0 use default */
1822 -	__le32 nprobes;	  /* -1 use default, number of probes per channel */
1823 -	__le32 active_time;	/* -1 use default, dwell time per channel for
1824 -				 * active scanning
1825 -				 */
1826 -	__le32 passive_time;	/* -1 use default, dwell time per channel
1827 -				 * for passive scanning
1828 -				 */
1829 -	__le32 home_time;	/* -1 use default, dwell time for the
1830 -				 * home channel between channel scans
1831 -				 */
1832 -	__le32 channel_num;	/* count of channels and ssids that follow
1833 -				 *
1834 -				 * low half is count of channels in
1835 -				 * channel_list, 0 means default (use all
1836 -				 * available channels)
1837 -				 *
1838 -				 * high half is entries in struct brcmf_ssid
1839 -				 * array that follows channel_list, aligned for
1840 -				 * s32 (4 bytes) meaning an odd channel count
1841 -				 * implies a 2-byte pad between end of
1842 -				 * channel_list and first ssid
1843 -				 *
1844 -				 * if ssid count is zero, single ssid in the
1845 -				 * fixed parameter portion is assumed, otherwise
1846 -				 * ssid in the fixed portion is ignored
1847 -				 */
1848 -	__le16 channel_list[1];	/* list of chanspecs */
1849 -};
1850 -
1851 -/* incremental scan struct */
1852 -struct brcmf_iscan_params_le {
1853 -	__le32 version;
1854 -	__le16 action;
1855 -	__le16 scan_duration;
1856 -	struct brcmf_scan_params_le params_le;
1857 -};
1858 -
1859 -struct brcmf_scan_results {
1860 -	u32 buflen;
1861 -	u32 version;
1862 -	u32 count;
1863 -	struct brcmf_bss_info bss_info[1];
1864 -};
1865 -
1866 -struct brcmf_scan_results_le {
1867 -	__le32 buflen;
1868 -	__le32 version;
1869 -	__le32 count;
1870 -	struct brcmf_bss_info bss_info[1];
1871 -};
1872 -
1873 -/* used for association with a specific BSSID and chanspec list */
1874 -struct brcmf_assoc_params_le {
1875 -	/* 00:00:00:00:00:00: broadcast scan */
1876 -	u8 bssid[ETH_ALEN];
1877 -	/* 0: all available channels, otherwise count of chanspecs in
1878 -	 * chanspec_list */
1879 -	__le32 chanspec_num;
1880 -	/* list of chanspecs */
1881 -	__le16 chanspec_list[1];
1882 -};
1883 -
1884 -/* used for join with or without a specific bssid and channel list */
1885 -struct brcmf_join_params {
1886 -	struct brcmf_ssid_le ssid_le;
1887 -	struct brcmf_assoc_params_le params_le;
1888 -};
1889 -
1890 -/* size of brcmf_scan_results not including variable length array */
1891 -#define BRCMF_SCAN_RESULTS_FIXED_SIZE \
1892 -	(sizeof(struct brcmf_scan_results) - sizeof(struct brcmf_bss_info))
1893 -
1894 -/* incremental scan results struct */
1895 -struct brcmf_iscan_results {
1896 -	union {
1897 -		u32 status;
1898 -		__le32 status_le;
1899 -	};
1900 -	union {
1901 -		struct brcmf_scan_results results;
1902 -		struct brcmf_scan_results_le results_le;
1903 -	};
1904 -};
1905 -
1906 -/* size of brcmf_iscan_results not including variable length array */
1907 -#define BRCMF_ISCAN_RESULTS_FIXED_SIZE \
1908 -	(BRCMF_SCAN_RESULTS_FIXED_SIZE + \
1909 -	 offsetof(struct brcmf_iscan_results, results))
1910 -
1911 -struct brcmf_wsec_key {
1912 -	u32 index;		/* key index */
1913 -	u32 len;		/* key length */
1914 -	u8 data[WLAN_MAX_KEY_LEN];	/* key data */
1915 -	u32 pad_1[18];
1916 -	u32 algo;	/* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
1917 -	u32 flags;	/* misc flags */
1918 -	u32 pad_2[3];
1919 -	u32 iv_initialized;	/* has IV been initialized already? */
1920 -	u32 pad_3;
1921 -	/* Rx IV */
1922 -	struct {
1923 -		u32 hi;	/* upper 32 bits of IV */
1924 -		u16 lo;	/* lower 16 bits of IV */
1925 -	} rxiv;
1926 -	u32 pad_4[2];
1927 -	u8 ea[ETH_ALEN];	/* per station */
1928 -};
1929 -
1930 -/*
1931 - * dongle requires same struct as above but with fields in little endian order
1932 - */
1933 -struct brcmf_wsec_key_le {
1934 -	__le32 index;		/* key index */
1935 -	__le32 len;		/* key length */
1936 -	u8 data[WLAN_MAX_KEY_LEN];	/* key data */
1937 -	__le32 pad_1[18];
1938 -	__le32 algo;	/* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
1939 -	__le32 flags;	/* misc flags */
1940 -	__le32 pad_2[3];
1941 -	__le32 iv_initialized;	/* has IV been initialized already? */
1942 -	__le32 pad_3;
1943 -	/* Rx IV */
1944 -	struct {
1945 -		__le32 hi;	/* upper 32 bits of IV */
1946 -		__le16 lo;	/* lower 16 bits of IV */
1947 -	} rxiv;
1948 -	__le32 pad_4[2];
1949 -	u8 ea[ETH_ALEN];	/* per station */
1950 -};
1951 -
1952 -/* Used to get specific STA parameters */
1953 -struct brcmf_scb_val_le {
1954 -	__le32 val;
1955 -	u8 ea[ETH_ALEN];
1956 -};
1957 -
1958 -/* channel encoding */
1959 -struct brcmf_channel_info_le {
1960 -	__le32 hw_channel;
1961 -	__le32 target_channel;
1962 -	__le32 scan_channel;
1963 -};
1964 -
1965 -/* Bus independent dongle command */
1966 -struct brcmf_dcmd {
1967 -	uint cmd;		/* common dongle cmd definition */
1968 -	void *buf;		/* pointer to user buffer */
1969 -	uint len;		/* length of user buffer */
1970 -	u8 set;			/* get or set request (optional) */
1971 -	uint used;		/* bytes read or written (optional) */
1972 -	uint needed;		/* bytes needed (optional) */
1973 -};
1974 -
1975 -/* Forward decls for struct brcmf_pub (see below) */
1976 -struct brcmf_bus;		/* device bus info */
1977 -struct brcmf_proto;	/* device communication protocol info */
1978 -struct brcmf_info;	/* device driver info */
1979 -struct brcmf_cfg80211_dev; /* cfg80211 device info */
1980 -
1981 -/* Common structure for module and instance linkage */
1982 -struct brcmf_pub {
1983 -	/* Linkage ponters */
1984 -	struct brcmf_bus *bus;
1985 -	struct brcmf_proto *prot;
1986 -	struct brcmf_info *info;
1987 -	struct brcmf_cfg80211_dev *config;
1988 -
1989 -	/* Internal brcmf items */
1990 -	bool up;		/* Driver up/down (to OS) */
1991 -	bool txoff;		/* Transmit flow-controlled */
1992 -	enum brcmf_bus_state busstate;
1993 -	uint hdrlen;		/* Total BRCMF header length (proto + bus) */
1994 -	uint maxctl;		/* Max size rxctl request from proto to bus */
1995 -	uint rxsz;		/* Rx buffer size bus module should use */
1996 -	u8 wme_dp;		/* wme discard priority */
1997 -
1998 -	/* Dongle media info */
1999 -	bool iswl;		/* Dongle-resident driver is wl */
2000 -	unsigned long drv_version;	/* Version of dongle-resident driver */
2001 -	u8 mac[ETH_ALEN];		/* MAC address obtained from dongle */
2002 -	struct dngl_stats dstats;	/* Stats for dongle-based data */
2003 -
2004 -	/* Additional stats for the bus level */
2005 -
2006 -	/* Data packets sent to dongle */
2007 -	unsigned long tx_packets;
2008 -	/* Multicast data packets sent to dongle */
2009 -	unsigned long tx_multicast;
2010 -	/* Errors in sending data to dongle */
2011 -	unsigned long tx_errors;
2012 -	/* Control packets sent to dongle */
2013 -	unsigned long tx_ctlpkts;
2014 -	/* Errors sending control frames to dongle */
2015 -	unsigned long tx_ctlerrs;
2016 -	/* Packets sent up the network interface */
2017 -	unsigned long rx_packets;
2018 -	/* Multicast packets sent up the network interface */
2019 -	unsigned long rx_multicast;
2020 -	/* Errors processing rx data packets */
2021 -	unsigned long rx_errors;
2022 -	/* Control frames processed from dongle */
2023 -	unsigned long rx_ctlpkts;
2024 -
2025 -	/* Errors in processing rx control frames */
2026 -	unsigned long rx_ctlerrs;
2027 -	/* Packets dropped locally (no memory) */
2028 -	unsigned long rx_dropped;
2029 -	/* Packets flushed due to unscheduled sendup thread */
2030 -	unsigned long rx_flushed;
2031 -	/* Number of times dpc scheduled by watchdog timer */
2032 -	unsigned long wd_dpc_sched;
2033 -
2034 -	/* Number of packets where header read-ahead was used. */
2035 -	unsigned long rx_readahead_cnt;
2036 -	/* Number of tx packets we had to realloc for headroom */
2037 -	unsigned long tx_realloc;
2038 -	/* Number of flow control pkts recvd */
2039 -	unsigned long fc_packets;
2040 -
2041 -	/* Last error return */
2042 -	int bcmerror;
2043 -	uint tickcnt;
2044 -
2045 -	/* Last error from dongle */
2046 -	int dongle_error;
2047 -
2048 -	/* Suspend disable flag  flag */
2049 -	int suspend_disable_flag;	/* "1" to disable all extra powersaving
2050 -					 during suspend */
2051 -	int in_suspend;		/* flag set to 1 when early suspend called */
2052 -	int dtim_skip;		/* dtim skip , default 0 means wake each dtim */
2053 -
2054 -	/* Pkt filter defination */
2055 -	char *pktfilter[100];
2056 -	int pktfilter_count;
2057 -
2058 -	u8 country_code[BRCM_CNTRY_BUF_SZ];
2059 -	char eventmask[BRCMF_EVENTING_MASK_LEN];
2060 -
2061 -};
2062 -
2063 -struct brcmf_if_event {
2064 -	u8 ifidx;
2065 -	u8 action;
2066 -	u8 flags;
2067 -	u8 bssidx;
2068 -};
2069 -
2070 -struct bcmevent_name {
2071 -	uint event;
2072 -	const char *name;
2073 -};
2074 -
2075 -extern const struct bcmevent_name bcmevent_names[];
2076 -
2077 -/* Indication from bus module regarding presence/insertion of dongle.
2078 - * Return struct brcmf_pub pointer, used as handle to OS module in later calls.
2079 - * Returned structure should have bus and prot pointers filled in.
2080 - * bus_hdrlen specifies required headroom for bus module header.
2081 - */
2082 -extern struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus,
2083 -				      uint bus_hdrlen);
2084 -extern int brcmf_net_attach(struct brcmf_pub *drvr, int idx);
2085 -extern int brcmf_netdev_wait_pend8021x(struct net_device *ndev);
2086 -
2087 -extern s32 brcmf_exec_dcmd(struct net_device *dev, u32 cmd, void *arg, u32 len);
2088 -
2089 -/* Indication from bus module regarding removal/absence of dongle */
2090 -extern void brcmf_detach(struct brcmf_pub *drvr);
2091 -
2092 -/* Indication from bus module to change flow-control state */
2093 -extern void brcmf_txflowcontrol(struct brcmf_pub *drvr, int ifidx, bool on);
2094 -
2095 -extern bool brcmf_c_prec_enq(struct brcmf_pub *drvr, struct pktq *q,
2096 -			 struct sk_buff *pkt, int prec);
2097 -
2098 -/* Receive frame for delivery to OS.  Callee disposes of rxp. */
2099 -extern void brcmf_rx_frame(struct brcmf_pub *drvr, int ifidx,
2100 -			 struct sk_buff *rxp, int numpkt);
2101 -
2102 -/* Return pointer to interface name */
2103 -extern char *brcmf_ifname(struct brcmf_pub *drvr, int idx);
2104 -
2105 -/* Notify tx completion */
2106 -extern void brcmf_txcomplete(struct brcmf_pub *drvr, struct sk_buff *txp,
2107 -			     bool success);
2108 -
2109 -/* Query dongle */
2110 -extern int brcmf_proto_cdc_query_dcmd(struct brcmf_pub *drvr, int ifidx,
2111 -				       uint cmd, void *buf, uint len);
2112 -
2113 -/* OS independent layer functions */
2114 -extern int brcmf_os_proto_block(struct brcmf_pub *drvr);
2115 -extern int brcmf_os_proto_unblock(struct brcmf_pub *drvr);
2116 -#ifdef BCMDBG
2117 -extern int brcmf_write_to_file(struct brcmf_pub *drvr, u8 *buf, int size);
2118 -#endif				/* BCMDBG */
2119 -
2120 -extern int brcmf_ifname2idx(struct brcmf_info *drvr_priv, char *name);
2121 -extern int brcmf_c_host_event(struct brcmf_info *drvr_priv, int *idx,
2122 -			      void *pktdata, struct brcmf_event_msg *,
2123 -			      void **data_ptr);
2124 -
2125 -extern void brcmf_c_init(void);
2126 -
2127 -extern int brcmf_add_if(struct brcmf_info *drvr_priv, int ifidx,
2128 -			struct net_device *ndev, char *name, u8 *mac_addr,
2129 -			u32 flags, u8 bssidx);
2130 -extern void brcmf_del_if(struct brcmf_info *drvr_priv, int ifidx);
2131 -
2132 -/* Send packet to dongle via data channel */
2133 -extern int brcmf_sendpkt(struct brcmf_pub *drvr, int ifidx,\
2134 -			 struct sk_buff *pkt);
2135 -
2136 -extern int brcmf_bus_start(struct brcmf_pub *drvr);
2137 -
2138 -extern void brcmf_c_pktfilter_offload_set(struct brcmf_pub *drvr, char *arg);
2139 -extern void brcmf_c_pktfilter_offload_enable(struct brcmf_pub *drvr, char *arg,
2140 -					     int enable, int master_mode);
2141 -
2142 -#define	BRCMF_DCMD_SMLEN	256	/* "small" cmd buffer required */
2143 -#define BRCMF_DCMD_MEDLEN	1536	/* "med" cmd buffer required */
2144 -#define	BRCMF_DCMD_MAXLEN	8192	/* max length cmd buffer required */
2145 -
2146 -/* message levels */
2147 -#define BRCMF_ERROR_VAL	0x0001
2148 -#define BRCMF_TRACE_VAL	0x0002
2149 -#define BRCMF_INFO_VAL	0x0004
2150 -#define BRCMF_DATA_VAL	0x0008
2151 -#define BRCMF_CTL_VAL	0x0010
2152 -#define BRCMF_TIMER_VAL	0x0020
2153 -#define BRCMF_HDRS_VAL	0x0040
2154 -#define BRCMF_BYTES_VAL	0x0080
2155 -#define BRCMF_INTR_VAL	0x0100
2156 -#define BRCMF_GLOM_VAL	0x0400
2157 -#define BRCMF_EVENT_VAL	0x0800
2158 -#define BRCMF_BTA_VAL	0x1000
2159 -#define BRCMF_ISCAN_VAL 0x2000
2160 -
2161 -/* Enter idle immediately (no timeout) */
2162 -#define BRCMF_IDLE_IMMEDIATE	(-1)
2163 -#define BRCMF_IDLE_ACTIVE	0	/* Do not request any SD clock change
2164 -				 when idle */
2165 -#define BRCMF_IDLE_INTERVAL	1
2166 -
2167 -#endif				/* _BRCMF_H_ */
2168 diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_bus.h b/drivers/staging/brcm80211/brcmfmac/dhd_bus.h
2169 deleted file mode 100644
2170 index a249407..0000000
2171 --- a/drivers/staging/brcm80211/brcmfmac/dhd_bus.h
2172 +++ /dev/null
2173 @@ -1,57 +0,0 @@
2174 -/*
2175 - * Copyright (c) 2010 Broadcom Corporation
2176 - *
2177 - * Permission to use, copy, modify, and/or distribute this software for any
2178 - * purpose with or without fee is hereby granted, provided that the above
2179 - * copyright notice and this permission notice appear in all copies.
2180 - *
2181 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
2182 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
2183 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
2184 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
2185 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
2186 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
2187 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2188 - */
2189 -
2190 -#ifndef _BRCMF_BUS_H_
2191 -#define _BRCMF_BUS_H_
2192 -
2193 -/* Packet alignment for most efficient SDIO (can change based on platform) */
2194 -#define BRCMF_SDALIGN	(1 << 6)
2195 -
2196 -/* watchdog polling interval in ms */
2197 -#define BRCMF_WD_POLL_MS	10
2198 -
2199 -/*
2200 - * Exported from brcmf bus module (brcmf_usb, brcmf_sdio)
2201 - */
2202 -
2203 -/* Indicate (dis)interest in finding dongles. */
2204 -extern int brcmf_bus_register(void);
2205 -extern void brcmf_bus_unregister(void);
2206 -
2207 -/* obtain linux device object providing bus function */
2208 -extern struct device *brcmf_bus_get_device(struct brcmf_bus *bus);
2209 -
2210 -/* Stop bus module: clear pending frames, disable data flow */
2211 -extern void brcmf_sdbrcm_bus_stop(struct brcmf_bus *bus);
2212 -
2213 -/* Initialize bus module: prepare for communication w/dongle */
2214 -extern int brcmf_sdbrcm_bus_init(struct brcmf_pub *drvr);
2215 -
2216 -/* Send a data frame to the dongle.  Callee disposes of txp. */
2217 -extern int brcmf_sdbrcm_bus_txdata(struct brcmf_bus *bus, struct sk_buff *txp);
2218 -
2219 -/* Send/receive a control message to/from the dongle.
2220 - * Expects caller to enforce a single outstanding transaction.
2221 - */
2222 -extern int
2223 -brcmf_sdbrcm_bus_txctl(struct brcmf_bus *bus, unsigned char *msg, uint msglen);
2224 -
2225 -extern int
2226 -brcmf_sdbrcm_bus_rxctl(struct brcmf_bus *bus, unsigned char *msg, uint msglen);
2227 -
2228 -extern void brcmf_sdbrcm_wd_timer(struct brcmf_bus *bus, uint wdtick);
2229 -
2230 -#endif				/* _BRCMF_BUS_H_ */
2231 diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_cdc.c b/drivers/staging/brcm80211/brcmfmac/dhd_cdc.c
2232 deleted file mode 100644
2233 index e34c5c3..0000000
2234 --- a/drivers/staging/brcm80211/brcmfmac/dhd_cdc.c
2235 +++ /dev/null
2236 @@ -1,498 +0,0 @@
2237 -/*
2238 - * Copyright (c) 2010 Broadcom Corporation
2239 - *
2240 - * Permission to use, copy, modify, and/or distribute this software for any
2241 - * purpose with or without fee is hereby granted, provided that the above
2242 - * copyright notice and this permission notice appear in all copies.
2243 - *
2244 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
2245 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
2246 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
2247 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
2248 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
2249 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
2250 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2251 - */
2252 -
2253 -/*******************************************************************************
2254 - * Communicates with the dongle by using dcmd codes.
2255 - * For certain dcmd codes, the dongle interprets string data from the host.
2256 - ******************************************************************************/
2257 -
2258 -#include <linux/types.h>
2259 -#include <linux/netdevice.h>
2260 -#include <linux/sched.h>
2261 -#include <defs.h>
2262 -
2263 -#include <brcmu_utils.h>
2264 -#include <brcmu_wifi.h>
2265 -
2266 -#include "dhd.h"
2267 -#include "dhd_proto.h"
2268 -#include "dhd_bus.h"
2269 -#include "dhd_dbg.h"
2270 -
2271 -struct brcmf_proto_cdc_dcmd {
2272 -	__le32 cmd;	/* dongle command value */
2273 -	__le32 len;	/* lower 16: output buflen;
2274 -			 * upper 16: input buflen (excludes header) */
2275 -	__le32 flags;	/* flag defns given below */
2276 -	__le32 status;	/* status code returned from the device */
2277 -};
2278 -
2279 -/* Max valid buffer size that can be sent to the dongle */
2280 -#define CDC_MAX_MSG_SIZE	(ETH_FRAME_LEN+ETH_FCS_LEN)
2281 -
2282 -/* CDC flag definitions */
2283 -#define CDC_DCMD_ERROR		0x01	/* 1=cmd failed */
2284 -#define CDC_DCMD_SET		0x02	/* 0=get, 1=set cmd */
2285 -#define CDC_DCMD_IF_MASK	0xF000		/* I/F index */
2286 -#define CDC_DCMD_IF_SHIFT	12
2287 -#define CDC_DCMD_ID_MASK	0xFFFF0000	/* id an cmd pairing */
2288 -#define CDC_DCMD_ID_SHIFT	16		/* ID Mask shift bits */
2289 -#define CDC_DCMD_ID(flags)	\
2290 -	(((flags) & CDC_DCMD_ID_MASK) >> CDC_DCMD_ID_SHIFT)
2291 -
2292 -/*
2293 - * BDC header - Broadcom specific extension of CDC.
2294 - * Used on data packets to convey priority across USB.
2295 - */
2296 -#define	BDC_HEADER_LEN		4
2297 -#define BDC_PROTO_VER		1	/* Protocol version */
2298 -#define BDC_FLAG_VER_MASK	0xf0	/* Protocol version mask */
2299 -#define BDC_FLAG_VER_SHIFT	4	/* Protocol version shift */
2300 -#define BDC_FLAG_SUM_GOOD	0x04	/* Good RX checksums */
2301 -#define BDC_FLAG_SUM_NEEDED	0x08	/* Dongle needs to do TX checksums */
2302 -#define BDC_PRIORITY_MASK	0x7
2303 -#define BDC_FLAG2_IF_MASK	0x0f	/* packet rx interface in APSTA */
2304 -#define BDC_FLAG2_IF_SHIFT	0
2305 -
2306 -#define BDC_GET_IF_IDX(hdr) \
2307 -	((int)((((hdr)->flags2) & BDC_FLAG2_IF_MASK) >> BDC_FLAG2_IF_SHIFT))
2308 -#define BDC_SET_IF_IDX(hdr, idx) \
2309 -	((hdr)->flags2 = (((hdr)->flags2 & ~BDC_FLAG2_IF_MASK) | \
2310 -	((idx) << BDC_FLAG2_IF_SHIFT)))
2311 -
2312 -struct brcmf_proto_bdc_header {
2313 -	u8 flags;
2314 -	u8 priority;	/* 802.1d Priority, 4:7 flow control info for usb */
2315 -	u8 flags2;
2316 -	u8 rssi;
2317 -};
2318 -
2319 -
2320 -#define RETRIES 2 /* # of retries to retrieve matching dcmd response */
2321 -#define BUS_HEADER_LEN	(16+BRCMF_SDALIGN) /* Must be atleast SDPCM_RESERVE
2322 -					 * (amount of header tha might be added)
2323 -					 * plus any space that might be needed
2324 -					 * for alignment padding.
2325 -					 */
2326 -#define ROUND_UP_MARGIN	2048	/* Biggest SDIO block size possible for
2327 -				 * round off at the end of buffer
2328 -				 */
2329 -
2330 -struct brcmf_proto {
2331 -	u16 reqid;
2332 -	u8 pending;
2333 -	u32 lastcmd;
2334 -	u8 bus_header[BUS_HEADER_LEN];
2335 -	struct brcmf_proto_cdc_dcmd msg;
2336 -	unsigned char buf[BRCMF_DCMD_MAXLEN + ROUND_UP_MARGIN];
2337 -};
2338 -
2339 -static int brcmf_proto_cdc_msg(struct brcmf_pub *drvr)
2340 -{
2341 -	struct brcmf_proto *prot = drvr->prot;
2342 -	int len = le32_to_cpu(prot->msg.len) +
2343 -			sizeof(struct brcmf_proto_cdc_dcmd);
2344 -
2345 -	brcmf_dbg(TRACE, "Enter\n");
2346 -
2347 -	/* NOTE : cdc->msg.len holds the desired length of the buffer to be
2348 -	 *        returned. Only up to CDC_MAX_MSG_SIZE of this buffer area
2349 -	 *        is actually sent to the dongle
2350 -	 */
2351 -	if (len > CDC_MAX_MSG_SIZE)
2352 -		len = CDC_MAX_MSG_SIZE;
2353 -
2354 -	/* Send request */
2355 -	return brcmf_sdbrcm_bus_txctl(drvr->bus, (unsigned char *)&prot->msg,
2356 -				      len);
2357 -}
2358 -
2359 -static int brcmf_proto_cdc_cmplt(struct brcmf_pub *drvr, u32 id, u32 len)
2360 -{
2361 -	int ret;
2362 -	struct brcmf_proto *prot = drvr->prot;
2363 -
2364 -	brcmf_dbg(TRACE, "Enter\n");
2365 -
2366 -	do {
2367 -		ret = brcmf_sdbrcm_bus_rxctl(drvr->bus,
2368 -				(unsigned char *)&prot->msg,
2369 -				len + sizeof(struct brcmf_proto_cdc_dcmd));
2370 -		if (ret < 0)
2371 -			break;
2372 -	} while (CDC_DCMD_ID(le32_to_cpu(prot->msg.flags)) != id);
2373 -
2374 -	return ret;
2375 -}
2376 -
2377 -int
2378 -brcmf_proto_cdc_query_dcmd(struct brcmf_pub *drvr, int ifidx, uint cmd,
2379 -			       void *buf, uint len)
2380 -{
2381 -	struct brcmf_proto *prot = drvr->prot;
2382 -	struct brcmf_proto_cdc_dcmd *msg = &prot->msg;
2383 -	void *info;
2384 -	int ret = 0, retries = 0;
2385 -	u32 id, flags;
2386 -
2387 -	brcmf_dbg(TRACE, "Enter\n");
2388 -	brcmf_dbg(CTL, "cmd %d len %d\n", cmd, len);
2389 -
2390 -	/* Respond "bcmerror" and "bcmerrorstr" with local cache */
2391 -	if (cmd == BRCMF_C_GET_VAR && buf) {
2392 -		if (!strcmp((char *)buf, "bcmerrorstr")) {
2393 -			strncpy((char *)buf, "bcm_error",
2394 -				BCME_STRLEN);
2395 -			goto done;
2396 -		} else if (!strcmp((char *)buf, "bcmerror")) {
2397 -			*(int *)buf = drvr->dongle_error;
2398 -			goto done;
2399 -		}
2400 -	}
2401 -
2402 -	memset(msg, 0, sizeof(struct brcmf_proto_cdc_dcmd));
2403 -
2404 -	msg->cmd = cpu_to_le32(cmd);
2405 -	msg->len = cpu_to_le32(len);
2406 -	flags = (++prot->reqid << CDC_DCMD_ID_SHIFT);
2407 -	flags = (flags & ~CDC_DCMD_IF_MASK) |
2408 -		(ifidx << CDC_DCMD_IF_SHIFT);
2409 -	msg->flags = cpu_to_le32(flags);
2410 -
2411 -	if (buf)
2412 -		memcpy(prot->buf, buf, len);
2413 -
2414 -	ret = brcmf_proto_cdc_msg(drvr);
2415 -	if (ret < 0) {
2416 -		brcmf_dbg(ERROR, "brcmf_proto_cdc_msg failed w/status %d\n",
2417 -			  ret);
2418 -		goto done;
2419 -	}
2420 -
2421 -retry:
2422 -	/* wait for interrupt and get first fragment */
2423 -	ret = brcmf_proto_cdc_cmplt(drvr, prot->reqid, len);
2424 -	if (ret < 0)
2425 -		goto done;
2426 -
2427 -	flags = le32_to_cpu(msg->flags);
2428 -	id = (flags & CDC_DCMD_ID_MASK) >> CDC_DCMD_ID_SHIFT;
2429 -
2430 -	if ((id < prot->reqid) && (++retries < RETRIES))
2431 -		goto retry;
2432 -	if (id != prot->reqid) {
2433 -		brcmf_dbg(ERROR, "%s: unexpected request id %d (expected %d)\n",
2434 -			  brcmf_ifname(drvr, ifidx), id, prot->reqid);
2435 -		ret = -EINVAL;
2436 -		goto done;
2437 -	}
2438 -
2439 -	/* Check info buffer */
2440 -	info = (void *)&msg[1];
2441 -
2442 -	/* Copy info buffer */
2443 -	if (buf) {
2444 -		if (ret < (int)len)
2445 -			len = ret;
2446 -		memcpy(buf, info, len);
2447 -	}
2448 -
2449 -	/* Check the ERROR flag */
2450 -	if (flags & CDC_DCMD_ERROR) {
2451 -		ret = le32_to_cpu(msg->status);
2452 -		/* Cache error from dongle */
2453 -		drvr->dongle_error = ret;
2454 -	}
2455 -
2456 -done:
2457 -	return ret;
2458 -}
2459 -
2460 -int brcmf_proto_cdc_set_dcmd(struct brcmf_pub *drvr, int ifidx, uint cmd,
2461 -				 void *buf, uint len)
2462 -{
2463 -	struct brcmf_proto *prot = drvr->prot;
2464 -	struct brcmf_proto_cdc_dcmd *msg = &prot->msg;
2465 -	int ret = 0;
2466 -	u32 flags, id;
2467 -
2468 -	brcmf_dbg(TRACE, "Enter\n");
2469 -	brcmf_dbg(CTL, "cmd %d len %d\n", cmd, len);
2470 -
2471 -	memset(msg, 0, sizeof(struct brcmf_proto_cdc_dcmd));
2472 -
2473 -	msg->cmd = cpu_to_le32(cmd);
2474 -	msg->len = cpu_to_le32(len);
2475 -	flags = (++prot->reqid << CDC_DCMD_ID_SHIFT) | CDC_DCMD_SET;
2476 -	flags = (flags & ~CDC_DCMD_IF_MASK) |
2477 -		(ifidx << CDC_DCMD_IF_SHIFT);
2478 -	msg->flags = cpu_to_le32(flags);
2479 -
2480 -	if (buf)
2481 -		memcpy(prot->buf, buf, len);
2482 -
2483 -	ret = brcmf_proto_cdc_msg(drvr);
2484 -	if (ret < 0)
2485 -		goto done;
2486 -
2487 -	ret = brcmf_proto_cdc_cmplt(drvr, prot->reqid, len);
2488 -	if (ret < 0)
2489 -		goto done;
2490 -
2491 -	flags = le32_to_cpu(msg->flags);
2492 -	id = (flags & CDC_DCMD_ID_MASK) >> CDC_DCMD_ID_SHIFT;
2493 -
2494 -	if (id != prot->reqid) {
2495 -		brcmf_dbg(ERROR, "%s: unexpected request id %d (expected %d)\n",
2496 -			  brcmf_ifname(drvr, ifidx), id, prot->reqid);
2497 -		ret = -EINVAL;
2498 -		goto done;
2499 -	}
2500 -
2501 -	/* Check the ERROR flag */
2502 -	if (flags & CDC_DCMD_ERROR) {
2503 -		ret = le32_to_cpu(msg->status);
2504 -		/* Cache error from dongle */
2505 -		drvr->dongle_error = ret;
2506 -	}
2507 -
2508 -done:
2509 -	return ret;
2510 -}
2511 -
2512 -int
2513 -brcmf_proto_dcmd(struct brcmf_pub *drvr, int ifidx, struct brcmf_dcmd *dcmd,
2514 -		  int len)
2515 -{
2516 -	struct brcmf_proto *prot = drvr->prot;
2517 -	int ret = -1;
2518 -
2519 -	if (drvr->busstate == BRCMF_BUS_DOWN) {
2520 -		brcmf_dbg(ERROR, "bus is down. we have nothing to do.\n");
2521 -		return ret;
2522 -	}
2523 -	brcmf_os_proto_block(drvr);
2524 -
2525 -	brcmf_dbg(TRACE, "Enter\n");
2526 -
2527 -	if (len > BRCMF_DCMD_MAXLEN)
2528 -		goto done;
2529 -
2530 -	if (prot->pending == true) {
2531 -		brcmf_dbg(TRACE, "CDC packet is pending!!!! cmd=0x%x (%lu) lastcmd=0x%x (%lu)\n",
2532 -			  dcmd->cmd, (unsigned long)dcmd->cmd, prot->lastcmd,
2533 -			  (unsigned long)prot->lastcmd);
2534 -		if (dcmd->cmd == BRCMF_C_SET_VAR ||
2535 -		    dcmd->cmd == BRCMF_C_GET_VAR)
2536 -			brcmf_dbg(TRACE, "iovar cmd=%s\n", (char *)dcmd->buf);
2537 -
2538 -		goto done;
2539 -	}
2540 -
2541 -	prot->pending = true;
2542 -	prot->lastcmd = dcmd->cmd;
2543 -	if (dcmd->set)
2544 -		ret = brcmf_proto_cdc_set_dcmd(drvr, ifidx, dcmd->cmd,
2545 -						   dcmd->buf, len);
2546 -	else {
2547 -		ret = brcmf_proto_cdc_query_dcmd(drvr, ifidx, dcmd->cmd,
2548 -						     dcmd->buf, len);
2549 -		if (ret > 0)
2550 -			dcmd->used = ret -
2551 -					sizeof(struct brcmf_proto_cdc_dcmd);
2552 -	}
2553 -
2554 -	if (ret >= 0)
2555 -		ret = 0;
2556 -	else {
2557 -		struct brcmf_proto_cdc_dcmd *msg = &prot->msg;
2558 -		/* len == needed when set/query fails from dongle */
2559 -		dcmd->needed = le32_to_cpu(msg->len);
2560 -	}
2561 -
2562 -	/* Intercept the wme_dp dongle cmd here */
2563 -	if (!ret && dcmd->cmd == BRCMF_C_SET_VAR &&
2564 -	    !strcmp(dcmd->buf, "wme_dp")) {
2565 -		int slen;
2566 -		__le32 val = 0;
2567 -
2568 -		slen = strlen("wme_dp") + 1;
2569 -		if (len >= (int)(slen + sizeof(int)))
2570 -			memcpy(&val, (char *)dcmd->buf + slen, sizeof(int));
2571 -		drvr->wme_dp = (u8) le32_to_cpu(val);
2572 -	}
2573 -
2574 -	prot->pending = false;
2575 -
2576 -done:
2577 -	brcmf_os_proto_unblock(drvr);
2578 -
2579 -	return ret;
2580 -}
2581 -
2582 -static bool pkt_sum_needed(struct sk_buff *skb)
2583 -{
2584 -	return skb->ip_summed == CHECKSUM_PARTIAL;
2585 -}
2586 -
2587 -static void pkt_set_sum_good(struct sk_buff *skb, bool x)
2588 -{
2589 -	skb->ip_summed = (x ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE);
2590 -}
2591 -
2592 -void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx,
2593 -			 struct sk_buff *pktbuf)
2594 -{
2595 -	struct brcmf_proto_bdc_header *h;
2596 -
2597 -	brcmf_dbg(TRACE, "Enter\n");
2598 -
2599 -	/* Push BDC header used to convey priority for buses that don't */
2600 -
2601 -	skb_push(pktbuf, BDC_HEADER_LEN);
2602 -
2603 -	h = (struct brcmf_proto_bdc_header *)(pktbuf->data);
2604 -
2605 -	h->flags = (BDC_PROTO_VER << BDC_FLAG_VER_SHIFT);
2606 -	if (pkt_sum_needed(pktbuf))
2607 -		h->flags |= BDC_FLAG_SUM_NEEDED;
2608 -
2609 -	h->priority = (pktbuf->priority & BDC_PRIORITY_MASK);
2610 -	h->flags2 = 0;
2611 -	h->rssi = 0;
2612 -	BDC_SET_IF_IDX(h, ifidx);
2613 -}
2614 -
2615 -int brcmf_proto_hdrpull(struct brcmf_pub *drvr, int *ifidx,
2616 -			struct sk_buff *pktbuf)
2617 -{
2618 -	struct brcmf_proto_bdc_header *h;
2619 -
2620 -	brcmf_dbg(TRACE, "Enter\n");
2621 -
2622 -	/* Pop BDC header used to convey priority for buses that don't */
2623 -
2624 -	if (pktbuf->len < BDC_HEADER_LEN) {
2625 -		brcmf_dbg(ERROR, "rx data too short (%d < %d)\n",
2626 -			  pktbuf->len, BDC_HEADER_LEN);
2627 -		return -EBADE;
2628 -	}
2629 -
2630 -	h = (struct brcmf_proto_bdc_header *)(pktbuf->data);
2631 -
2632 -	*ifidx = BDC_GET_IF_IDX(h);
2633 -	if (*ifidx >= BRCMF_MAX_IFS) {
2634 -		brcmf_dbg(ERROR, "rx data ifnum out of range (%d)\n", *ifidx);
2635 -		return -EBADE;
2636 -	}
2637 -
2638 -	if (((h->flags & BDC_FLAG_VER_MASK) >> BDC_FLAG_VER_SHIFT) !=
2639 -	    BDC_PROTO_VER) {
2640 -		brcmf_dbg(ERROR, "%s: non-BDC packet received, flags 0x%x\n",
2641 -			  brcmf_ifname(drvr, *ifidx), h->flags);
2642 -		return -EBADE;
2643 -	}
2644 -
2645 -	if (h->flags & BDC_FLAG_SUM_GOOD) {
2646 -		brcmf_dbg(INFO, "%s: BDC packet received with good rx-csum, flags 0x%x\n",
2647 -			  brcmf_ifname(drvr, *ifidx), h->flags);
2648 -		pkt_set_sum_good(pktbuf, true);
2649 -	}
2650 -
2651 -	pktbuf->priority = h->priority & BDC_PRIORITY_MASK;
2652 -
2653 -	skb_pull(pktbuf, BDC_HEADER_LEN);
2654 -
2655 -	return 0;
2656 -}
2657 -
2658 -int brcmf_proto_attach(struct brcmf_pub *drvr)
2659 -{
2660 -	struct brcmf_proto *cdc;
2661 -
2662 -	cdc = kzalloc(sizeof(struct brcmf_proto), GFP_ATOMIC);
2663 -	if (!cdc)
2664 -		goto fail;
2665 -
2666 -	/* ensure that the msg buf directly follows the cdc msg struct */
2667 -	if ((unsigned long)(&cdc->msg + 1) != (unsigned long)cdc->buf) {
2668 -		brcmf_dbg(ERROR, "struct brcmf_proto is not correctly defined\n");
2669 -		goto fail;
2670 -	}
2671 -
2672 -	drvr->prot = cdc;
2673 -	drvr->hdrlen += BDC_HEADER_LEN;
2674 -	drvr->maxctl = BRCMF_DCMD_MAXLEN +
2675 -			sizeof(struct brcmf_proto_cdc_dcmd) + ROUND_UP_MARGIN;
2676 -	return 0;
2677 -
2678 -fail:
2679 -	kfree(cdc);
2680 -	return -ENOMEM;
2681 -}
2682 -
2683 -/* ~NOTE~ What if another thread is waiting on the semaphore?  Holding it? */
2684 -void brcmf_proto_detach(struct brcmf_pub *drvr)
2685 -{
2686 -	kfree(drvr->prot);
2687 -	drvr->prot = NULL;
2688 -}
2689 -
2690 -void brcmf_proto_dstats(struct brcmf_pub *drvr)
2691 -{
2692 -	/* No stats from dongle added yet, copy bus stats */
2693 -	drvr->dstats.tx_packets = drvr->tx_packets;
2694 -	drvr->dstats.tx_errors = drvr->tx_errors;
2695 -	drvr->dstats.rx_packets = drvr->rx_packets;
2696 -	drvr->dstats.rx_errors = drvr->rx_errors;
2697 -	drvr->dstats.rx_dropped = drvr->rx_dropped;
2698 -	drvr->dstats.multicast = drvr->rx_multicast;
2699 -	return;
2700 -}
2701 -
2702 -int brcmf_proto_init(struct brcmf_pub *drvr)
2703 -{
2704 -	int ret = 0;
2705 -	char buf[128];
2706 -
2707 -	brcmf_dbg(TRACE, "Enter\n");
2708 -
2709 -	brcmf_os_proto_block(drvr);
2710 -
2711 -	/* Get the device MAC address */
2712 -	strcpy(buf, "cur_etheraddr");
2713 -	ret = brcmf_proto_cdc_query_dcmd(drvr, 0, BRCMF_C_GET_VAR,
2714 -					  buf, sizeof(buf));
2715 -	if (ret < 0) {
2716 -		brcmf_os_proto_unblock(drvr);
2717 -		return ret;
2718 -	}
2719 -	memcpy(drvr->mac, buf, ETH_ALEN);
2720 -
2721 -	brcmf_os_proto_unblock(drvr);
2722 -
2723 -	ret = brcmf_c_preinit_dcmds(drvr);
2724 -
2725 -	/* Always assumes wl for now */
2726 -	drvr->iswl = true;
2727 -
2728 -	return ret;
2729 -}
2730 -
2731 -void brcmf_proto_stop(struct brcmf_pub *drvr)
2732 -{
2733 -	/* Nothing to do for CDC */
2734 -}
2735 diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_common.c b/drivers/staging/brcm80211/brcmfmac/dhd_common.c
2736 deleted file mode 100644
2737 index 4075fd7..0000000
2738 --- a/drivers/staging/brcm80211/brcmfmac/dhd_common.c
2739 +++ /dev/null
2740 @@ -1,872 +0,0 @@
2741 -/*
2742 - * Copyright (c) 2010 Broadcom Corporation
2743 - *
2744 - * Permission to use, copy, modify, and/or distribute this software for any
2745 - * purpose with or without fee is hereby granted, provided that the above
2746 - * copyright notice and this permission notice appear in all copies.
2747 - *
2748 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
2749 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
2750 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
2751 - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
2752 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
2753 - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
2754 - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2755 - */
2756 -#include <linux/kernel.h>
2757 -#include <linux/string.h>
2758 -#include <linux/sched.h>
2759 -#include <linux/netdevice.h>
2760 -#include <asm/unaligned.h>
2761 -#include <defs.h>
2762 -#include <brcmu_wifi.h>
2763 -#include <brcmu_utils.h>
2764 -#include "dhd.h"
2765 -#include "dhd_bus.h"
2766 -#include "dhd_proto.h"
2767 -#include "dhd_dbg.h"
2768 -
2769 -#define BRCM_OUI			"\x00\x10\x18"
2770 -#define DOT11_OUI_LEN			3
2771 -#define BCMILCP_BCM_SUBTYPE_EVENT	1
2772 -#define PKTFILTER_BUF_SIZE		2048
2773 -#define BRCMF_ARPOL_MODE		0xb	/* agent|snoop|peer_autoreply */
2774 -
2775 -int brcmf_msg_level;
2776 -
2777 -#define MSGTRACE_VERSION	1
2778 -
2779 -#define BRCMF_PKT_FILTER_FIXED_LEN	offsetof(struct brcmf_pkt_filter, u)
2780 -#define BRCMF_PKT_FILTER_PATTERN_FIXED_LEN	\
2781 -	offsetof(struct brcmf_pkt_filter_pattern, mask_and_pattern)
2782 -
2783 -#ifdef BCMDBG
2784 -static const char brcmf_version[] =
2785 -	"Dongle Host Driver, version " BRCMF_VERSION_STR "\nCompiled on "
2786 -	__DATE__ " at " __TIME__;
2787 -#else
2788 -static const char brcmf_version[] =
2789 -	"Dongle Host Driver, version " BRCMF_VERSION_STR;
2790 -#endif
2791 -
2792 -/* Message trace header */
2793 -struct msgtrace_hdr {
2794 -	u8 version;
2795 -	u8 spare;
2796 -	__be16 len;		/* Len of the trace */
2797 -	__be32 seqnum;		/* Sequence number of message. Useful
2798 -				 * if the messsage has been lost
2799 -				 * because of DMA error or a bus reset
2800 -				 * (ex: SDIO Func2)
2801 -				 */
2802 -	__be32 discarded_bytes;	/* Number of discarded bytes because of
2803 -				 trace overflow  */
2804 -	__be32 discarded_printf;	/* Number of discarded printf
2805 -				 because of trace overflow */
2806 -} __packed;
2807 -
2808 -void brcmf_c_init(void)
2809 -{
2810 -	/* Init global variables at run-time, not as part of the declaration.
2811 -	 * This is required to support init/de-init of the driver.
2812 -	 * Initialization
2813 -	 * of globals as part of the declaration results in non-deterministic
2814 -	 * behaviour since the value of the globals may be different on the
2815 -	 * first time that the driver is initialized vs subsequent
2816 -	 * initializations.
2817 -	 */
2818 -	brcmf_msg_level = BRCMF_ERROR_VAL;
2819 -}
2820 -
2821 -bool brcmf_c_prec_enq(struct brcmf_pub *drvr, struct pktq *q,
2822 -		      struct sk_buff *pkt, int prec)
2823 -{
2824 -	struct sk_buff *p;
2825 -	int eprec = -1;		/* precedence to evict from */
2826 -	bool discard_oldest;
2827 -
2828 -	/* Fast case, precedence queue is not full and we are also not
2829 -	 * exceeding total queue length
2830 -	 */
2831 -	if (!pktq_pfull(q, prec) && !pktq_full(q)) {
2832 -		brcmu_pktq_penq(q, prec, pkt);
2833 -		return true;
2834 -	}
2835 -
2836 -	/* Determine precedence from which to evict packet, if any */
2837 -	if (pktq_pfull(q, prec))
2838 -		eprec = prec;
2839 -	else if (pktq_full(q)) {
2840 -		p = brcmu_pktq_peek_tail(q, &eprec);
2841 -		if (eprec > prec)
2842 -			return false;
2843 -	}
2844 -
2845 -	/* Evict if needed */
2846 -	if (eprec >= 0) {
2847 -		/* Detect queueing to unconfigured precedence */
2848 -		discard_oldest = ac_bitmap_tst(drvr->wme_dp, eprec);
2849 -		if (eprec == prec && !discard_oldest)
2850 -			return false;	/* refuse newer (incoming) packet */
2851 -		/* Evict packet according to discard policy */
2852 -		p = discard_oldest ? brcmu_pktq_pdeq(q, eprec) :
2853 -			brcmu_pktq_pdeq_tail(q, eprec);
2854 -		if (p == NULL)
2855 -			brcmf_dbg(ERROR, "brcmu_pktq_penq() failed, oldest %d\n",
2856 -				  discard_oldest);
2857 -
2858 -		brcmu_pkt_buf_free_skb(p);
2859 -	}
2860 -
2861 -	/* Enqueue */
2862 -	p = brcmu_pktq_penq(q, prec, pkt);
2863 -	if (p == NULL)
2864 -		brcmf_dbg(ERROR, "brcmu_pktq_penq() failed\n");
2865 -
2866 -	return p != NULL;
2867 -}
2868 -
2869 -#ifdef BCMDBG
2870 -static void
2871 -brcmf_c_show_host_event(struct brcmf_event_msg *event, void *event_data)
2872 -{
2873 -	uint i, status, reason;
2874 -	bool group = false, flush_txq = false, link = false;
2875 -	char *auth_str, *event_name;
2876 -	unsigned char *buf;
2877 -	char err_msg[256], eabuf[ETHER_ADDR_STR_LEN];
2878 -	static struct {
2879 -		uint event;
2880 -		char *event_name;
2881 -	} event_names[] = {
2882 -		{
2883 -		BRCMF_E_SET_SSID, "SET_SSID"}, {
2884 -		BRCMF_E_JOIN, "JOIN"}, {
2885 -		BRCMF_E_START, "START"}, {
2886 -		BRCMF_E_AUTH, "AUTH"}, {
2887 -		BRCMF_E_AUTH_IND, "AUTH_IND"}, {
2888 -		BRCMF_E_DEAUTH, "DEAUTH"}, {
2889 -		BRCMF_E_DEAUTH_IND, "DEAUTH_IND"}, {
2890 -		BRCMF_E_ASSOC, "ASSOC"}, {
2891 -		BRCMF_E_ASSOC_IND, "ASSOC_IND"}, {
2892 -		BRCMF_E_REASSOC, "REASSOC"}, {
2893 -		BRCMF_E_REASSOC_IND, "REASSOC_IND"}, {
2894 -		BRCMF_E_DISASSOC, "DISASSOC"}, {
2895 -		BRCMF_E_DISASSOC_IND, "DISASSOC_IND"}, {
2896 -		BRCMF_E_QUIET_START, "START_QUIET"}, {
2897 -		BRCMF_E_QUIET_END, "END_QUIET"}, {
2898 -		BRCMF_E_BEACON_RX, "BEACON_RX"}, {
2899 -		BRCMF_E_LINK, "LINK"}, {
2900 -		BRCMF_E_MIC_ERROR, "MIC_ERROR"}, {
2901 -		BRCMF_E_NDIS_LINK, "NDIS_LINK"}, {
2902 -		BRCMF_E_ROAM, "ROAM"}, {
2903 -		BRCMF_E_TXFAIL, "TXFAIL"}, {
2904 -		BRCMF_E_PMKID_CACHE, "PMKID_CACHE"}, {
2905 -		BRCMF_E_RETROGRADE_TSF, "RETROGRADE_TSF"}, {
2906 -		BRCMF_E_PRUNE, "PRUNE"}, {
2907 -		BRCMF_E_AUTOAUTH, "AUTOAUTH"}, {
2908 -		BRCMF_E_EAPOL_MSG, "EAPOL_MSG"}, {
2909 -		BRCMF_E_SCAN_COMPLETE, "SCAN_COMPLETE"}, {
2910 -		BRCMF_E_ADDTS_IND, "ADDTS_IND"}, {
2911 -		BRCMF_E_DELTS_IND, "DELTS_IND"}, {
2912 -		BRCMF_E_BCNSENT_IND, "BCNSENT_IND"}, {
2913 -		BRCMF_E_BCNRX_MSG, "BCNRX_MSG"}, {
2914 -		BRCMF_E_BCNLOST_MSG, "BCNLOST_MSG"}, {
2915 -		BRCMF_E_ROAM_PREP, "ROAM_PREP"}, {
2916 -		BRCMF_E_PFN_NET_FOUND, "PNO_NET_FOUND"}, {
2917 -		BRCMF_E_PFN_NET_LOST, "PNO_NET_LOST"}, {
2918 -		BRCMF_E_RESET_COMPLETE, "RESET_COMPLETE"}, {
2919 -		BRCMF_E_JOIN_START, "JOIN_START"}, {
2920 -		BRCMF_E_ROAM_START, "ROAM_START"}, {
2921 -		BRCMF_E_ASSOC_START, "ASSOC_START"}, {
2922 -		BRCMF_E_IBSS_ASSOC, "IBSS_ASSOC"}, {
2923 -		BRCMF_E_RADIO, "RADIO"}, {
2924 -		BRCMF_E_PSM_WATCHDOG, "PSM_WATCHDOG"}, {
2925 -		BRCMF_E_PROBREQ_MSG, "PROBREQ_MSG"}, {
2926 -		BRCMF_E_SCAN_CONFIRM_IND, "SCAN_CONFIRM_IND"}, {
2927 -		BRCMF_E_PSK_SUP, "PSK_SUP"}, {
2928 -		BRCMF_E_COUNTRY_CODE_CHANGED, "COUNTRY_CODE_CHANGED"}, {
2929 -		BRCMF_E_EXCEEDED_MEDIUM_TIME, "EXCEEDED_MEDIUM_TIME"}, {
2930 -		BRCMF_E_ICV_ERROR, "ICV_ERROR"}, {
2931 -		BRCMF_E_UNICAST_DECODE_ERROR, "UNICAST_DECODE_ERROR"}, {
2932 -		BRCMF_E_MULTICAST_DECODE_ERROR, "MULTICAST_DECODE_ERROR"}, {
2933 -		BRCMF_E_TRACE, "TRACE"}, {
2934 -		BRCMF_E_ACTION_FRAME, "ACTION FRAME"}, {
2935 -		BRCMF_E_ACTION_FRAME_COMPLETE, "ACTION FRAME TX COMPLETE"}, {
2936 -		BRCMF_E_IF, "IF"}, {
2937 -		BRCMF_E_RSSI, "RSSI"}, {
2938 -		BRCMF_E_PFN_SCAN_COMPLETE, "SCAN_COMPLETE"}
2939 -	};
2940 -	uint event_type, flags, auth_type, datalen;
2941 -	static u32 seqnum_prev;
2942 -	struct msgtrace_hdr hdr;
2943 -	u32 nblost;
2944 -	char *s, *p;
2945 -
2946 -	event_type = be32_to_cpu(event->event_type);
2947 -	flags = be16_to_cpu(event->flags);
2948 -	status = be32_to_cpu(event->status);
2949 -	reason = be32_to_cpu(event->reason);
2950 -	auth_type = be32_to_cpu(event->auth_type);
2951 -	datalen = be32_to_cpu(event->datalen);
2952 -	/* debug dump of event messages */
2953 -	sprintf(eabuf, "%pM", event->addr);
2954 -
2955 -	event_name = "UNKNOWN";
2956 -	for (i = 0; i < ARRAY_SIZE(event_names); i++) {
2957 -		if (event_names[i].event == event_type)
2958 -			event_name = event_names[i].event_name;
2959 -	}
2960 -
2961 -	brcmf_dbg(EVENT, "EVENT: %s, event ID = %d\n", event_name, event_type);
2962 -	brcmf_dbg(EVENT, "flags 0x%04x, status %d, reason %d, auth_type %d MAC %s\n",
2963 -		  flags, status, reason, auth_type, eabuf);
2964 -
2965 -	if (flags & BRCMF_EVENT_MSG_LINK)
2966 -		link = true;
2967 -	if (flags & BRCMF_EVENT_MSG_GROUP)
2968 -		group = true;
2969 -	if (flags & BRCMF_EVENT_MSG_FLUSHTXQ)
2970