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
187
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
200
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
213 deleted file mode 100644
214
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
254 deleted file mode 100644
255
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
283 deleted file mode 100644
284
285 --- a/drivers/staging/brcm80211/README
286 +++ /dev/null
287 @@ -1 +0,0 @@
288 -refer to: http://linuxwireless.org/en/users/Drivers/brcm80211
289
290 deleted file mode 100644
291
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
305 deleted file mode 100644
306
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
344 deleted file mode 100644
345
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
382 deleted file mode 100644
383
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
759 deleted file mode 100644
760
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 - ®data)) != 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
1390 deleted file mode 100644
1391
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
2169 deleted file mode 100644
2170
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
2232 deleted file mode 100644
2233
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
2736 deleted file mode 100644
2737
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