diff options
| author | John W. Linville <linville@tuxdriver.com> | 2012-05-01 14:14:05 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2012-05-01 14:14:05 -0400 |
| commit | 076e7779c07c56c7fa593a28c71ea7432d0c7c95 (patch) | |
| tree | 70a4227b5d898c1abf37ed5779b0cd6f29b471bc | |
| parent | 116a0fc31c6c9b8fc821be5a96e5bf0b43260131 (diff) | |
| parent | 66f2c99af3d6f2d0aa1120884cf1c60613ef61c0 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
| -rw-r--r-- | drivers/bluetooth/ath3k.c | 4 | ||||
| -rw-r--r-- | drivers/bluetooth/btusb.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/ahb.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/b43/main.c | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 63 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/wl1251/main.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/wl1251/sdio.c | 2 | ||||
| -rw-r--r-- | include/net/bluetooth/hci_core.h | 3 | ||||
| -rw-r--r-- | net/bluetooth/hci_core.c | 27 | ||||
| -rw-r--r-- | net/bluetooth/hci_event.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/mgmt.c | 2 | ||||
| -rw-r--r-- | net/mac80211/tx.c | 3 |
14 files changed, 102 insertions, 35 deletions
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c index ae9edca7b56d..57fd867553d7 100644 --- a/drivers/bluetooth/ath3k.c +++ b/drivers/bluetooth/ath3k.c | |||
| @@ -75,6 +75,8 @@ static struct usb_device_id ath3k_table[] = { | |||
| 75 | { USB_DEVICE(0x0CF3, 0x311D) }, | 75 | { USB_DEVICE(0x0CF3, 0x311D) }, |
| 76 | { USB_DEVICE(0x13d3, 0x3375) }, | 76 | { USB_DEVICE(0x13d3, 0x3375) }, |
| 77 | { USB_DEVICE(0x04CA, 0x3005) }, | 77 | { USB_DEVICE(0x04CA, 0x3005) }, |
| 78 | { USB_DEVICE(0x13d3, 0x3362) }, | ||
| 79 | { USB_DEVICE(0x0CF3, 0xE004) }, | ||
| 78 | 80 | ||
| 79 | /* Atheros AR5BBU12 with sflash firmware */ | 81 | /* Atheros AR5BBU12 with sflash firmware */ |
| 80 | { USB_DEVICE(0x0489, 0xE02C) }, | 82 | { USB_DEVICE(0x0489, 0xE02C) }, |
| @@ -94,6 +96,8 @@ static struct usb_device_id ath3k_blist_tbl[] = { | |||
| 94 | { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, | 96 | { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, |
| 95 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, | 97 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, |
| 96 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | 98 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, |
| 99 | { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
| 100 | { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, | ||
| 97 | 101 | ||
| 98 | { } /* Terminating entry */ | 102 | { } /* Terminating entry */ |
| 99 | }; | 103 | }; |
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 3311b812a0c6..9217121362e1 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
| @@ -101,12 +101,16 @@ static struct usb_device_id btusb_table[] = { | |||
| 101 | { USB_DEVICE(0x0c10, 0x0000) }, | 101 | { USB_DEVICE(0x0c10, 0x0000) }, |
| 102 | 102 | ||
| 103 | /* Broadcom BCM20702A0 */ | 103 | /* Broadcom BCM20702A0 */ |
| 104 | { USB_DEVICE(0x0489, 0xe042) }, | ||
| 104 | { USB_DEVICE(0x0a5c, 0x21e3) }, | 105 | { USB_DEVICE(0x0a5c, 0x21e3) }, |
| 105 | { USB_DEVICE(0x0a5c, 0x21e6) }, | 106 | { USB_DEVICE(0x0a5c, 0x21e6) }, |
| 106 | { USB_DEVICE(0x0a5c, 0x21e8) }, | 107 | { USB_DEVICE(0x0a5c, 0x21e8) }, |
| 107 | { USB_DEVICE(0x0a5c, 0x21f3) }, | 108 | { USB_DEVICE(0x0a5c, 0x21f3) }, |
| 108 | { USB_DEVICE(0x413c, 0x8197) }, | 109 | { USB_DEVICE(0x413c, 0x8197) }, |
| 109 | 110 | ||
| 111 | /* Foxconn - Hon Hai */ | ||
| 112 | { USB_DEVICE(0x0489, 0xe033) }, | ||
| 113 | |||
| 110 | { } /* Terminating entry */ | 114 | { } /* Terminating entry */ |
| 111 | }; | 115 | }; |
| 112 | 116 | ||
| @@ -133,6 +137,8 @@ static struct usb_device_id blacklist_table[] = { | |||
| 133 | { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, | 137 | { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, |
| 134 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, | 138 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, |
| 135 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | 139 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, |
| 140 | { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
| 141 | { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, | ||
| 136 | 142 | ||
| 137 | /* Atheros AR5BBU12 with sflash firmware */ | 143 | /* Atheros AR5BBU12 with sflash firmware */ |
| 138 | { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, | 144 | { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, |
diff --git a/drivers/net/wireless/ath/ath5k/ahb.c b/drivers/net/wireless/ath/ath5k/ahb.c index 8c50d9d19d78..aec33cc207fd 100644 --- a/drivers/net/wireless/ath/ath5k/ahb.c +++ b/drivers/net/wireless/ath/ath5k/ahb.c | |||
| @@ -220,6 +220,7 @@ static int ath_ahb_remove(struct platform_device *pdev) | |||
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | ath5k_deinit_ah(ah); | 222 | ath5k_deinit_ah(ah); |
| 223 | iounmap(ah->iobase); | ||
| 223 | platform_set_drvdata(pdev, NULL); | 224 | platform_set_drvdata(pdev, NULL); |
| 224 | ieee80211_free_hw(hw); | 225 | ieee80211_free_hw(hw); |
| 225 | 226 | ||
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index c79e6638c88d..e4d6dc2e37d1 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
| @@ -4827,8 +4827,14 @@ static int b43_op_start(struct ieee80211_hw *hw) | |||
| 4827 | out_mutex_unlock: | 4827 | out_mutex_unlock: |
| 4828 | mutex_unlock(&wl->mutex); | 4828 | mutex_unlock(&wl->mutex); |
| 4829 | 4829 | ||
| 4830 | /* reload configuration */ | 4830 | /* |
| 4831 | b43_op_config(hw, ~0); | 4831 | * Configuration may have been overwritten during initialization. |
| 4832 | * Reload the configuration, but only if initialization was | ||
| 4833 | * successful. Reloading the configuration after a failed init | ||
| 4834 | * may hang the system. | ||
| 4835 | */ | ||
| 4836 | if (!err) | ||
| 4837 | b43_op_config(hw, ~0); | ||
| 4832 | 4838 | ||
| 4833 | return err; | 4839 | return err; |
| 4834 | } | 4840 | } |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c index 4688904908ec..758c115b556e 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c | |||
| @@ -108,9 +108,15 @@ static inline int brcmf_sdioh_f0_write_byte(struct brcmf_sdio_dev *sdiodev, | |||
| 108 | sdio_release_host(sdfunc); | 108 | sdio_release_host(sdfunc); |
| 109 | } | 109 | } |
| 110 | } else if (regaddr == SDIO_CCCR_ABORT) { | 110 | } else if (regaddr == SDIO_CCCR_ABORT) { |
| 111 | sdfunc = kmemdup(sdiodev->func[0], sizeof(struct sdio_func), | ||
| 112 | GFP_KERNEL); | ||
| 113 | if (!sdfunc) | ||
| 114 | return -ENOMEM; | ||
| 115 | sdfunc->num = 0; | ||
| 111 | sdio_claim_host(sdfunc); | 116 | sdio_claim_host(sdfunc); |
| 112 | sdio_writeb(sdfunc, *byte, regaddr, &err_ret); | 117 | sdio_writeb(sdfunc, *byte, regaddr, &err_ret); |
| 113 | sdio_release_host(sdfunc); | 118 | sdio_release_host(sdfunc); |
| 119 | kfree(sdfunc); | ||
| 114 | } else if (regaddr < 0xF0) { | 120 | } else if (regaddr < 0xF0) { |
| 115 | brcmf_dbg(ERROR, "F0 Wr:0x%02x: write disallowed\n", regaddr); | 121 | brcmf_dbg(ERROR, "F0 Wr:0x%02x: write disallowed\n", regaddr); |
| 116 | err_ret = -EPERM; | 122 | err_ret = -EPERM; |
| @@ -486,7 +492,7 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func, | |||
| 486 | kfree(bus_if); | 492 | kfree(bus_if); |
| 487 | return -ENOMEM; | 493 | return -ENOMEM; |
| 488 | } | 494 | } |
| 489 | sdiodev->func[0] = func->card->sdio_func[0]; | 495 | sdiodev->func[0] = func; |
| 490 | sdiodev->func[1] = func; | 496 | sdiodev->func[1] = func; |
| 491 | sdiodev->bus_if = bus_if; | 497 | sdiodev->bus_if = bus_if; |
| 492 | bus_if->bus_priv.sdio = sdiodev; | 498 | bus_if->bus_priv.sdio = sdiodev; |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 2bf5dda29291..eb3829b03cd3 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | |||
| @@ -574,6 +574,8 @@ struct brcmf_sdio { | |||
| 574 | 574 | ||
| 575 | struct task_struct *dpc_tsk; | 575 | struct task_struct *dpc_tsk; |
| 576 | struct completion dpc_wait; | 576 | struct completion dpc_wait; |
| 577 | struct list_head dpc_tsklst; | ||
| 578 | spinlock_t dpc_tl_lock; | ||
| 577 | 579 | ||
| 578 | struct semaphore sdsem; | 580 | struct semaphore sdsem; |
| 579 | 581 | ||
| @@ -2594,29 +2596,58 @@ clkwait: | |||
| 2594 | return resched; | 2596 | return resched; |
| 2595 | } | 2597 | } |
| 2596 | 2598 | ||
| 2599 | static inline void brcmf_sdbrcm_adddpctsk(struct brcmf_sdio *bus) | ||
| 2600 | { | ||
| 2601 | struct list_head *new_hd; | ||
| 2602 | unsigned long flags; | ||
| 2603 | |||
| 2604 | if (in_interrupt()) | ||
| 2605 | new_hd = kzalloc(sizeof(struct list_head), GFP_ATOMIC); | ||
| 2606 | else | ||
| 2607 | new_hd = kzalloc(sizeof(struct list_head), GFP_KERNEL); | ||
| 2608 | if (new_hd == NULL) | ||
| 2609 | return; | ||
| 2610 | |||
| 2611 | spin_lock_irqsave(&bus->dpc_tl_lock, flags); | ||
| 2612 | list_add_tail(new_hd, &bus->dpc_tsklst); | ||
| 2613 | spin_unlock_irqrestore(&bus->dpc_tl_lock, flags); | ||
| 2614 | |||
