summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/wl12xx
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2009-08-18 07:33:56 +0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-20 19:36:02 +0400
commitbcd64e0c20eafe6a3976c248833d5d8bcccdf0d9 (patch)
treeed9d850d51f721b63d703f5c66ddb4b7f2b9268a /drivers/net/wireless/wl12xx
parentbfc32e6a9559d3e30925929cd9a9df7498f325db (diff)
downloadlinux-bcd64e0c20eafe6a3976c248833d5d8bcccdf0d9.tar.xz
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')
-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 592c3b5cc8f8..452d748e42c6 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)
int ret = 0, minor_minor_e2_ver;
u32 tmp, boot_data;
+ /* halt embedded ARM CPU while loading firmware */
+ wl1251_reg_write32(wl, ACX_REG_ECPU_CONTROL, ECPU_CONTROL_HALT);
+
ret = wl1251_boot_soft_reset(wl);
if (ret < 0)
goto out;