diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2014-11-26 09:29:14 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-12-01 15:57:21 -0500 |
commit | 7a5a73528eff53ec5806c9019bcfd2dbebd2811c (patch) | |
tree | 53b7e71e7a548449d126a0ad7707c8bb9f2c0d84 | |
parent | ad92bc9e8e62b9dd013f8afa7497e916f8de0364 (diff) |
rt2x00: change REGISTER_BUSY_COUNT for USB
Because of delays on USB we do not have to iterate so many times on
USB hardware when waiting for H/W register become valid.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 2 |
4 files changed, 10 insertions, 7 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index c878e3f3993c..05c64597838d 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -47,7 +47,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); | |||
47 | * BBP and RF register require indirect register access, | 47 | * BBP and RF register require indirect register access, |
48 | * and use the CSR registers BBPCSR and RFCSR to achieve this. | 48 | * and use the CSR registers BBPCSR and RFCSR to achieve this. |
49 | * These indirect registers work with busy bits, | 49 | * These indirect registers work with busy bits, |
50 | * and we will try maximal REGISTER_BUSY_COUNT times to access | 50 | * and we will try maximal REGISTER_USB_BUSY_COUNT times to access |
51 | * the register while taking a REGISTER_BUSY_DELAY us delay | 51 | * the register while taking a REGISTER_BUSY_DELAY us delay |
52 | * between each attampt. When the busy bit is still set at that time, | 52 | * between each attampt. When the busy bit is still set at that time, |
53 | * the access attempt is considered to have failed, | 53 | * the access attempt is considered to have failed, |
@@ -122,7 +122,7 @@ static int rt2500usb_regbusy_read(struct rt2x00_dev *rt2x00dev, | |||
122 | { | 122 | { |
123 | unsigned int i; | 123 | unsigned int i; |
124 | 124 | ||
125 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 125 | for (i = 0; i < REGISTER_USB_BUSY_COUNT; i++) { |
126 | rt2500usb_register_read_lock(rt2x00dev, offset, reg); | 126 | rt2500usb_register_read_lock(rt2x00dev, offset, reg); |
127 | if (!rt2x00_get_field16(*reg, field)) | 127 | if (!rt2x00_get_field16(*reg, field)) |
128 | return 1; | 128 | return 1; |
@@ -904,7 +904,7 @@ static int rt2500usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) | |||
904 | unsigned int i; | 904 | unsigned int i; |
905 | u8 value; | 905 | u8 value; |
906 | 906 | ||
907 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 907 | for (i = 0; i < REGISTER_USB_BUSY_COUNT; i++) { |
908 | rt2500usb_bbp_read(rt2x00dev, 0, &value); | 908 | rt2500usb_bbp_read(rt2x00dev, 0, &value); |
909 | if ((value != 0xff) && (value != 0x00)) | 909 | if ((value != 0xff) && (value != 0x00)) |
910 | return 0; | 910 | return 0; |
@@ -1023,7 +1023,7 @@ static int rt2500usb_set_state(struct rt2x00_dev *rt2x00dev, | |||
1023 | * We must wait until the register indicates that the | 1023 | * We must wait until the register indicates that the |
1024 | * device has entered the correct state. | 1024 | * device has entered the correct state. |
1025 | */ | 1025 | */ |
1026 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 1026 | for (i = 0; i < REGISTER_USB_BUSY_COUNT; i++) { |
1027 | rt2500usb_register_read(rt2x00dev, MAC_CSR17, ®2); | 1027 | rt2500usb_register_read(rt2x00dev, MAC_CSR17, ®2); |
1028 | bbp_state = rt2x00_get_field16(reg2, MAC_CSR17_BBP_CURR_STATE); | 1028 | bbp_state = rt2x00_get_field16(reg2, MAC_CSR17_BBP_CURR_STATE); |
1029 | rf_state = rt2x00_get_field16(reg2, MAC_CSR17_RF_CURR_STATE); | 1029 | rf_state = rt2x00_get_field16(reg2, MAC_CSR17_RF_CURR_STATE); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 1ff81afb672c..9bb398bed9bb 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -1019,9 +1019,12 @@ struct rt2x00_bar_list_entry { | |||
1019 | * Register defines. | 1019 | * Register defines. |
1020 | * Some registers require multiple attempts before success, | 1020 | * Some registers require multiple attempts before success, |
1021 | * in those cases REGISTER_BUSY_COUNT attempts should be | 1021 | * in those cases REGISTER_BUSY_COUNT attempts should be |
1022 | * taken with a REGISTER_BUSY_DELAY interval. | 1022 | * taken with a REGISTER_BUSY_DELAY interval. Due to USB |
1023 | * bus delays, we do not have to loop so many times to wait | ||
1024 | * for valid register value on that bus. | ||
1023 | */ | 1025 | */ |
1024 | #define REGISTER_BUSY_COUNT 100 | 1026 | #define REGISTER_BUSY_COUNT 100 |
1027 | #define REGISTER_USB_BUSY_COUNT 20 | ||
1025 | #define REGISTER_BUSY_DELAY 100 | 1028 | #define REGISTER_BUSY_DELAY 100 |
1026 | 1029 | ||
1027 | /* | 1030 | /* |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index 258e2a87c5ea..c2346f8d1db0 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
@@ -150,7 +150,7 @@ int rt2x00usb_regbusy_read(struct rt2x00_dev *rt2x00dev, | |||
150 | if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) | 150 | if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) |
151 | return -ENODEV; | 151 | return -ENODEV; |
152 | 152 | ||
153 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 153 | for (i = 0; i < REGISTER_USB_BUSY_COUNT; i++) { |
154 | rt2x00usb_register_read_lock(rt2x00dev, offset, reg); | 154 | rt2x00usb_register_read_lock(rt2x00dev, offset, reg); |
155 | if (!rt2x00_get_field32(*reg, field)) | 155 | if (!rt2x00_get_field32(*reg, field)) |
156 | return 1; | 156 | return 1; |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 95724ff9c726..a5458cf01fb2 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1295,7 +1295,7 @@ static int rt73usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) | |||
1295 | unsigned int i; | 1295 | unsigned int i; |
1296 | u8 value; | 1296 | u8 value; |
1297 | 1297 | ||
1298 | for (i = 0; i < REGISTER_BUSY_COUNT; i++) { | 1298 | for (i = 0; i < REGISTER_USB_BUSY_COUNT; i++) { |
1299 | rt73usb_bbp_read(rt2x00dev, 0, &value); | 1299 | rt73usb_bbp_read(rt2x00dev, 0, &value); |
1300 | if ((value != 0xff) && (value != 0x00)) | 1300 | if ((value != 0xff) && (value != 0x00)) |
1301 | return 0; | 1301 | return 0; |