diff options
author | Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> | 2014-03-17 09:34:23 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-17 13:44:19 -0400 |
commit | d28bcc302678e3c2932c4e4e73cd4f40ca4c5fc0 (patch) | |
tree | bebc48e3a19bfebc21563592771e54625917ed65 | |
parent | b5998e6a3d695c9261a1b1d9cf27db526aa72b3b (diff) |
wil6210: target reset flow update
Use 'real' indication for hardware state.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/wil6210/main.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wil6210.h | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c index 351925b5d2c8..c782e2522d38 100644 --- a/drivers/net/wireless/ath/wil6210/main.c +++ b/drivers/net/wireless/ath/wil6210/main.c | |||
@@ -269,7 +269,7 @@ void wil_priv_deinit(struct wil6210_priv *wil) | |||
269 | static void wil_target_reset(struct wil6210_priv *wil) | 269 | static void wil_target_reset(struct wil6210_priv *wil) |
270 | { | 270 | { |
271 | int delay = 0; | 271 | int delay = 0; |
272 | u32 baud_rate; | 272 | u32 hw_state; |
273 | u32 rev_id; | 273 | u32 rev_id; |
274 | 274 | ||
275 | wil_dbg_misc(wil, "Resetting...\n"); | 275 | wil_dbg_misc(wil, "Resetting...\n"); |
@@ -312,15 +312,16 @@ static void wil_target_reset(struct wil6210_priv *wil) | |||
312 | } | 312 | } |
313 | W(RGF_USER_CLKS_CTL_SW_RST_VEC_0, 0); | 313 | W(RGF_USER_CLKS_CTL_SW_RST_VEC_0, 0); |
314 | 314 | ||
315 | /* wait until device ready. Use baud rate */ | 315 | /* wait until device ready */ |
316 | do { | 316 | do { |
317 | msleep(1); | 317 | msleep(1); |
318 | baud_rate = R(RGF_USER_SERIAL_BAUD_RATE); | 318 | hw_state = R(RGF_USER_HW_MACHINE_STATE); |
319 | if (delay++ > 100) { | 319 | if (delay++ > 100) { |
320 | wil_err(wil, "Reset not completed\n"); | 320 | wil_err(wil, "Reset not completed, hw_state 0x%08x\n", |
321 | hw_state); | ||
321 | return; | 322 | return; |
322 | } | 323 | } |
323 | } while (baud_rate != 0x15e); | 324 | } while (hw_state != HW_MACHINE_BOOT_DONE); |
324 | 325 | ||
325 | if (rev_id == 2) | 326 | if (rev_id == 2) |
326 | W(RGF_PCIE_LOS_COUNTER_CTL, BIT(8)); | 327 | W(RGF_PCIE_LOS_COUNTER_CTL, BIT(8)); |
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h index 80573f786df6..fb1006b2a4e2 100644 --- a/drivers/net/wireless/ath/wil6210/wil6210.h +++ b/drivers/net/wireless/ath/wil6210/wil6210.h | |||
@@ -74,7 +74,8 @@ struct RGF_ICR { | |||
74 | } __packed; | 74 | } __packed; |
75 | 75 | ||
76 | /* registers - FW addresses */ | 76 | /* registers - FW addresses */ |
77 | #define RGF_USER_SERIAL_BAUD_RATE (0x880050) | 77 | #define RGF_USER_HW_MACHINE_STATE (0x8801dc) |
78 | #define HW_MACHINE_BOOT_DONE (0x3fffffd) | ||
78 | #define RGF_USER_USER_CPU_0 (0x8801e0) | 79 | #define RGF_USER_USER_CPU_0 (0x8801e0) |
79 | #define RGF_USER_MAC_CPU_0 (0x8801fc) | 80 | #define RGF_USER_MAC_CPU_0 (0x8801fc) |
80 | #define RGF_USER_USER_SCRATCH_PAD (0x8802bc) | 81 | #define RGF_USER_USER_SCRATCH_PAD (0x8802bc) |