mirror of
https://github.com/a52xq-dev/kernel.git
synced 2026-10-18 21:58:11 +07:00
Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
* 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (741 commits) staging:iio:meter:ade7753 should be 16 bit read not 8 bit for mode register. staging:iio:kfifo_buf fix double initialization of the ring device structure. staging:iio:accel:lis3l02dq: fix incorrect pointer passed to spi_set_drvdata. staging:iio:imu fix missing register table index for some channels spectra: enable device before poking it staging: rts_pstor: Fix a miswriting staging/lirc_bt829: Return -ENODEV when no hardware is found. staging/lirc_parallel: remove pointless prototypes. staging/lirc_parallel: fix panic on rmmod staging:iio:adc:ad7476: Incorrect pointer into spi_set_drvdata. Staging: zram: Fix kunmapping order Revert "gma500: Fix dependencies" gma500: Add medfield header gma500: wire up the mrst i2c bus from chip_info gma500: Fix DPU build gma500: Clean up the DPU config and make it runtime gma500: resync with Medfield progress gma500: Use the mrst helpers and power control for mode commit gma500@ Fix backlight range error gma500: More Moorestown muddle meddling means MM maybe might modeset ... Fix up fairly trivial conflicts all over, mostly due to header file cleanup conflicts, but some deleted files and some just context changes: - Documentation/feature-removal-schedule.txt - drivers/staging/bcm/headers.h - drivers/staging/brcm80211/brcmfmac/dhd_linux.c - drivers/staging/brcm80211/brcmfmac/dhd_sdio.c - drivers/staging/brcm80211/brcmfmac/wl_cfg80211.h - drivers/staging/brcm80211/brcmfmac/wl_iw.c - drivers/staging/et131x/et131x_netdev.c - drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c - drivers/staging/rtl8192e/r8192E.h - drivers/staging/usbip/userspace/src/utils.h
This commit is contained in:
commit
1380516599
797 changed files with 49665 additions and 188042 deletions
|
|
@ -193,20 +193,6 @@ Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's
|
|||
|
||||
---------------------------
|
||||
|
||||
What: CS5535/CS5536 obsolete GPIO driver
|
||||
When: June 2011
|
||||
Files: drivers/staging/cs5535_gpio/*
|
||||
Check: drivers/staging/cs5535_gpio/cs5535_gpio.c
|
||||
Why: A newer driver replaces this; it is drivers/gpio/cs5535-gpio.c, and
|
||||
integrates with the Linux GPIO subsystem. The old driver has been
|
||||
moved to staging, and will be removed altogether around 3.0.
|
||||
Please test the new driver, and ensure that the functionality you
|
||||
need and any bugfixes from the old driver are available in the new
|
||||
one.
|
||||
Who: Andres Salomon <dilinger@queued.net>
|
||||
|
||||
--------------------------
|
||||
|
||||
What: remove EXPORT_SYMBOL(kernel_thread)
|
||||
When: August 2006
|
||||
Files: arch/*/kernel/*_ksyms.c
|
||||
|
|
|
|||
149
MAINTAINERS
149
MAINTAINERS
|
|
@ -1546,9 +1546,10 @@ F: drivers/net/tg3.*
|
|||
BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
|
||||
M: Brett Rudley <brudley@broadcom.com>
|
||||
M: Henry Ptasinski <henryp@broadcom.com>
|
||||
M: Dowan Kim <dowan@broadcom.com>
|
||||
M: Roland Vossen <rvossen@broadcom.com>
|
||||
M: Arend van Spriel <arend@broadcom.com>
|
||||
M: Franky (Zhenhui) Lin <frankyl@broadcom.com>
|
||||
M: Kan Yan <kanyan@broadcom.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/staging/brcm80211/
|
||||
|
|
@ -6092,6 +6093,145 @@ L: devel@driverdev.osuosl.org
|
|||
S: Maintained
|
||||
F: drivers/staging/
|
||||
|
||||
STAGING - AGERE HERMES II and II.5 WIRELESS DRIVERS
|
||||
M: Henk de Groot <pe1dnn@amsat.org>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/wlags49_h2/
|
||||
F: drivers/staging/wlags49_h25/
|
||||
|
||||
STAGING - ASUS OLED
|
||||
M: Jakub Schmidtke <sjakub@gmail.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/asus_oled/
|
||||
|
||||
STAGING - ATHEROS ATH6KL WIRELESS DRIVER
|
||||
M: Luis R. Rodriguez <mcgrof@gmail.com>
|
||||
M: Naveen Singh <nsingh@atheros.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/ath6kl/
|
||||
|
||||
STAGING - COMEDI
|
||||
M: Ian Abbott <abbotti@mev.co.uk>
|
||||
M: Mori Hess <fmhess@users.sourceforge.net>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/comedi/
|
||||
|
||||
STAGING - CRYSTAL HD VIDEO DECODER
|
||||
M: Naren Sankar <nsankar@broadcom.com>
|
||||
M: Jarod Wilson <jarod@wilsonet.com>
|
||||
M: Scott Davilla <davilla@4pi.com>
|
||||
M: Manu Abraham <abraham.manu@gmail.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/crystalhd/
|
||||
|
||||
STAGING - CYPRESS WESTBRIDGE SUPPORT
|
||||
M: David Cross <david.cross@cypress.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/westbridge/
|
||||
|
||||
STAGING - ECHO CANCELLER
|
||||
M: Steve Underwood <steveu@coppice.org>
|
||||
M: David Rowe <david@rowetel.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/echo/
|
||||
|
||||
STAGING - FLARION FT1000 DRIVERS
|
||||
M: Marek Belisko <marek.belisko@gmail.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/ft1000/
|
||||
|
||||
STAGING - FRONTIER TRANZPORT AND ALPHATRACK
|
||||
M: David Täht <d@teklibre.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/frontier/
|
||||
|
||||
STAGING - HYPER-V (MICROSOFT)
|
||||
M: Hank Janssen <hjanssen@microsoft.com>
|
||||
M: Haiyang Zhang <haiyangz@microsoft.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/hv/
|
||||
|
||||
STAGING - INDUSTRIAL IO
|
||||
M: Jonathan Cameron <jic23@cam.ac.uk>
|
||||
L: linux-iio@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/iio/
|
||||
|
||||
STAGING - LIRC (LINUX INFRARED REMOTE CONTROL) DRIVERS
|
||||
M: Jarod Wilson <jarod@wilsonet.com>
|
||||
W: http://www.lirc.org/
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/lirc/
|
||||
|
||||
STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON)
|
||||
M: Andres Salomon <dilinger@queued.net>
|
||||
M: Chris Ball <cjb@laptop.org>
|
||||
M: Jon Nettleton <jon.nettleton@gmail.com>
|
||||
W: http://wiki.laptop.org/go/DCON
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/olpc_dcon/
|
||||
|
||||
STAGING - PARALLEL LCD/KEYPAD PANEL DRIVER
|
||||
M: Willy Tarreau <willy@meta-x.org>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/panel/
|
||||
|
||||
STAGING - REALTEK RTL8712U DRIVERS
|
||||
M: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/rtl8712/
|
||||
|
||||
STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER
|
||||
M: Teddy Wang <teddy.wang@siliconmotion.com.cn>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/sm7xx/
|
||||
|
||||
STAGING - SOFTLOGIC 6x10 MPEG CODEC
|
||||
M: Ben Collins <bcollins@bluecherry.net>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/solo6x10/
|
||||
|
||||
STAGING - SPEAKUP CONSOLE SPEECH DRIVER
|
||||
M: William Hubbs <w.d.hubbs@gmail.com>
|
||||
M: Chris Brannon <chris@the-brannons.com>
|
||||
M: Kirk Reiser <kirk@braille.uwo.ca>
|
||||
M: Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||
L: speakup@braille.uwo.ca
|
||||
W: http://www.linux-speakup.org/
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/speakup/
|
||||
|
||||
STAGING - TI DSP BRIDGE DRIVERS
|
||||
M: Omar Ramirez Luna <omar.ramirez@ti.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/tidspbridge/
|
||||
|
||||
STAGING - TRIDENT TVMASTER TMxxxx USB VIDEO CAPTURE DRIVERS
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/tm6000/
|
||||
|
||||
STAGING - USB ENE SM/MS CARD READER DRIVER
|
||||
M: Al Cho <acho@novell.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/keucr/
|
||||
|
||||
STAGING - VIA VT665X DRIVERS
|
||||
M: Forest Bond <forest@alittletooquiet.net>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/vt665?/
|
||||
|
||||
STAGING - WINBOND IS89C35 WLAN USB DRIVER
|
||||
M: Pavel Machek <pavel@ucw.cz>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/winbond/
|
||||
|
||||
STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER
|
||||
M: Arnaud Patard <apatard@mandriva.com>
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/xgifb/
|
||||
|
||||
STARFIRE/DURALAN NETWORK DRIVER
|
||||
M: Ion Badulescu <ionut@badula.org>
|
||||
S: Odd Fixes
|
||||
|
|
@ -6594,13 +6734,6 @@ W: http://pegasus2.sourceforge.net/
|
|||
S: Maintained
|
||||
F: drivers/net/usb/rtl8150.c
|
||||
|
||||
USB SE401 DRIVER
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.chello.nl/~j.vreeken/se401/
|
||||
S: Orphan
|
||||
F: Documentation/video4linux/se401.txt
|
||||
F: drivers/staging/se401/
|
||||
|
||||
USB SERIAL BELKIN F5U103 DRIVER
|
||||
M: William Greathouse <wgreathouse@smva.com>
|
||||
L: linux-usb@vger.kernel.org
|
||||
|
|
|
|||
|
|
@ -12,34 +12,14 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/mfd/tc3589x.h>
|
||||
#include <linux/input/matrix_keypad.h>
|
||||
#include <../drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h>
|
||||
|
||||
#include <mach/gpio.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
#include "board-mop500.h"
|
||||
|
||||
/*
|
||||
* Synaptics RMI4 touchscreen interface on the U8500 UIB
|
||||
*/
|
||||
|
||||
/*
|
||||
* Descriptor structure.
|
||||
* Describes the number of i2c devices on the bus that speak RMI.
|
||||
*/
|
||||
static struct synaptics_rmi4_platform_data rmi4_i2c_dev_platformdata = {
|
||||
.irq_number = NOMADIK_GPIO_TO_IRQ(84),
|
||||
.irq_type = (IRQF_TRIGGER_FALLING | IRQF_SHARED),
|
||||
.x_flip = false,
|
||||
.y_flip = true,
|
||||
.regulator_en = false,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B),
|
||||
.platform_data = &rmi4_i2c_dev_platformdata,
|
||||
},
|
||||
/* Dummy data that can be overridden by staging driver */
|
||||
struct i2c_board_info __initdata __weak mop500_i2c3_devices_u8500[] = {
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -24,10 +24,6 @@ menuconfig STAGING
|
|||
|
||||
if STAGING
|
||||
|
||||
source "drivers/staging/tty/Kconfig"
|
||||
|
||||
source "drivers/staging/generic_serial/Kconfig"
|
||||
|
||||
source "drivers/staging/et131x/Kconfig"
|
||||
|
||||
source "drivers/staging/slicoss/Kconfig"
|
||||
|
|
@ -100,8 +96,6 @@ source "drivers/staging/sep/Kconfig"
|
|||
|
||||
source "drivers/staging/iio/Kconfig"
|
||||
|
||||
source "drivers/staging/cs5535_gpio/Kconfig"
|
||||
|
||||
source "drivers/staging/zram/Kconfig"
|
||||
|
||||
source "drivers/staging/zcache/Kconfig"
|
||||
|
|
@ -120,8 +114,6 @@ source "drivers/staging/cxt1e1/Kconfig"
|
|||
|
||||
source "drivers/staging/xgifb/Kconfig"
|
||||
|
||||
source "drivers/staging/msm/Kconfig"
|
||||
|
||||
source "drivers/staging/lirc/Kconfig"
|
||||
|
||||
source "drivers/staging/easycap/Kconfig"
|
||||
|
|
@ -132,8 +124,6 @@ source "drivers/staging/tidspbridge/Kconfig"
|
|||
|
||||
source "drivers/staging/quickstart/Kconfig"
|
||||
|
||||
source "drivers/staging/westbridge/Kconfig"
|
||||
|
||||
source "drivers/staging/sbe-2t3e3/Kconfig"
|
||||
|
||||
source "drivers/staging/ath6kl/Kconfig"
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
# fix for build system bug...
|
||||
obj-$(CONFIG_STAGING) += staging.o
|
||||
|
||||
obj-y += tty/
|
||||
obj-y += generic_serial/
|
||||
obj-$(CONFIG_ET131X) += et131x/
|
||||
obj-$(CONFIG_SLICOSS) += slicoss/
|
||||
obj-$(CONFIG_VIDEO_GO7007) += go7007/
|
||||
|
|
@ -41,7 +39,6 @@ obj-$(CONFIG_HYPERV) += hv/
|
|||
obj-$(CONFIG_VME_BUS) += vme/
|
||||
obj-$(CONFIG_DX_SEP) += sep/
|
||||
obj-$(CONFIG_IIO) += iio/
|
||||
obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio/
|
||||
obj-$(CONFIG_ZRAM) += zram/
|
||||
obj-$(CONFIG_XVMALLOC) += zram/
|
||||
obj-$(CONFIG_ZCACHE) += zcache/
|
||||
|
|
@ -52,12 +49,10 @@ obj-$(CONFIG_VIDEO_DT3155) += dt3155v4l/
|
|||
obj-$(CONFIG_CRYSTALHD) += crystalhd/
|
||||
obj-$(CONFIG_CXT1E1) += cxt1e1/
|
||||
obj-$(CONFIG_FB_XGI) += xgifb/
|
||||
obj-$(CONFIG_MSM_STAGING) += msm/
|
||||
obj-$(CONFIG_EASYCAP) += easycap/
|
||||
obj-$(CONFIG_SOLO6X10) += solo6x10/
|
||||
obj-$(CONFIG_TIDSPBRIDGE) += tidspbridge/
|
||||
obj-$(CONFIG_ACPI_QUICKSTART) += quickstart/
|
||||
obj-$(CONFIG_WESTBRIDGE_ASTORIA) += westbridge/astoria/
|
||||
obj-$(CONFIG_SBE_2T3E3) += sbe-2t3e3/
|
||||
obj-$(CONFIG_ATH6K_LEGACY) += ath6kl/
|
||||
obj-$(CONFIG_USB_ENESTORAGE) += keucr/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
comment "Altera FPGA firmware download module"
|
||||
|
||||
config ALTERA_STAPL
|
||||
tristate "Altera FPGA firmware download module"
|
||||
depends on I2C
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
altera-stapl-objs = altera-lpt.o altera-jtag.o altera-comp.o altera.o
|
||||
altera-stapl-y := altera-lpt.o altera-jtag.o altera-comp.o altera.o
|
||||
|
||||
obj-$(CONFIG_ALTERA_STAPL) += altera-stapl.o
|
||||
|
|
|
|||
|
|
@ -2430,16 +2430,23 @@ int altera_init(struct altera_config *config, const struct firmware *fw)
|
|||
int index = 0;
|
||||
s32 offset = 0L;
|
||||
s32 error_address = 0L;
|
||||
int retval = 0;
|
||||
|
||||
key = kzalloc(33 * sizeof(char), GFP_KERNEL);
|
||||
if (!key)
|
||||
return -ENOMEM;
|
||||
value = kzalloc(257 * sizeof(char), GFP_KERNEL);
|
||||
if (!value)
|
||||
return -ENOMEM;
|
||||
key = kzalloc(33, GFP_KERNEL);
|
||||
if (!key) {
|
||||
retval = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
value = kzalloc(257, GFP_KERNEL);
|
||||
if (!value) {
|
||||
retval = -ENOMEM;
|
||||
goto free_key;
|
||||
}
|
||||
astate = kzalloc(sizeof(struct altera_state), GFP_KERNEL);
|
||||
if (!astate)
|
||||
return -ENOMEM;
|
||||
if (!astate) {
|
||||
retval = -ENOMEM;
|
||||
goto free_value;
|
||||
}
|
||||
|
||||
astate->config = config;
|
||||
if (!astate->config->jtag_io) {
|
||||
|
|
@ -2518,10 +2525,12 @@ int altera_init(struct altera_config *config, const struct firmware *fw)
|
|||
} else if (exec_result)
|
||||
printk(KERN_ERR "%s: error %d\n", __func__, exec_result);
|
||||
|
||||
kfree(key);
|
||||
kfree(value);
|
||||
kfree(astate);
|
||||
|
||||
return 0;
|
||||
free_value:
|
||||
kfree(value);
|
||||
free_key:
|
||||
kfree(key);
|
||||
out:
|
||||
return retval;
|
||||
}
|
||||
EXPORT_SYMBOL(altera_init);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
TODO:
|
||||
|
||||
We are working hard on cleaning up the driver. There's sooooooooo much todo
|
||||
so instead of editign this file please use the wiki:
|
||||
so instead of editing this file please use the wiki:
|
||||
|
||||
http://wireless.kernel.org/en/users/Drivers/ath6kl
|
||||
|
||||
|
|
|
|||
|
|
@ -954,9 +954,13 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
const char *filename;
|
||||
const struct firmware *fw_entry;
|
||||
u32 fw_entry_size;
|
||||
u8 **buf;
|
||||
size_t *buf_len;
|
||||
|
||||
switch (file) {
|
||||
case AR6K_OTP_FILE:
|
||||
buf = &ar->fw_otp;
|
||||
buf_len = &ar->fw_otp_len;
|
||||
if (ar->arVersion.target_ver == AR6003_REV1_VERSION) {
|
||||
filename = AR6003_REV1_OTP_FILE;
|
||||
} else if (ar->arVersion.target_ver == AR6003_REV2_VERSION) {
|
||||
|
|
@ -970,6 +974,8 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
break;
|
||||
|
||||
case AR6K_FIRMWARE_FILE:
|
||||
buf = &ar->fw;
|
||||
buf_len = &ar->fw_len;
|
||||
if (ar->arVersion.target_ver == AR6003_REV1_VERSION) {
|
||||
filename = AR6003_REV1_FIRMWARE_FILE;
|
||||
} else if (ar->arVersion.target_ver == AR6003_REV2_VERSION) {
|
||||
|
|
@ -1028,6 +1034,8 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
break;
|
||||
|
||||
case AR6K_PATCH_FILE:
|
||||
buf = &ar->fw_patch;
|
||||
buf_len = &ar->fw_patch_len;
|
||||
if (ar->arVersion.target_ver == AR6003_REV1_VERSION) {
|
||||
filename = AR6003_REV1_PATCH_FILE;
|
||||
} else if (ar->arVersion.target_ver == AR6003_REV2_VERSION) {
|
||||
|
|
@ -1041,6 +1049,8 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
break;
|
||||
|
||||
case AR6K_BOARD_DATA_FILE:
|
||||
buf = &ar->fw_data;
|
||||
buf_len = &ar->fw_data_len;
|
||||
if (ar->arVersion.target_ver == AR6003_REV1_VERSION) {
|
||||
filename = AR6003_REV1_BOARD_DATA_FILE;
|
||||
} else if (ar->arVersion.target_ver == AR6003_REV2_VERSION) {
|
||||
|
|
@ -1057,23 +1067,29 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("Unknown file type: %d\n", file));
|
||||
return A_ERROR;
|
||||
}
|
||||
if ((A_REQUEST_FIRMWARE(&fw_entry, filename, ((struct device *)ar->osDevInfo.pOSDevice))) != 0)
|
||||
{
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("Failed to get %s\n", filename));
|
||||
return A_ENOENT;
|
||||
|
||||
if (*buf == NULL) {
|
||||
if ((A_REQUEST_FIRMWARE(&fw_entry, filename, ((struct device *)ar->osDevInfo.pOSDevice))) != 0) {
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("Failed to get %s\n", filename));
|
||||
return A_ENOENT;
|
||||
}
|
||||
|
||||
*buf = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL);
|
||||
*buf_len = fw_entry->size;
|
||||
A_RELEASE_FIRMWARE(fw_entry);
|
||||
}
|
||||
|
||||
#ifdef SOFTMAC_FILE_USED
|
||||
if (file==AR6K_BOARD_DATA_FILE && fw_entry->data) {
|
||||
ar6000_softmac_update(ar, (u8 *)fw_entry->data, fw_entry->size);
|
||||
if (file==AR6K_BOARD_DATA_FILE && *buf_len) {
|
||||
ar6000_softmac_update(ar, *buf, *buf_len);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
fw_entry_size = fw_entry->size;
|
||||
fw_entry_size = *buf_len;
|
||||
|
||||
/* Load extended board data for AR6003 */
|
||||
if ((file==AR6K_BOARD_DATA_FILE) && (fw_entry->data)) {
|
||||
if ((file==AR6K_BOARD_DATA_FILE) && *buf) {
|
||||
u32 board_ext_address;
|
||||
u32 board_ext_data_size;
|
||||
u32 board_data_size;
|
||||
|
|
@ -1089,14 +1105,13 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
AR_DEBUG_PRINTF(ATH_DEBUG_INFO, ("Board extended Data download address: 0x%x\n", board_ext_address));
|
||||
|
||||
/* check whether the target has allocated memory for extended board data and file contains extended board data */
|
||||
if ((board_ext_address) && (fw_entry->size == (board_data_size + board_ext_data_size))) {
|
||||
if ((board_ext_address) && (*buf_len == (board_data_size + board_ext_data_size))) {
|
||||
u32 param;
|
||||
|
||||
status = BMIWriteMemory(ar->arHifDevice, board_ext_address, (u8 *)(fw_entry->data + board_data_size), board_ext_data_size);
|
||||
status = BMIWriteMemory(ar->arHifDevice, board_ext_address, (u8 *)(*buf + board_data_size), board_ext_data_size);
|
||||
|
||||
if (status) {
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("BMI operation failed: %d\n", __LINE__));
|
||||
A_RELEASE_FIRMWARE(fw_entry);
|
||||
return A_ERROR;
|
||||
}
|
||||
|
||||
|
|
@ -1110,17 +1125,16 @@ ar6000_transfer_bin_file(struct ar6_softc *ar, AR6K_BIN_FILE file, u32 address,
|
|||
}
|
||||
|
||||
if (compressed) {
|
||||
status = BMIFastDownload(ar->arHifDevice, address, (u8 *)fw_entry->data, fw_entry_size);
|
||||
status = BMIFastDownload(ar->arHifDevice, address, *buf, fw_entry_size);
|
||||
} else {
|
||||
status = BMIWriteMemory(ar->arHifDevice, address, (u8 *)fw_entry->data, fw_entry_size);
|
||||
status = BMIWriteMemory(ar->arHifDevice, address, *buf, fw_entry_size);
|
||||
}
|
||||
|
||||
if (status) {
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("BMI operation failed: %d\n", __LINE__));
|
||||
A_RELEASE_FIRMWARE(fw_entry);
|
||||
return A_ERROR;
|
||||
}
|
||||
A_RELEASE_FIRMWARE(fw_entry);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2088,6 +2102,11 @@ ar6000_destroy(struct net_device *dev, unsigned int unregister)
|
|||
ar6000_remove_ap_interface();
|
||||
#endif /*CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT */
|
||||
|
||||
kfree(ar->fw_otp);
|
||||
kfree(ar->fw);
|
||||
kfree(ar->fw_patch);
|
||||
kfree(ar->fw_data);
|
||||
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_INFO,("-ar6000_destroy \n"));
|
||||
}
|
||||
|
||||
|
|
@ -4114,6 +4133,13 @@ ar6000_ready_event(void *devt, u8 *datap, u8 phyCap, u32 sw_ver, u32 abi_ver)
|
|||
ar->arVersion.wlan_ver = sw_ver;
|
||||
ar->arVersion.abi_ver = abi_ver;
|
||||
|
||||
snprintf(ar->wdev->wiphy->fw_version, sizeof(ar->wdev->wiphy->fw_version),
|
||||
"%u:%u:%u:%u",
|
||||
(ar->arVersion.wlan_ver & 0xf0000000) >> 28,
|
||||
(ar->arVersion.wlan_ver & 0x0f000000) >> 24,
|
||||
(ar->arVersion.wlan_ver & 0x00ff0000) >> 16,
|
||||
(ar->arVersion.wlan_ver & 0x0000ffff));
|
||||
|
||||
/* Indicate to the waiting thread that the ready event was received */
|
||||
ar->arWmiReady = true;
|
||||
wake_up(&arEvent);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/wireless.h>
|
||||
#include <linux/ieee80211.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include <net/netlink.h>
|
||||
|
||||
#include "ar6000_drv.h"
|
||||
|
||||
|
|
@ -867,26 +868,31 @@ ar6k_cfg80211_scanComplete_event(struct ar6_softc *ar, int status)
|
|||
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_INFO, ("%s: status %d\n", __func__, status));
|
||||
|
||||
if(ar->scan_request)
|
||||
{
|
||||
/* Translate data to cfg80211 mgmt format */
|
||||
if (ar->arWmi)
|
||||
wmi_iterate_nodes(ar->arWmi, ar6k_cfg80211_scan_node, ar->wdev->wiphy);
|
||||
if (!ar->scan_request)
|
||||
return;
|
||||
|
||||
cfg80211_scan_done(ar->scan_request,
|
||||
((status & A_ECANCELED) || (status & A_EBUSY)) ? true : false);
|
||||
if ((status == A_ECANCELED) || (status == A_EBUSY)) {
|
||||
cfg80211_scan_done(ar->scan_request, true);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if(ar->scan_request->n_ssids &&
|
||||
ar->scan_request->ssids[0].ssid_len) {
|
||||
/* Translate data to cfg80211 mgmt format */
|
||||
wmi_iterate_nodes(ar->arWmi, ar6k_cfg80211_scan_node, ar->wdev->wiphy);
|
||||
|
||||
cfg80211_scan_done(ar->scan_request, false);
|
||||
|
||||
if(ar->scan_request->n_ssids &&
|
||||
ar->scan_request->ssids[0].ssid_len) {
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < ar->scan_request->n_ssids; i++) {
|
||||
wmi_probedSsid_cmd(ar->arWmi, i+1, DISABLE_SSID_FLAG,
|
||||
0, NULL);
|
||||
wmi_probedSsid_cmd(ar->arWmi, i+1, DISABLE_SSID_FLAG,
|
||||
0, NULL);
|
||||
}
|
||||
}
|
||||
ar->scan_request = NULL;
|
||||
}
|
||||
|
||||
out:
|
||||
ar->scan_request = NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -1453,6 +1459,159 @@ ar6k_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NL80211_TESTMODE
|
||||
enum ar6k_testmode_attr {
|
||||
__AR6K_TM_ATTR_INVALID = 0,
|
||||
AR6K_TM_ATTR_CMD = 1,
|
||||
AR6K_TM_ATTR_DATA = 2,
|
||||
|
||||
/* keep last */
|
||||
__AR6K_TM_ATTR_AFTER_LAST,
|
||||
AR6K_TM_ATTR_MAX = __AR6K_TM_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum ar6k_testmode_cmd {
|
||||
AR6K_TM_CMD_TCMD = 0,
|
||||
AR6K_TM_CMD_RX_REPORT = 1,
|
||||
};
|
||||
|
||||
#define AR6K_TM_DATA_MAX_LEN 5000
|
||||
|
||||
static const struct nla_policy ar6k_testmode_policy[AR6K_TM_ATTR_MAX + 1] = {
|
||||
[AR6K_TM_ATTR_CMD] = { .type = NLA_U32 },
|
||||
[AR6K_TM_ATTR_DATA] = { .type = NLA_BINARY,
|
||||
.len = AR6K_TM_DATA_MAX_LEN },
|
||||
};
|
||||
|
||||
void ar6000_testmode_rx_report_event(struct ar6_softc *ar, void *buf,
|
||||
int buf_len)
|
||||
{
|
||||
if (down_interruptible(&ar->arSem))
|
||||
return;
|
||||
|
||||
kfree(ar->tcmd_rx_report);
|
||||
|
||||
ar->tcmd_rx_report = kmemdup(buf, buf_len, GFP_KERNEL);
|
||||
ar->tcmd_rx_report_len = buf_len;
|
||||
|
||||
up(&ar->arSem);
|
||||
|
||||
wake_up(&arEvent);
|
||||
}
|
||||
|
||||
static int ar6000_testmode_rx_report(struct ar6_softc *ar, void *buf,
|
||||
int buf_len, struct sk_buff *skb)
|
||||
{
|
||||
int ret = 0;
|
||||
long left;
|
||||
|
||||
if (down_interruptible(&ar->arSem))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (ar->arWmiReady == false) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (ar->bIsDestroyProgress) {
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
WARN_ON(ar->tcmd_rx_report != NULL);
|
||||
WARN_ON(ar->tcmd_rx_report_len > 0);
|
||||
|
||||
if (wmi_test_cmd(ar->arWmi, buf, buf_len) < 0) {
|
||||
up(&ar->arSem);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
left = wait_event_interruptible_timeout(arEvent,
|
||||
ar->tcmd_rx_report != NULL,
|
||||
wmitimeout * HZ);
|
||||
|
||||
if (left == 0) {
|
||||
ret = -ETIMEDOUT;
|
||||
goto out;
|
||||
} else if (left < 0) {
|
||||
ret = left;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (ar->tcmd_rx_report == NULL || ar->tcmd_rx_report_len == 0) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
NLA_PUT(skb, AR6K_TM_ATTR_DATA, ar->tcmd_rx_report_len,
|
||||
ar->tcmd_rx_report);
|
||||
|
||||
kfree(ar->tcmd_rx_report);
|
||||
ar->tcmd_rx_report = NULL;
|
||||
|
||||
out:
|
||||
up(&ar->arSem);
|
||||
|
||||
return ret;
|
||||
|
||||
nla_put_failure:
|
||||
ret = -ENOBUFS;
|
||||
goto out;
|
||||
}
|
||||
|
||||
static int ar6k_testmode_cmd(struct wiphy *wiphy, void *data, int len)
|
||||
{
|
||||
struct ar6_softc *ar = wiphy_priv(wiphy);
|
||||
struct nlattr *tb[AR6K_TM_ATTR_MAX + 1];
|
||||
int err, buf_len, reply_len;
|
||||
struct sk_buff *skb;
|
||||
void *buf;
|
||||
|
||||
err = nla_parse(tb, AR6K_TM_ATTR_MAX, data, len,
|
||||
ar6k_testmode_policy);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (!tb[AR6K_TM_ATTR_CMD])
|
||||
return -EINVAL;
|
||||
|
||||
switch (nla_get_u32(tb[AR6K_TM_ATTR_CMD])) {
|
||||
case AR6K_TM_CMD_TCMD:
|
||||
if (!tb[AR6K_TM_ATTR_DATA])
|
||||
return -EINVAL;
|
||||
|
||||
buf = nla_data(tb[AR6K_TM_ATTR_DATA]);
|
||||
buf_len = nla_len(tb[AR6K_TM_ATTR_DATA]);
|
||||
|
||||
wmi_test_cmd(ar->arWmi, buf, buf_len);
|
||||
|
||||
return 0;
|
||||
|
||||
break;
|
||||
case AR6K_TM_CMD_RX_REPORT:
|
||||
if (!tb[AR6K_TM_ATTR_DATA])
|
||||
return -EINVAL;
|
||||
|
||||
buf = nla_data(tb[AR6K_TM_ATTR_DATA]);
|
||||
buf_len = nla_len(tb[AR6K_TM_ATTR_DATA]);
|
||||
|
||||
reply_len = nla_total_size(AR6K_TM_DATA_MAX_LEN);
|
||||
skb = cfg80211_testmode_alloc_reply_skb(wiphy, reply_len);
|
||||
if (!skb)
|
||||
return -ENOMEM;
|
||||
|
||||
err = ar6000_testmode_rx_report(ar, buf, buf_len, skb);
|
||||
if (err < 0) {
|
||||
kfree_skb(skb);
|
||||
return err;
|
||||
}
|
||||
|
||||
return cfg80211_testmode_reply(skb);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static const
|
||||
u32 cipher_suites[] = {
|
||||
|
|
@ -1607,6 +1766,28 @@ static int ar6k_get_station(struct wiphy *wiphy, struct net_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ar6k_set_pmksa(struct wiphy *wiphy, struct net_device *netdev,
|
||||
struct cfg80211_pmksa *pmksa)
|
||||
{
|
||||
struct ar6_softc *ar = ar6k_priv(netdev);
|
||||
return wmi_setPmkid_cmd(ar->arWmi, pmksa->bssid, pmksa->pmkid, true);
|
||||
}
|
||||
|
||||
static int ar6k_del_pmksa(struct wiphy *wiphy, struct net_device *netdev,
|
||||
struct cfg80211_pmksa *pmksa)
|
||||
{
|
||||
struct ar6_softc *ar = ar6k_priv(netdev);
|
||||
return wmi_setPmkid_cmd(ar->arWmi, pmksa->bssid, pmksa->pmkid, false);
|
||||
}
|
||||
|
||||
static int ar6k_flush_pmksa(struct wiphy *wiphy, struct net_device *netdev)
|
||||
{
|
||||
struct ar6_softc *ar = ar6k_priv(netdev);
|
||||
if (ar->arConnected)
|
||||
return wmi_setPmkid_cmd(ar->arWmi, ar->arBssid, NULL, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct
|
||||
cfg80211_ops ar6k_cfg80211_ops = {
|
||||
.change_virtual_intf = ar6k_cfg80211_change_iface,
|
||||
|
|
@ -1628,6 +1809,10 @@ cfg80211_ops ar6k_cfg80211_ops = {
|
|||
.join_ibss = ar6k_cfg80211_join_ibss,
|
||||
.leave_ibss = ar6k_cfg80211_leave_ibss,
|
||||
.get_station = ar6k_get_station,
|
||||
.set_pmksa = ar6k_set_pmksa,
|
||||
.del_pmksa = ar6k_del_pmksa,
|
||||
.flush_pmksa = ar6k_flush_pmksa,
|
||||
CFG80211_TESTMODE_CMD(ar6k_testmode_cmd)
|
||||
};
|
||||
|
||||
struct wireless_dev *
|
||||
|
|
|
|||
|
|
@ -545,15 +545,9 @@ struct ar6_softc {
|
|||
s8 arMaxRetries;
|
||||
u8 arPhyCapability;
|
||||
#ifdef CONFIG_HOST_TCMD_SUPPORT
|
||||
u8 tcmdRxReport;
|
||||
u32 tcmdRxTotalPkt;
|
||||
s32 tcmdRxRssi;
|
||||
u32 tcmdPm;
|
||||
u32 arTargetMode;
|
||||
u32 tcmdRxcrcErrPkt;
|
||||
u32 tcmdRxsecErrPkt;
|
||||
u16 tcmdRateCnt[TCMD_MAX_RATES];
|
||||
u16 tcmdRateCntShortGuard[TCMD_MAX_RATES];
|
||||
void *tcmd_rx_report;
|
||||
int tcmd_rx_report_len;
|
||||
#endif
|
||||
AR6000_WLAN_STATE arWlanState;
|
||||
struct ar_node_mapping arNodeMap[MAX_NODE_NUM];
|
||||
|
|
@ -650,6 +644,15 @@ struct ar6_softc {
|
|||
void *arApDev;
|
||||
#endif
|
||||
u8 arAutoAuthStage;
|
||||
|
||||
u8 *fw_otp;
|
||||
size_t fw_otp_len;
|
||||
u8 *fw;
|
||||
size_t fw_len;
|
||||
u8 *fw_patch;
|
||||
size_t fw_patch_len;
|
||||
u8 *fw_data;
|
||||
size_t fw_data_len;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT
|
||||
|
|
|
|||
|
|
@ -41,6 +41,17 @@ void ar6k_cfg80211_disconnect_event(struct ar6_softc *ar, u8 reason,
|
|||
|
||||
void ar6k_cfg80211_tkip_micerr_event(struct ar6_softc *ar, u8 keyid, bool ismcast);
|
||||
|
||||
#ifdef CONFIG_NL80211_TESTMODE
|
||||
void ar6000_testmode_rx_report_event(struct ar6_softc *ar, void *buf,
|
||||
int buf_len);
|
||||
#else
|
||||
static inline void ar6000_testmode_rx_report_event(struct ar6_softc *ar,
|
||||
void *buf, int buf_len)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _AR6K_CFG80211_H_ */
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/version.h>
|
||||
|
||||
/*
|
||||
* Host side Test Command support
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@
|
|||
#ifndef _IEEE80211_IOCTL_H_
|
||||
#define _IEEE80211_IOCTL_H_
|
||||
|
||||
#include <linux/version.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
#include "a_debug.h"
|
||||
#include "dbglog_api.h"
|
||||
#include "roaming.h"
|
||||
#include "cfg80211.h"
|
||||
|
||||
#define ATH_DEBUG_WMI ATH_DEBUG_MAKE_MODULE_MASK(0)
|
||||
|
||||
|
|
@ -4465,10 +4466,9 @@ wmi_verify_tspec_params(WMI_CREATE_PSTREAM_CMD *pCmd, int tspecCompliance)
|
|||
static int
|
||||
wmi_tcmd_test_report_rx(struct wmi_t *wmip, u8 *datap, int len)
|
||||
{
|
||||
ar6000_testmode_rx_report_event(wmip->wmi_devt, datap, len);
|
||||
|
||||
A_DPRINTF(DBG_WMI, (DBGFMT "Enter\n", DBGARG));
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_HOST_TCMD_SUPPORT*/
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ DriverEntry.c, bcmfwup.c, ChipDetectTask.c, HaltnReset.c, InterfaceDDR.c */
|
|||
|
||||
// TODO - put PHS_SEND in Tx PHS_RECEIVE in Rx path ?
|
||||
#define PHS_SEND (OTHERS<<16)
|
||||
#define PHS_RECIEVE (OTHERS<<17)
|
||||
#define PHS_RECEIVE (OTHERS<<17)
|
||||
#define PHS_MODULE (OTHERS<<18)
|
||||
|
||||
#define INTF_INIT (OTHERS<<19)
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ static void read_bulk_callback(struct urb *urb)
|
|||
{
|
||||
/* Moving ahead by ETH_HLEN to the data ptr as received from FW */
|
||||
skb_pull(skb, ETH_HLEN);
|
||||
PHSRecieve(Adapter, pLeader->Vcid, skb, &skb->len,
|
||||
PHSReceive(Adapter, pLeader->Vcid, skb, &skb->len,
|
||||
NULL,bHeaderSupressionEnabled);
|
||||
|
||||
if(!Adapter->PackInfo[QueueIndex].bEthCSSupport)
|
||||
|
|
@ -229,7 +229,7 @@ static int ReceiveRcb(PS_INTERFACE_ADAPTER psIntfAdapter, PUSB_RCB pRcb)
|
|||
/*
|
||||
Function: InterfaceRx
|
||||
|
||||
Description: This is the hardware specific Function for Recieveing
|
||||
Description: This is the hardware specific Function for Receiving
|
||||
data packet/control packets from the device.
|
||||
|
||||
Input parameters: IN PMINI_ADAPTER Adapter - Miniport Adapter Context
|
||||
|
|
|
|||
|
|
@ -176,8 +176,8 @@ enum enLinkStatus {
|
|||
PHY_SYNC_ACHIVED = 2,
|
||||
LINKUP_IN_PROGRESS = 3,
|
||||
LINKUP_DONE = 4,
|
||||
DREG_RECIEVED = 5,
|
||||
LINK_STATUS_RESET_RECIEVED = 6,
|
||||
DREG_RECEIVED = 5,
|
||||
LINK_STATUS_RESET_RECEIVED = 6,
|
||||
PERIODIC_WAKE_UP_NOTIFICATION_FRM_FW = 7,
|
||||
LINK_SHUTDOWN_REQ_FROM_FIRMWARE = 8,
|
||||
COMPLETE_WAKE_UP_NOTIFICATION_FRM_FW =9
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue