aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
diff options
context:
space:
mode:
authorFranky Lin <frankyl@broadcom.com>2012-06-26 15:26:35 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-06-27 15:23:17 -0400
commitbbfd6a66ff69e3e1850bead3e30031e303581cb1 (patch)
tree6cb00c83da5bd0dc18602265d96145bc88e1fadd /drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
parent135e4c6184d29f0834078bf150009a77b9dae717 (diff)
brcmfmac: restrict dongle txglom disable to old SDIO core
txglomming is a firmware feature for sdio bus interface. For SDIO device cores newer than revision 11, the default setting of firmware should be used instead of disabling it from the host side. Reviewed-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Franky Lin <frankyl@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
index 076b7720ded9..1616c14d5f0c 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -4169,6 +4169,9 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
4169{ 4169{
4170 int ret; 4170 int ret;
4171 struct brcmf_sdio *bus; 4171 struct brcmf_sdio *bus;
4172 struct brcmf_bus_dcmd *dlst;
4173 u32 dngl_txglom;
4174 u8 idx;
4172 4175
4173 brcmf_dbg(TRACE, "Enter\n"); 4176 brcmf_dbg(TRACE, "Enter\n");
4174 4177
@@ -4254,6 +4257,18 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
4254 brcmf_sdio_debugfs_create(bus); 4257 brcmf_sdio_debugfs_create(bus);
4255 brcmf_dbg(INFO, "completed!!\n"); 4258 brcmf_dbg(INFO, "completed!!\n");
4256 4259
4260 /* sdio bus core specific dcmd */
4261 idx = brcmf_sdio_chip_getinfidx(bus->ci, BCMA_CORE_SDIO_DEV);
4262 dlst = kzalloc(sizeof(struct brcmf_bus_dcmd), GFP_KERNEL);
4263 if (bus->ci->c_inf[idx].rev < 12 && dlst) {
4264 /* for sdio core rev < 12, disable txgloming */
4265 dngl_txglom = 0;
4266 dlst->name = "bus:txglom";
4267 dlst->param = (char *)&dngl_txglom;
4268 dlst->param_len = sizeof(u32);
4269 list_add(&dlst->list, &bus->sdiodev->bus_if->dcmd_list);
4270 }
4271
4257 /* if firmware path present try to download and bring up bus */ 4272 /* if firmware path present try to download and bring up bus */
4258 ret = brcmf_bus_start(bus->sdiodev->dev); 4273 ret = brcmf_bus_start(bus->sdiodev->dev);
4259 if (ret != 0) { 4274 if (ret != 0) {