aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx/wl1251_boot.c
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2009-08-17 23:33:56 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-20 11:36:02 -0400
commitbcd64e0c20eafe6a3976c248833d5d8bcccdf0d9 (patch)
treeed9d850d51f721b63d703f5c66ddb4b7f2b9268a /drivers/net/wireless/wl12xx/wl1251_boot.c
parentbfc32e6a9559d3e30925929cd9a9df7498f325db (diff)
wl1251: halt the embedded CPU before loading firmware
After initial power-up, the embedded cpu is usually halted. However, if we down the interface and only do a soft reset before bringing the interface back up, it will still be running and the firmware loading code will bail out. This change halts the CPU before loading the firmware, enabling a second call to wl1251_boot() to succeed without a hard reset. Signed-off-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl1251_boot.c')
-rw-r--r--drivers/net/wireless/wl12xx/wl1251_boot.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1251_boot.c b/drivers/net/wireless/wl12xx/wl1251_boot.c
index 592c3b5cc8f..452d748e42c 100644
--- a/drivers/net/wireless/wl12xx/wl1251_boot.c
+++ b/drivers/net/wireless/wl12xx/wl1251_boot.c
@@ -465,6 +465,9 @@ int wl1251_boot(struct wl1251 *wl)
465 int ret = 0, minor_minor_e2_ver; 465 int ret = 0, minor_minor_e2_ver;
466 u32 tmp, boot_data; 466 u32 tmp, boot_data;
467 467
468 /* halt embedded ARM CPU while loading firmware */
469 wl1251_reg_write32(wl, ACX_REG_ECPU_CONTROL, ECPU_CONTROL_HALT);
470
468 ret = wl1251_boot_soft_reset(wl); 471 ret = wl1251_boot_soft_reset(wl);
469 if (ret < 0) 472 if (ret < 0)
470 goto out; 473 goto out;