Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ath5k: Use usleep_range where possible

Use usleep_range where possible to reduce busy waits

Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by

Nick Kossifidis and committed by
John W. Linville
1846ac3d ce169aca

+20 -20
+1 -1
drivers/net/wireless/ath/ath5k/attach.c
··· 298 298 299 299 /* Reset SERDES to load new settings */ 300 300 ath5k_hw_reg_write(ah, 0x00000000, AR5K_PCIE_SERDES_RESET); 301 - mdelay(1); 301 + usleep_range(1000, 1500); 302 302 } 303 303 304 304 /* Get misc capabilities */
+1 -1
drivers/net/wireless/ath/ath5k/pci.c
··· 98 98 0xffff); 99 99 return true; 100 100 } 101 - udelay(15); 101 + usleep_range(15, 20); 102 102 } 103 103 104 104 return false;
+11 -11
drivers/net/wireless/ath/ath5k/phy.c
··· 58 58 return 0; 59 59 } 60 60 61 - mdelay(2); 61 + usleep_range(2000, 2500); 62 62 63 63 /* ...wait until PHY is ready and read the selected radio revision */ 64 64 ath5k_hw_reg_write(ah, 0x00001c16, AR5K_PHY(0x34)); ··· 308 308 delay = delay << 2; 309 309 /* XXX: /2 on turbo ? Let's be safe 310 310 * for now */ 311 - udelay(100 + delay); 311 + usleep_range(100 + delay, 100 + (2 * delay)); 312 312 } else { 313 - mdelay(1); 313 + usleep_range(1000, 1500); 314 314 } 315 315 } 316 316 ··· 1083 1083 data = ath5k_hw_rf5110_chan2athchan(channel); 1084 1084 ath5k_hw_reg_write(ah, data, AR5K_RF_BUFFER); 1085 1085 ath5k_hw_reg_write(ah, 0, AR5K_RF_BUFFER_CONTROL_0); 1086 - mdelay(1); 1086 + usleep_range(1000, 1500); 1087 1087 1088 1088 return 0; 1089 1089 } ··· 1454 1454 beacon = ath5k_hw_reg_read(ah, AR5K_BEACON_5210); 1455 1455 ath5k_hw_reg_write(ah, beacon & ~AR5K_BEACON_ENABLE, AR5K_BEACON_5210); 1456 1456 1457 - mdelay(2); 1457 + usleep_range(2000, 2500); 1458 1458 1459 1459 /* 1460 1460 * Set the channel (with AGC turned off) ··· 1467 1467 * Activate PHY and wait 1468 1468 */ 1469 1469 ath5k_hw_reg_write(ah, AR5K_PHY_ACT_ENABLE, AR5K_PHY_ACT); 1470 - mdelay(1); 1470 + usleep_range(1000, 1500); 1471 1471 1472 1472 AR5K_REG_DISABLE_BITS(ah, AR5K_PHY_AGC, AR5K_PHY_AGC_DISABLE); 1473 1473 ··· 1504 1504 ath5k_hw_reg_write(ah, AR5K_PHY_RFSTG_DISABLE, AR5K_PHY_RFSTG); 1505 1505 AR5K_REG_DISABLE_BITS(ah, AR5K_PHY_AGC, AR5K_PHY_AGC_DISABLE); 1506 1506 1507 - mdelay(1); 1507 + usleep_range(1000, 1500); 1508 1508 1509 1509 /* 1510 1510 * Enable calibration and wait until completion ··· 3397 3397 if (ret) 3398 3398 return ret; 3399 3399 3400 - mdelay(1); 3400 + usleep_range(1000, 1500); 3401 3401 3402 3402 /* 3403 3403 * Write RF buffer ··· 3418 3418 } 3419 3419 3420 3420 } else if (ah->ah_version == AR5K_AR5210) { 3421 - mdelay(1); 3421 + usleep_range(1000, 1500); 3422 3422 /* Disable phy and wait */ 3423 3423 ath5k_hw_reg_write(ah, AR5K_PHY_ACT_DISABLE, AR5K_PHY_ACT); 3424 - mdelay(1); 3424 + usleep_range(1000, 1500); 3425 3425 } 3426 3426 3427 3427 /* Set channel on PHY */ ··· 3447 3447 for (i = 0; i <= 20; i++) { 3448 3448 if (!(ath5k_hw_reg_read(ah, AR5K_PHY_ADC_TEST) & 0x10)) 3449 3449 break; 3450 - udelay(200); 3450 + usleep_range(200, 250); 3451 3451 } 3452 3452 ath5k_hw_reg_write(ah, phy_tst1, AR5K_PHY_TST1); 3453 3453
+7 -7
drivers/net/wireless/ath/ath5k/reset.c
··· 357 357 ath5k_hw_reg_write(ah, val, AR5K_RESET_CTL); 358 358 359 359 /* Wait at least 128 PCI clocks */ 360 - udelay(15); 360 + usleep_range(15, 20); 361 361 362 362 if (ah->ah_version == AR5K_AR5210) { 363 363 val &= AR5K_RESET_CTL_PCU | AR5K_RESET_CTL_DMA ··· 422 422 regval = __raw_readl(reg); 423 423 __raw_writel(regval | val, reg); 424 424 regval = __raw_readl(reg); 425 - udelay(100); 425 + usleep_range(100, 150); 426 426 427 427 /* Bring BB/MAC out of reset */ 428 428 __raw_writel(regval & ~val, reg); ··· 493 493 494 494 ath5k_hw_reg_write(ah, data | AR5K_SLEEP_CTL_SLE_WAKE, 495 495 AR5K_SLEEP_CTL); 496 - udelay(15); 496 + usleep_range(15, 20); 497 497 498 498 for (i = 200; i > 0; i--) { 499 499 /* Check if the chip did wake up */ ··· 502 502 break; 503 503 504 504 /* Wait a bit and retry */ 505 - udelay(50); 505 + usleep_range(50, 75); 506 506 ath5k_hw_reg_write(ah, data | AR5K_SLEEP_CTL_SLE_WAKE, 507 507 AR5K_SLEEP_CTL); 508 508 } ··· 563 563 ret = ath5k_hw_nic_reset(ah, AR5K_RESET_CTL_PCU | 564 564 AR5K_RESET_CTL_MAC | AR5K_RESET_CTL_DMA | 565 565 AR5K_RESET_CTL_PHY | AR5K_RESET_CTL_PCI); 566 - mdelay(2); 566 + usleep_range(2000, 2500); 567 567 } else { 568 568 ret = ath5k_hw_nic_reset(ah, AR5K_RESET_CTL_PCU | 569 569 AR5K_RESET_CTL_BASEBAND | bus_flags); ··· 621 621 ret = ath5k_hw_nic_reset(ah, AR5K_RESET_CTL_PCU | 622 622 AR5K_RESET_CTL_MAC | AR5K_RESET_CTL_DMA | 623 623 AR5K_RESET_CTL_PHY | AR5K_RESET_CTL_PCI); 624 - mdelay(2); 624 + usleep_range(2000, 2500); 625 625 } else { 626 626 if (ath5k_get_bus_type(ah) == ATH_AHB) 627 627 ret = ath5k_hw_wisoc_reset(ah, AR5K_RESET_CTL_PCU | ··· 739 739 /* ...update PLL if needed */ 740 740 if (ath5k_hw_reg_read(ah, AR5K_PHY_PLL) != clock) { 741 741 ath5k_hw_reg_write(ah, clock, AR5K_PHY_PLL); 742 - udelay(300); 742 + usleep_range(300, 350); 743 743 } 744 744 745 745 /* ...set the PHY operating mode */