diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2012-01-24 08:09:07 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-01-27 14:57:00 -0500 |
commit | 4ed1dd2a7ec880b301beb61cbc1e08811ec340e4 (patch) | |
tree | 87e63a98c4f8bff38fbe9450da7fec5faa3ae21c /drivers/net/wireless/rt2x00/rt2800lib.c | |
parent | 0c17cf962d716ea7557d18679cc98b3a43efb46d (diff) |
rt2800: disable DMA after firmware load
We can receive frames just after firmware load with current code, so
disable DMA just after firmware is loaded, not before.
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800lib.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 3e194b7e9bbe..165535cc5072 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
@@ -412,18 +412,6 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, | |||
412 | } | 412 | } |
413 | 413 | ||
414 | /* | 414 | /* |
415 | * Disable DMA, will be reenabled later when enabling | ||
416 | * the radio. | ||
417 | */ | ||
418 | rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); | ||
419 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); | ||
420 | rt2x00_set_field32(®, WPDMA_GLO_CFG_TX_DMA_BUSY, 0); | ||
421 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0); | ||
422 | rt2x00_set_field32(®, WPDMA_GLO_CFG_RX_DMA_BUSY, 0); | ||
423 | rt2x00_set_field32(®, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1); | ||
424 | rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); | ||
425 | |||
426 | /* | ||
427 | * Write firmware to the device. | 415 | * Write firmware to the device. |
428 | */ | 416 | */ |
429 | rt2800_drv_write_firmware(rt2x00dev, data, len); | 417 | rt2800_drv_write_firmware(rt2x00dev, data, len); |
@@ -444,6 +432,15 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, | |||
444 | } | 432 | } |
445 | 433 | ||
446 | /* | 434 | /* |
435 | * Disable DMA, will be reenabled later when enabling | ||
436 | * the radio. | ||
437 | */ | ||
438 | rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); | ||
439 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); | ||
440 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0); | ||
441 | rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); | ||
442 | |||
443 | /* | ||
447 | * Initialize firmware. | 444 | * Initialize firmware. |
448 | */ | 445 | */ |
449 | rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); | 446 | rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); |