diff options
author | Helmut Schaa <helmut.schaa@googlemail.com> | 2011-04-18 09:34:01 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-19 15:39:59 -0400 |
commit | 9a8199961b22e61221a6114b8bbbc26ddcc243f7 (patch) | |
tree | d9f67618a5b73065a48d18424aa91a6022b48fd2 | |
parent | 46a01ec00d05581c5bd0c37e680d5b37af4953b4 (diff) |
rt2x00: Optimize register access in rt2800pci
All register reads/writes in rt2800pci were previously done with
rt2800_register_read/rt2800_register_write. These however indirectly
call rt2x00pci_register_read/rt2x00pci_register_write which adds an
additional overhead of at least one call and several move instructions
to each register access.
Replacing the calls to rt2800_register_read/rt2800_register_write with
direct calls to rt2x00pci_register_read/rt2x00pci_register_write gets
rid of quite a number of instructions in the drivers hotpaths (IRQ
handling and txdone handling).
For consistency replace all references to rt2800_register_read/write
with the rt2x00pci_register_read/write variants.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800pci.c | 158 |
1 files changed, 84 insertions, 74 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c index 6f91a9ad4d31..b0c729b25c73 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c | |||
@@ -66,7 +66,7 @@ static void rt2800pci_mcu_status(struct rt2x00_dev *rt2x00dev, const u8 token) | |||
66 | return; | 66 | return; |
67 | 67 | ||
68 | for (i = 0; i < 200; i++) { | 68 | for (i = 0; i < 200; i++) { |
69 | rt2800_register_read(rt2x00dev, H2M_MAILBOX_CID, ®); | 69 | rt2x00pci_register_read(rt2x00dev, H2M_MAILBOX_CID, ®); |
70 | 70 | ||
71 | if ((rt2x00_get_field32(reg, H2M_MAILBOX_CID_CMD0) == token) || | 71 | if ((rt2x00_get_field32(reg, H2M_MAILBOX_CID_CMD0) == token) || |
72 | (rt2x00_get_field32(reg, H2M_MAILBOX_CID_CMD1) == token) || | 72 | (rt2x00_get_field32(reg, H2M_MAILBOX_CID_CMD1) == token) || |
@@ -80,8 +80,8 @@ static void rt2800pci_mcu_status(struct rt2x00_dev *rt2x00dev, const u8 token) | |||
80 | if (i == 200) | 80 | if (i == 200) |
81 | ERROR(rt2x00dev, "MCU request failed, no response from hardware\n"); | 81 | ERROR(rt2x00dev, "MCU request failed, no response from hardware\n"); |
82 | 82 | ||
83 | rt2800_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0); | 83 | rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0); |
84 | rt2800_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); | 84 | rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); |
85 | } | 85 | } |
86 | 86 | ||
87 | #if defined(CONFIG_RALINK_RT288X) || defined(CONFIG_RALINK_RT305X) | 87 | #if defined(CONFIG_RALINK_RT288X) || defined(CONFIG_RALINK_RT305X) |
@@ -105,7 +105,7 @@ static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom) | |||
105 | struct rt2x00_dev *rt2x00dev = eeprom->data; | 105 | struct rt2x00_dev *rt2x00dev = eeprom->data; |
106 | u32 reg; | 106 | u32 reg; |
107 | 107 | ||
108 | rt2800_register_read(rt2x00dev, E2PROM_CSR, ®); | 108 | rt2x00pci_register_read(rt2x00dev, E2PROM_CSR, ®); |
109 | 109 | ||
110 | eeprom->reg_data_in = !!rt2x00_get_field32(reg, E2PROM_CSR_DATA_IN); | 110 | eeprom->reg_data_in = !!rt2x00_get_field32(reg, E2PROM_CSR_DATA_IN); |
111 | eeprom->reg_data_out = !!rt2x00_get_field32(reg, E2PROM_CSR_DATA_OUT); | 111 | eeprom->reg_data_out = !!rt2x00_get_field32(reg, E2PROM_CSR_DATA_OUT); |
@@ -127,7 +127,7 @@ static void rt2800pci_eepromregister_write(struct eeprom_93cx6 *eeprom) | |||
127 | rt2x00_set_field32(®, E2PROM_CSR_CHIP_SELECT, | 127 | rt2x00_set_field32(®, E2PROM_CSR_CHIP_SELECT, |
128 | !!eeprom->reg_chip_select); | 128 | !!eeprom->reg_chip_select); |
129 | 129 | ||
130 | rt2800_register_write(rt2x00dev, E2PROM_CSR, reg); | 130 | rt2x00pci_register_write(rt2x00dev, E2PROM_CSR, reg); |
131 | } | 131 | } |
132 | 132 | ||
133 | static void rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev) | 133 | static void rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev) |
@@ -135,7 +135,7 @@ static void rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev) | |||
135 | struct eeprom_93cx6 eeprom; | 135 | struct eeprom_93cx6 eeprom; |
136 | u32 reg; | 136 | u32 reg; |
137 | 137 | ||
138 | rt2800_register_read(rt2x00dev, E2PROM_CSR, ®); | 138 | rt2x00pci_register_read(rt2x00dev, E2PROM_CSR, ®); |
139 | 139 | ||
140 | eeprom.data = rt2x00dev; | 140 | eeprom.data = rt2x00dev; |
141 | eeprom.register_read = rt2800pci_eepromregister_read; | 141 | eeprom.register_read = rt2800pci_eepromregister_read; |
@@ -195,9 +195,9 @@ static void rt2800pci_start_queue(struct data_queue *queue) | |||
195 | 195 | ||
196 | switch (queue->qid) { | 196 | switch (queue->qid) { |
197 | case QID_RX: | 197 | case QID_RX: |
198 | rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, ®); | 198 | rt2x00pci_register_read(rt2x00dev, MAC_SYS_CTRL, ®); |
199 | rt2x00_set_field32(®, MAC_SYS_CTRL_ENABLE_RX, 1); | 199 | rt2x00_set_field32(®, MAC_SYS_CTRL_ENABLE_RX, 1); |
200 | rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); | 200 | rt2x00pci_register_write(rt2x00dev, MAC_SYS_CTRL, reg); |
201 | break; | 201 | break; |
202 | case QID_BEACON: | 202 | case QID_BEACON: |
203 | /* | 203 | /* |
@@ -207,15 +207,15 @@ static void rt2800pci_start_queue(struct data_queue *queue) | |||
207 | tasklet_enable(&rt2x00dev->tbtt_tasklet); | 207 | tasklet_enable(&rt2x00dev->tbtt_tasklet); |
208 | tasklet_enable(&rt2x00dev->pretbtt_tasklet); | 208 | tasklet_enable(&rt2x00dev->pretbtt_tasklet); |
209 | 209 | ||
210 | rt2800_register_read(rt2x00dev, BCN_TIME_CFG, ®); | 210 | rt2x00pci_register_read(rt2x00dev, BCN_TIME_CFG, ®); |
211 | rt2x00_set_field32(®, BCN_TIME_CFG_TSF_TICKING, 1); | 211 | rt2x00_set_field32(®, BCN_TIME_CFG_TSF_TICKING, 1); |
212 | rt2x00_set_field32(®, BCN_TIME_CFG_TBTT_ENABLE, 1); | 212 | rt2x00_set_field32(®, BCN_TIME_CFG_TBTT_ENABLE, 1); |
213 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_GEN, 1); | 213 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_GEN, 1); |
214 | rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); | 214 | rt2x00pci_register_write(rt2x00dev, BCN_TIME_CFG, reg); |
215 | 215 | ||
216 | rt2800_register_read(rt2x00dev, INT_TIMER_EN, ®); | 216 | rt2x00pci_register_read(rt2x00dev, INT_TIMER_EN, ®); |
217 | rt2x00_set_field32(®, INT_TIMER_EN_PRE_TBTT_TIMER, 1); | 217 | rt2x00_set_field32(®, INT_TIMER_EN_PRE_TBTT_TIMER, 1); |
218 | rt2800_register_write(rt2x00dev, INT_TIMER_EN, reg); | 218 | rt2x00pci_register_write(rt2x00dev, INT_TIMER_EN, reg); |
219 | break; | 219 | break; |
220 | default: | 220 | default: |
221 | break; | 221 | break; |
@@ -233,11 +233,13 @@ static void rt2800pci_kick_queue(struct data_queue *queue) | |||
233 | case QID_AC_BE: | 233 | case QID_AC_BE: |
234 | case QID_AC_BK: | 234 | case QID_AC_BK: |
235 | entry = rt2x00queue_get_entry(queue, Q_INDEX); | 235 | entry = rt2x00queue_get_entry(queue, Q_INDEX); |
236 | rt2800_register_write(rt2x00dev, TX_CTX_IDX(queue->qid), entry->entry_idx); | 236 | rt2x00pci_register_write(rt2x00dev, TX_CTX_IDX(queue->qid), |
237 | entry->entry_idx); | ||
237 | break; | 238 | break; |
238 | case QID_MGMT: | 239 | case QID_MGMT: |
239 | entry = rt2x00queue_get_entry(queue, Q_INDEX); | 240 | entry = rt2x00queue_get_entry(queue, Q_INDEX); |
240 | rt2800_register_write(rt2x00dev, TX_CTX_IDX(5), entry->entry_idx); | 241 | rt2x00pci_register_write(rt2x00dev, TX_CTX_IDX(5), |
242 | entry->entry_idx); | ||
241 | break; | 243 | break; |
242 | default: | 244 | default: |
243 | break; | 245 | break; |
@@ -251,20 +253,20 @@ static void rt2800pci_stop_queue(struct data_queue *queue) | |||
251 | 253 | ||
252 | switch (queue->qid) { | 254 | switch (queue->qid) { |
253 | case QID_RX: | 255 | case QID_RX: |
254 | rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, ®); | 256 | rt2x00pci_register_read(rt2x00dev, MAC_SYS_CTRL, ®); |
255 | rt2x00_set_field32(®, MAC_SYS_CTRL_ENABLE_RX, 0); | 257 | rt2x00_set_field32(®, MAC_SYS_CTRL_ENABLE_RX, 0); |
256 | rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); | 258 | rt2x00pci_register_write(rt2x00dev, MAC_SYS_CTRL, reg); |
257 | break; | 259 | break; |
258 | case QID_BEACON: | 260 | case QID_BEACON: |
259 | rt2800_register_read(rt2x00dev, BCN_TIME_CFG, ®); | 261 | rt2x00pci_register_read(rt2x00dev, BCN_TIME_CFG, ®); |
260 | rt2x00_set_field32(®, BCN_TIME_CFG_TSF_TICKING, 0); | 262 | rt2x00_set_field32(®, BCN_TIME_CFG_TSF_TICKING, 0); |
261 | rt2x00_set_field32(®, BCN_TIME_CFG_TBTT_ENABLE, 0); | 263 | rt2x00_set_field32(®, BCN_TIME_CFG_TBTT_ENABLE, 0); |
262 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_GEN, 0); | 264 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_GEN, 0); |
263 | rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); | 265 | rt2x00pci_register_write(rt2x00dev, BCN_TIME_CFG, reg); |
264 | 266 | ||
265 | rt2800_register_read(rt2x00dev, INT_TIMER_EN, ®); | 267 | rt2x00pci_register_read(rt2x00dev, INT_TIMER_EN, ®); |
266 | rt2x00_set_field32(®, INT_TIMER_EN_PRE_TBTT_TIMER, 0); | 268 | rt2x00_set_field32(®, INT_TIMER_EN_PRE_TBTT_TIMER, 0); |
267 | rt2800_register_write(rt2x00dev, INT_TIMER_EN, reg); | 269 | rt2x00pci_register_write(rt2x00dev, INT_TIMER_EN, reg); |
268 | 270 | ||
269 | /* | 271 | /* |
270 | * Wait for tbtt tasklets to finish. | 272 | * Wait for tbtt tasklets to finish. |
@@ -295,7 +297,7 @@ static int rt2800pci_write_firmware(struct rt2x00_dev *rt2x00dev, | |||
295 | */ | 297 | */ |
296 | reg = 0; | 298 | reg = 0; |
297 | rt2x00_set_field32(®, PBF_SYS_CTRL_HOST_RAM_WRITE, 1); | 299 | rt2x00_set_field32(®, PBF_SYS_CTRL_HOST_RAM_WRITE, 1); |
298 | rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, reg); | 300 | rt2x00pci_register_write(rt2x00dev, PBF_SYS_CTRL, reg); |
299 | 301 | ||
300 | /* | 302 | /* |
301 | * Write firmware to device. | 303 | * Write firmware to device. |
@@ -303,11 +305,11 @@ static int rt2800pci_write_firmware(struct rt2x00_dev *rt2x00dev, | |||
303 | rt2800_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, | 305 | rt2800_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, |
304 | data, len); | 306 | data, len); |
305 | 307 | ||
306 | rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000); | 308 | rt2x00pci_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000); |
307 | rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001); | 309 | rt2x00pci_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001); |
308 | 310 | ||
309 | rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); | 311 | rt2x00pci_register_write(rt2x00dev, H2M_BBP_AGENT, 0); |
310 | rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); | 312 | rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); |
311 | 313 | ||
312 | return 0; | 314 | return 0; |
313 | } | 315 | } |
@@ -351,7 +353,7 @@ static void rt2800pci_clear_entry(struct queue_entry *entry) | |||
351 | * Set RX IDX in register to inform hardware that we have | 353 | * Set RX IDX in register to inform hardware that we have |
352 | * handled this entry and it is available for reuse again. | 354 | * handled this entry and it is available for reuse again. |
353 | */ | 355 | */ |
354 | rt2800_register_write(rt2x00dev, RX_CRX_IDX, | 356 | rt2x00pci_register_write(rt2x00dev, RX_CRX_IDX, |
355 | entry->entry_idx); | 357 | entry->entry_idx); |
356 | } else { | 358 | } else { |
357 | rt2x00_desc_read(entry_priv->desc, 1, &word); | 359 | rt2x00_desc_read(entry_priv->desc, 1, &word); |
@@ -369,45 +371,51 @@ static int rt2800pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
369 | * Initialize registers. | 371 | * Initialize registers. |
370 | */ | 372 | */ |
371 | entry_priv = rt2x00dev->tx[0].entries[0].priv_data; | 373 | entry_priv = rt2x00dev->tx[0].entries[0].priv_data; |
372 | rt2800_register_write(rt2x00dev, TX_BASE_PTR0, entry_priv->desc_dma); | 374 | rt2x00pci_register_write(rt2x00dev, TX_BASE_PTR0, entry_priv->desc_dma); |
373 | rt2800_register_write(rt2x00dev, TX_MAX_CNT0, rt2x00dev->tx[0].limit); | 375 | rt2x00pci_register_write(rt2x00dev, TX_MAX_CNT0, |
374 | rt2800_register_write(rt2x00dev, TX_CTX_IDX0, 0); | 376 | rt2x00dev->tx[0].limit); |
375 | rt2800_register_write(rt2x00dev, TX_DTX_IDX0, 0); | 377 | rt2x00pci_register_write(rt2x00dev, TX_CTX_IDX0, 0); |
378 | rt2x00pci_register_write(rt2x00dev, TX_DTX_IDX0, 0); | ||
376 | 379 | ||
377 | entry_priv = rt2x00dev->tx[1].entries[0].priv_data; | 380 | entry_priv = rt2x00dev->tx[1].entries[0].priv_data; |
378 | rt2800_register_write(rt2x00dev, TX_BASE_PTR1, entry_priv->desc_dma); | 381 | rt2x00pci_register_write(rt2x00dev, TX_BASE_PTR1, entry_priv->desc_dma); |
379 | rt2800_register_write(rt2x00dev, TX_MAX_CNT1, rt2x00dev->tx[1].limit); | 382 | rt2x00pci_register_write(rt2x00dev, TX_MAX_CNT1, |
380 | rt2800_register_write(rt2x00dev, TX_CTX_IDX1, 0); | 383 | rt2x00dev->tx[1].limit); |
381 | rt2800_register_write(rt2x00dev, TX_DTX_IDX1, 0); | 384 | rt2x00pci_register_write(rt2x00dev, TX_CTX_IDX1, 0); |
385 | rt2x00pci_register_write(rt2x00dev, TX_DTX_IDX1, 0); | ||
382 | 386 | ||
383 | entry_priv = rt2x00dev->tx[2].entries[0].priv_data; | 387 | entry_priv = rt2x00dev->tx[2].entries[0].priv_data; |
384 | rt2800_register_write(rt2x00dev, TX_BASE_PTR2, entry_priv->desc_dma); | 388 | rt2x00pci_register_write(rt2x00dev, TX_BASE_PTR2, entry_priv->desc_dma); |
385 | rt2800_register_write(rt2x00dev, TX_MAX_CNT2, rt2x00dev->tx[2].limit); | 389 | rt2x00pci_register_write(rt2x00dev, TX_MAX_CNT2, |
386 | rt2800_register_write(rt2x00dev, TX_CTX_IDX2, 0); | 390 | rt2x00dev->tx[2].limit); |
387 | rt2800_register_write(rt2x00dev, TX_DTX_IDX2, 0); | 391 | rt2x00pci_register_write(rt2x00dev, TX_CTX_IDX2, 0); |
392 | rt2x00pci_register_write(rt2x00dev, TX_DTX_IDX2, 0); | ||
388 | 393 | ||
389 | entry_priv = rt2x00dev->tx[3].entries[0].priv_data; | 394 | entry_priv = rt2x00dev->tx[3].entries[0].priv_data; |
390 | rt2800_register_write(rt2x00dev, TX_BASE_PTR3, entry_priv->desc_dma); | 395 | rt2x00pci_register_write(rt2x00dev, TX_BASE_PTR3, entry_priv->desc_dma); |
391 | rt2800_register_write(rt2x00dev, TX_MAX_CNT3, rt2x00dev->tx[3].limit); | 396 | rt2x00pci_register_write(rt2x00dev, TX_MAX_CNT3, |
392 | rt2800_register_write(rt2x00dev, TX_CTX_IDX3, 0); | 397 | rt2x00dev->tx[3].limit); |
393 | rt2800_register_write(rt2x00dev, TX_DTX_IDX3, 0); | 398 | rt2x00pci_register_write(rt2x00dev, TX_CTX_IDX3, 0); |
399 | rt2x00pci_register_write(rt2x00dev, TX_DTX_IDX3, 0); | ||
394 | 400 | ||
395 | entry_priv = rt2x00dev->rx->entries[0].priv_data; | 401 | entry_priv = rt2x00dev->rx->entries[0].priv_data; |
396 | rt2800_register_write(rt2x00dev, RX_BASE_PTR, entry_priv->desc_dma); | 402 | rt2x00pci_register_write(rt2x00dev, RX_BASE_PTR, entry_priv->desc_dma); |
397 | rt2800_register_write(rt2x00dev, RX_MAX_CNT, rt2x00dev->rx[0].limit); | 403 | rt2x00pci_register_write(rt2x00dev, RX_MAX_CNT, |
398 | rt2800_register_write(rt2x00dev, RX_CRX_IDX, rt2x00dev->rx[0].limit - 1); | 404 | rt2x00dev->rx[0].limit); |
399 | rt2800_register_write(rt2x00dev, RX_DRX_IDX, 0); | 405 | rt2x00pci_register_write(rt2x00dev, RX_CRX_IDX, |
406 | rt2x00dev->rx[0].limit - 1); | ||
407 | rt2x00pci_register_write(rt2x00dev, RX_DRX_IDX, 0); | ||
400 | 408 | ||
401 | /* | 409 | /* |
402 | * Enable global DMA configuration | 410 | * Enable global DMA configuration |
403 | */ | 411 | */ |
404 | rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); | 412 | rt2x00pci_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); |
405 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); | 413 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); |
406 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0); | 414 | rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0); |
407 | rt2x00_set_field32(®, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1); | 415 | rt2x00_set_field32(®, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1); |
408 | rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); | 416 | rt2x00pci_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); |
409 | 417 | ||
410 | rt2800_register_write(rt2x00dev, DELAY_INT_CFG, 0); | 418 | rt2x00pci_register_write(rt2x00dev, DELAY_INT_CFG, 0); |
411 | 419 | ||
412 | return 0; | 420 | return 0; |
413 | } | 421 | } |
@@ -427,8 +435,8 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, | |||
427 | * should clear the register to assure a clean state. | 435 | * should clear the register to assure a clean state. |
428 | */ | 436 | */ |
429 | if (state == STATE_RADIO_IRQ_ON) { | 437 | if (state == STATE_RADIO_IRQ_ON) { |
430 | rt2800_register_read(rt2x00dev, INT_SOURCE_CSR, ®); | 438 | rt2x00pci_register_read(rt2x00dev, INT_SOURCE_CSR, ®); |
431 | rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, reg); | 439 | rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg); |
432 | 440 | ||
433 | /* | 441 | /* |
434 | * Enable tasklets. The beacon related tasklets are | 442 | * Enable tasklets. The beacon related tasklets are |
@@ -440,7 +448,7 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, | |||
440 | } | 448 | } |
441 | 449 | ||
442 | spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags); | 450 | spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags); |
443 | rt2800_register_read(rt2x00dev, INT_MASK_CSR, ®); | 451 | rt2x00pci_register_read(rt2x00dev, INT_MASK_CSR, ®); |
444 | rt2x00_set_field32(®, INT_MASK_CSR_RXDELAYINT, 0); | 452 | rt2x00_set_field32(®, INT_MASK_CSR_RXDELAYINT, 0); |
445 | rt2x00_set_field32(®, INT_MASK_CSR_TXDELAYINT, 0); | 453 | rt2x00_set_field32(®, INT_MASK_CSR_TXDELAYINT, 0); |
446 | rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, mask); | 454 | rt2x00_set_field32(®, INT_MASK_CSR_RX_DONE, mask); |
@@ -459,7 +467,7 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev, | |||
459 | rt2x00_set_field32(®, INT_MASK_CSR_GPTIMER, 0); | 467 | rt2x00_set_field32(®, INT_MASK_CSR_GPTIMER, 0); |
460 | rt2x00_set_field32(®, INT_MASK_CSR_RX_COHERENT, 0); | 468 | rt2x00_set_field32(®, INT_MASK_CSR_RX_COHERENT, 0); |
461 | rt2x00_set_field32(®, INT_MASK_CSR_TX_COHERENT, 0); | 469 | rt2x00_set_field32(®, INT_MASK_CSR_TX_COHERENT, 0); |
462 | rt2800_register_write(rt2x00dev, INT_MASK_CSR, reg); | 470 | rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg); |
463 | spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags); | 471 | spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags); |
464 | 472 | ||
465 | if (state == STATE_RADIO_IRQ_OFF) { | 473 | if (state == STATE_RADIO_IRQ_OFF) { |
@@ -480,7 +488,7 @@ static int rt2800pci_init_registers(struct rt2x00_dev *rt2x00dev) | |||
480 | /* | 488 | /* |
481 | * Reset DMA indexes | 489 | * Reset DMA indexes |
482 | */ | 490 | */ |
483 | rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, ®); | 491 | rt2x00pci_register_read(rt2x00dev, WPDMA_RST_IDX, ®); |
484 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, 1); | 492 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, 1); |
485 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX1, 1); | 493 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX1, 1); |
486 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX2, 1); | 494 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX2, 1); |
@@ -488,26 +496,26 @@ static int rt2800pci_init_registers(struct rt2x00_dev *rt2x00dev) | |||
488 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX4, 1); | 496 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX4, 1); |
489 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX5, 1); | 497 | rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX5, 1); |
490 | rt2x00_set_field32(®, WPDMA_RST_IDX_DRX_IDX0, 1); | 498 | rt2x00_set_field32(®, WPDMA_RST_IDX_DRX_IDX0, 1); |
491 | rt2800_register_write(rt2x00dev, WPDMA_RST_IDX, reg); | 499 | rt2x00pci_register_write(rt2x00dev, WPDMA_RST_IDX, reg); |
492 | 500 | ||
493 | rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f); | 501 | rt2x00pci_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f); |
494 | rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00); | 502 | rt2x00pci_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00); |
495 | 503 | ||
496 | if (rt2x00_rt(rt2x00dev, RT5390)) { | 504 | if (rt2x00_rt(rt2x00dev, RT5390)) { |
497 | rt2800_register_read(rt2x00dev, AUX_CTRL, ®); | 505 | rt2x00pci_register_read(rt2x00dev, AUX_CTRL, ®); |
498 | rt2x00_set_field32(®, AUX_CTRL_FORCE_PCIE_CLK, 1); | 506 | rt2x00_set_field32(®, AUX_CTRL_FORCE_PCIE_CLK, 1); |
499 | rt2x00_set_field32(®, AUX_CTRL_WAKE_PCIE_EN, 1); | 507 | rt2x00_set_field32(®, AUX_CTRL_WAKE_PCIE_EN, 1); |
500 | rt2800_register_write(rt2x00dev, AUX_CTRL, reg); | 508 | rt2x00pci_register_write(rt2x00dev, AUX_CTRL, reg); |
501 | } | 509 | } |
502 | 510 | ||
503 | rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000003); | 511 | rt2x00pci_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000003); |
504 | 512 | ||
505 | rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, ®); | 513 | rt2x00pci_register_read(rt2x00dev, MAC_SYS_CTRL, ®); |
506 | rt2x00_set_field32(®, MAC_SYS_CTRL_RESET_CSR, 1); | 514 | rt2x00_set_field32(®, MAC_SYS_CTRL_RESET_CSR, 1); |
507 | rt2x00_set_field32(®, MAC_SYS_CTRL_RESET_BBP, 1); | 515 | rt2x00_set_field32(®, MAC_SYS_CTRL_RESET_BBP, 1); |
508 | rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); | 516 | rt2x00pci_register_write(rt2x00dev, MAC_SYS_CTRL, reg); |
509 | 517 | ||
510 | rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); | 518 | rt2x00pci_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); |
511 | 519 | ||
512 | return 0; | 520 | return 0; |
513 | } | 521 | } |
@@ -525,8 +533,8 @@ static void rt2800pci_disable_radio(struct rt2x00_dev *rt2x00dev) | |||
525 | { | 533 | { |
526 | if (rt2x00_is_soc(rt2x00dev)) { | 534 | if (rt2x00_is_soc(rt2x00dev)) { |
527 | rt2800_disable_radio(rt2x00dev); | 535 | rt2800_disable_radio(rt2x00dev); |
528 | rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0); | 536 | rt2x00pci_register_write(rt2x00dev, PWR_PIN_CFG, 0); |
529 | rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0); | 537 | rt2x00pci_register_write(rt2x00dev, TX_PIN_CFG, 0); |
530 | } | 538 | } |
531 | } | 539 | } |
532 | 540 | ||
@@ -537,8 +545,10 @@ static int rt2800pci_set_state(struct rt2x00_dev *rt2x00dev, | |||
537 | rt2800_mcu_request(rt2x00dev, MCU_WAKEUP, TOKEN_WAKUP, 0, 0x02); | 545 | rt2800_mcu_request(rt2x00dev, MCU_WAKEUP, TOKEN_WAKUP, 0, 0x02); |
538 | rt2800pci_mcu_status(rt2x00dev, TOKEN_WAKUP); | 546 | rt2800pci_mcu_status(rt2x00dev, TOKEN_WAKUP); |
539 | } else if (state == STATE_SLEEP) { | 547 | } else if (state == STATE_SLEEP) { |
540 | rt2800_register_write(rt2x00dev, H2M_MAILBOX_STATUS, 0xffffffff); | 548 | rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_STATUS, |
541 | rt2800_register_write(rt2x00dev, H2M_MAILBOX_CID, 0xffffffff); | 549 | 0xffffffff); |
550 | rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, | ||
551 | 0xffffffff); | ||
542 | rt2800_mcu_request(rt2x00dev, MCU_SLEEP, 0x01, 0xff, 0x01); | 552 | rt2800_mcu_request(rt2x00dev, MCU_SLEEP, 0x01, 0xff, 0x01); |
543 | } | 553 | } |
544 | 554 | ||
@@ -778,9 +788,9 @@ static inline void rt2800pci_enable_interrupt(struct rt2x00_dev *rt2x00dev, | |||
778 | * access needs locking. | 788 | * access needs locking. |
779 | */ | 789 | */ |
780 | spin_lock_irq(&rt2x00dev->irqmask_lock); | 790 | spin_lock_irq(&rt2x00dev->irqmask_lock); |
781 | rt2800_register_read(rt2x00dev, INT_MASK_CSR, ®); | 791 | rt2x00pci_register_read(rt2x00dev, INT_MASK_CSR, ®); |
782 | rt2x00_set_field32(®, irq_field, 1); | 792 | rt2x00_set_field32(®, irq_field, 1); |
783 | rt2800_register_write(rt2x00dev, INT_MASK_CSR, reg); | 793 | rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg); |
784 | spin_unlock_irq(&rt2x00dev->irqmask_lock); | 794 | spin_unlock_irq(&rt2x00dev->irqmask_lock); |
785 | } | 795 | } |
786 | 796 | ||
@@ -851,7 +861,7 @@ static void rt2800pci_txstatus_interrupt(struct rt2x00_dev *rt2x00dev) | |||
851 | * need to lock the kfifo. | 861 | * need to lock the kfifo. |
852 | */ | 862 | */ |
853 | for (i = 0; i < rt2x00dev->ops->tx->entry_num; i++) { | 863 | for (i = 0; i < rt2x00dev->ops->tx->entry_num; i++) { |
854 | rt2800_register_read(rt2x00dev, TX_STA_FIFO, &status); | 864 | rt2x00pci_register_read(rt2x00dev, TX_STA_FIFO, &status); |
855 | 865 | ||
856 | if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID)) | 866 | if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID)) |
857 | break; | 867 | break; |
@@ -873,8 +883,8 @@ static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance) | |||
873 | u32 reg, mask; | 883 | u32 reg, mask; |
874 | 884 | ||
875 | /* Read status and ACK all interrupts */ | 885 | /* Read status and ACK all interrupts */ |
876 | rt2800_register_read(rt2x00dev, INT_SOURCE_CSR, ®); | 886 | rt2x00pci_register_read(rt2x00dev, INT_SOURCE_CSR, ®); |
877 | rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, reg); | 887 | rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg); |
878 | 888 | ||
879 | if (!reg) | 889 | if (!reg) |
880 | return IRQ_NONE; | 890 | return IRQ_NONE; |
@@ -914,9 +924,9 @@ static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance) | |||
914 | * the tasklet will reenable the appropriate interrupts. | 924 | * the tasklet will reenable the appropriate interrupts. |
915 | */ | 925 | */ |
916 | spin_lock(&rt2x00dev->irqmask_lock); | 926 | spin_lock(&rt2x00dev->irqmask_lock); |
917 | rt2800_register_read(rt2x00dev, INT_MASK_CSR, ®); | 927 | rt2x00pci_register_read(rt2x00dev, INT_MASK_CSR, ®); |
918 | reg &= mask; | 928 | reg &= mask; |
919 | rt2800_register_write(rt2x00dev, INT_MASK_CSR, reg); | 929 | rt2x00pci_register_write(rt2x00dev, INT_MASK_CSR, reg); |
920 | spin_unlock(&rt2x00dev->irqmask_lock); | 930 | spin_unlock(&rt2x00dev->irqmask_lock); |
921 | 931 | ||
922 | return IRQ_HANDLED; | 932 | return IRQ_HANDLED; |