aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2010-08-23 13:55:22 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-25 14:34:55 -0400
commitb9a07ae9d9e09662013992088fd58ffbcb2f9a30 (patch)
tree4c406516c317e42539830d3ed71aad98d074aa17 /drivers/net/wireless/rt2x00
parent21595bd50dd1ef16cf0dce33835caaf5ab458d4c (diff)
rt2x00: Merge rt2800{pci/usb} radio enabling/disabling code to rt2800lib
The functions rt2800pci_enable_radio and rt2800usb_disable_radio are almost equal and can be merged into rt2800lib. This reduces the number of functions which must be exported from rt2800lib to the drivers at the same time. Also rt2800pci_disable_radio and rt2800usb_disable_radio are almost equal and can be merged into rt2800lib in a similar fashion. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Acked-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c103
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.h8
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c69
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c72
4 files changed, 107 insertions, 145 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 8706702b69a..b2f9b04134e 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1655,7 +1655,7 @@ EXPORT_SYMBOL_GPL(rt2800_link_tuner);
1655/* 1655/*
1656 * Initialization functions. 1656 * Initialization functions.
1657 */ 1657 */
1658int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) 1658static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
1659{ 1659{
1660 u32 reg; 1660 u32 reg;
1661 u16 eeprom; 1661 u16 eeprom;
@@ -2025,7 +2025,6 @@ int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
2025 2025
2026 return 0; 2026 return 0;
2027} 2027}
2028EXPORT_SYMBOL_GPL(rt2800_init_registers);
2029 2028
2030static int rt2800_wait_bbp_rf_ready(struct rt2x00_dev *rt2x00dev) 2029static int rt2800_wait_bbp_rf_ready(struct rt2x00_dev *rt2x00dev)
2031{ 2030{
@@ -2068,7 +2067,7 @@ static int rt2800_wait_bbp_ready(struct rt2x00_dev *rt2x00dev)
2068 return -EACCES; 2067 return -EACCES;
2069} 2068}
2070 2069
2071int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) 2070static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
2072{ 2071{
2073 unsigned int i; 2072 unsigned int i;
2074 u16 eeprom; 2073 u16 eeprom;
@@ -2163,7 +2162,6 @@ int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
2163 2162
2164 return 0; 2163 return 0;
2165} 2164}
2166EXPORT_SYMBOL_GPL(rt2800_init_bbp);
2167 2165
2168static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, 2166static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev,
2169 bool bw40, u8 rfcsr24, u8 filter_target) 2167 bool bw40, u8 rfcsr24, u8 filter_target)
@@ -2225,7 +2223,7 @@ static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev,
2225 return rfcsr24; 2223 return rfcsr24;
2226} 2224}
2227 2225
2228int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) 2226static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
2229{ 2227{
2230 u8 rfcsr; 2228 u8 rfcsr;
2231 u8 bbp; 2229 u8 bbp;
@@ -2479,7 +2477,100 @@ int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
2479 2477
2480 return 0; 2478 return 0;
2481} 2479}
2482EXPORT_SYMBOL_GPL(rt2800_init_rfcsr); 2480
2481int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
2482{
2483 u32 reg;
2484 u16 word;
2485
2486 /*
2487 * Initialize all registers.
2488 */
2489 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) ||
2490 rt2800_init_registers(rt2x00dev) ||
2491 rt2800_init_bbp(rt2x00dev) ||
2492 rt2800_init_rfcsr(rt2x00dev)))
2493 return -EIO;
2494
2495 /*
2496 * Send signal to firmware during boot time.
2497 */
2498 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
2499
2500 if (rt2x00_is_usb(rt2x00dev) &&
2501 (rt2x00_rt(rt2x00dev, RT3070) ||
2502 rt2x00_rt(rt2x00dev, RT3071) ||
2503 rt2x00_rt(rt2x00dev, RT3572))) {
2504 udelay(200);
2505 rt2800_mcu_request(rt2x00dev, MCU_CURRENT, 0, 0, 0);
2506 udelay(10);
2507 }
2508
2509 /*
2510 * Enable RX.
2511 */
2512 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
2513 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
2514 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 0);
2515 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
2516
2517 udelay(50);
2518
2519 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
2520 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 1);
2521 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 1);
2522 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_WP_DMA_BURST_SIZE, 2);
2523 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
2524 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
2525
2526 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
2527 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
2528 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 1);
2529 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
2530
2531 /*
2532 * Initialize LED control
2533 */
2534 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED1, &word);
2535 rt2800_mcu_request(rt2x00dev, MCU_LED_1, 0xff,
2536 word & 0xff, (word >> 8) & 0xff);
2537
2538 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED2, &word);
2539 rt2800_mcu_request(rt2x00dev, MCU_LED_2, 0xff,
2540 word & 0xff, (word >> 8) & 0xff);
2541
2542 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED3, &word);
2543 rt2800_mcu_request(rt2x00dev, MCU_LED_3, 0xff,
2544 word & 0xff, (word >> 8) & 0xff);
2545
2546 return 0;
2547}
2548EXPORT_SYMBOL_GPL(rt2800_enable_radio);
2549
2550void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev)
2551{
2552 u32 reg;
2553
2554 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
2555 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
2556 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_DMA_BUSY, 0);
2557 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
2558 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_RX_DMA_BUSY, 0);
2559 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
2560 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
2561
2562 /* Wait for DMA, ignore error */
2563 rt2800_wait_wpdma_ready(rt2x00dev);
2564
2565 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
2566 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 0);
2567 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 0);
2568 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
2569
2570 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0);
2571 rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0);
2572}
2573EXPORT_SYMBOL_GPL(rt2800_disable_radio);
2483 2574
2484int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev) 2575int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev)
2485{ 2576{
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.h b/drivers/net/wireless/rt2x00/rt2800lib.h
index 3b572c63382..deb10b14157 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
@@ -140,6 +140,8 @@ void rt2800_mcu_request(struct rt2x00_dev *rt2x00dev,
140 const u8 command, const u8 token, 140 const u8 command, const u8 token,
141 const u8 arg0, const u8 arg1); 141 const u8 arg0, const u8 arg1);
142 142
143int rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev);
144
143int rt2800_check_firmware(struct rt2x00_dev *rt2x00dev, 145int rt2800_check_firmware(struct rt2x00_dev *rt2x00dev,
144 const u8 *data, const size_t len); 146 const u8 *data, const size_t len);
145int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, 147int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
@@ -176,10 +178,8 @@ void rt2800_reset_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual);
176void rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual, 178void rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual,
177 const u32 count); 179 const u32 count);
178 180
179int rt2800_init_registers(struct rt2x00_dev *rt2x00dev); 181int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev);
180int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev); 182void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev);
181int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev);
182int rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev);
183 183
184int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev); 184int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev);
185void rt2800_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev); 185void rt2800_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev);
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index a5e58705b49..4d93204b221 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -399,78 +399,18 @@ static int rt2800pci_init_registers(struct rt2x00_dev *rt2x00dev)
399 399
400static int rt2800pci_enable_radio(struct rt2x00_dev *rt2x00dev) 400static int rt2800pci_enable_radio(struct rt2x00_dev *rt2x00dev)
401{ 401{
402 u32 reg;
403 u16 word;
404
405 /*
406 * Initialize all registers.
407 */
408 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) || 402 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) ||
409 rt2800pci_init_queues(rt2x00dev) || 403 rt2800pci_init_queues(rt2x00dev)))
410 rt2800_init_registers(rt2x00dev) ||
411 rt2800_wait_wpdma_ready(rt2x00dev) ||
412 rt2800_init_bbp(rt2x00dev) ||
413 rt2800_init_rfcsr(rt2x00dev)))
414 return -EIO; 404 return -EIO;
415 405
416 /* 406 return rt2800_enable_radio(rt2x00dev);
417 * Send signal to firmware during boot time.
418 */
419 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
420
421 /*
422 * Enable RX.
423 */
424 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
425 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
426 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 0);
427 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
428
429 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
430 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 1);
431 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 1);
432 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_WP_DMA_BURST_SIZE, 2);
433 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
434 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
435
436 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
437 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
438 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 1);
439 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
440
441 /*
442 * Initialize LED control
443 */
444 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED1, &word);
445 rt2800_mcu_request(rt2x00dev, MCU_LED_1, 0xff,
446 word & 0xff, (word >> 8) & 0xff);
447
448 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED2, &word);
449 rt2800_mcu_request(rt2x00dev, MCU_LED_2, 0xff,
450 word & 0xff, (word >> 8) & 0xff);
451
452 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED3, &word);
453 rt2800_mcu_request(rt2x00dev, MCU_LED_3, 0xff,
454 word & 0xff, (word >> 8) & 0xff);
455
456 return 0;
457} 407}
458 408
459static void rt2800pci_disable_radio(struct rt2x00_dev *rt2x00dev) 409static void rt2800pci_disable_radio(struct rt2x00_dev *rt2x00dev)
460{ 410{
461 u32 reg; 411 u32 reg;
462 412
463 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg); 413 rt2800_disable_radio(rt2x00dev);
464 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
465 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_DMA_BUSY, 0);
466 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
467 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_RX_DMA_BUSY, 0);
468 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
469 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
470
471 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0);
472 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0);
473 rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0);
474 414
475 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001280); 415 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001280);
476 416
@@ -486,9 +426,6 @@ static void rt2800pci_disable_radio(struct rt2x00_dev *rt2x00dev)
486 426
487 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f); 427 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f);
488 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00); 428 rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00);
489
490 /* Wait for DMA, ignore error */
491 rt2800_wait_wpdma_ready(rt2x00dev);
492} 429}
493 430
494static int rt2800pci_set_state(struct rt2x00_dev *rt2x00dev, 431static int rt2800pci_set_state(struct rt2x00_dev *rt2x00dev,
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 02f95892aa0..82ae58e0c5d 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -101,19 +101,6 @@ static int rt2800usb_write_firmware(struct rt2x00_dev *rt2x00dev,
101 msleep(10); 101 msleep(10);
102 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); 102 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
103 103
104 /*
105 * Send signal to firmware during boot time.
106 */
107 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
108
109 if (rt2x00_rt(rt2x00dev, RT3070) ||
110 rt2x00_rt(rt2x00dev, RT3071) ||
111 rt2x00_rt(rt2x00dev, RT3572)) {
112 udelay(200);
113 rt2800_mcu_request(rt2x00dev, MCU_CURRENT, 0, 0, 0);
114 udelay(10);
115 }
116
117 return 0; 104 return 0;
118} 105}
119 106
@@ -173,30 +160,10 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
173static int rt2800usb_enable_radio(struct rt2x00_dev *rt2x00dev) 160static int rt2800usb_enable_radio(struct rt2x00_dev *rt2x00dev)
174{ 161{
175 u32 reg; 162 u32 reg;
176 u16 word;
177 163
178 /* 164 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev)))
179 * Initialize all registers.
180 */
181 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) ||
182 rt2800_init_registers(rt2x00dev) ||
183 rt2800_init_bbp(rt2x00dev) ||
184 rt2800_init_rfcsr(rt2x00dev)))
185 return -EIO; 165 return -EIO;
186 166
187 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
188 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
189 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
190
191 udelay(50);
192
193 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
194 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
195 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 1);
196 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 1);
197 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
198
199
200 rt2800_register_read(rt2x00dev, USB_DMA_CFG, &reg); 167 rt2800_register_read(rt2x00dev, USB_DMA_CFG, &reg);
201 rt2x00_set_field32(&reg, USB_DMA_CFG_PHY_CLEAR, 0); 168 rt2x00_set_field32(&reg, USB_DMA_CFG_PHY_CLEAR, 0);
202 rt2x00_set_field32(&reg, USB_DMA_CFG_RX_BULK_AGG_EN, 0); 169 rt2x00_set_field32(&reg, USB_DMA_CFG_RX_BULK_AGG_EN, 0);
@@ -211,45 +178,12 @@ static int rt2800usb_enable_radio(struct rt2x00_dev *rt2x00dev)
211 rt2x00_set_field32(&reg, USB_DMA_CFG_TX_BULK_EN, 1); 178 rt2x00_set_field32(&reg, USB_DMA_CFG_TX_BULK_EN, 1);
212 rt2800_register_write(rt2x00dev, USB_DMA_CFG, reg); 179 rt2800_register_write(rt2x00dev, USB_DMA_CFG, reg);
213 180
214 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg); 181 return rt2800_enable_radio(rt2x00dev);
215 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
216 rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 1);
217 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
218
219 /*
220 * Initialize LED control
221 */
222 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED1, &word);
223 rt2800_mcu_request(rt2x00dev, MCU_LED_1, 0xff,
224 word & 0xff, (word >> 8) & 0xff);
225
226 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED2, &word);
227 rt2800_mcu_request(rt2x00dev, MCU_LED_2, 0xff,
228 word & 0xff, (word >> 8) & 0xff);
229
230 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED3, &word);
231 rt2800_mcu_request(rt2x00dev, MCU_LED_3, 0xff,
232 word & 0xff, (word >> 8) & 0xff);
233
234 return 0;
235} 182}
236 183
237static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev) 184static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev)
238{ 185{
239 u32 reg; 186 rt2800_disable_radio(rt2x00dev);
240
241 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
242 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
243 rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
244 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
245
246 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0);
247 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0);
248 rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0);
249
250 /* Wait for DMA, ignore error */
251 rt2800_wait_wpdma_ready(rt2x00dev);
252
253 rt2x00usb_disable_radio(rt2x00dev); 187 rt2x00usb_disable_radio(rt2x00dev);
254} 188}
255 189