summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorStefan Sperling <stsp@cvs.openbsd.org>2015-05-10 15:10:47 +0000
committerStefan Sperling <stsp@cvs.openbsd.org>2015-05-10 15:10:47 +0000
commitaeaca088097fc9446b7dc82269369a80d6a08ec3 (patch)
tree70c33a7c8a55dbc042ec656aadbb77978e6cac3b /sys/dev
parentc41c4c74356d6d8b502e4091ce9b7a0e10cf4a0f (diff)
My commit adding RTL8188EU did introduce a regression after all.
Repair firmware reset on RTL8188CUS devices (and perhaps others) by restoring the proper register write order in the non-8188EU code path. Fixes "urtwn0: timeout waiting for firmware readiness" after device reset.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/usb/if_urtwn.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/usb/if_urtwn.c b/sys/dev/usb/if_urtwn.c
index 91f46fa0651..65f9e4c1ad6 100644
--- a/sys/dev/usb/if_urtwn.c
+++ b/sys/dev/usb/if_urtwn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_urtwn.c,v 1.44 2015/05/04 11:46:29 stsp Exp $ */
+/* $OpenBSD: if_urtwn.c,v 1.45 2015/05/10 15:10:46 stsp Exp $ */
/*-
* Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
@@ -2413,9 +2413,6 @@ urtwn_fw_reset(struct urtwn_softc *sc)
}
/* Force 8051 reset. */
urtwn_write_2(sc, R92C_SYS_FUNC_EN, reg & ~R92C_SYS_FUNC_EN_CPUEN);
- urtwn_write_2(sc, R92C_SYS_FUNC_EN,
- urtwn_read_2(sc, R92C_SYS_FUNC_EN) |
- R92C_SYS_FUNC_EN_CPUEN);
}
@@ -2505,6 +2502,10 @@ urtwn_load_firmware(struct urtwn_softc *sc)
urtwn_fw_reset(sc);
urtwn_write_1(sc, R92C_MCUFWDL, 0);
}
+ if (!(sc->chip & URTWN_CHIP_88E))
+ urtwn_write_2(sc, R92C_SYS_FUNC_EN,
+ urtwn_read_2(sc, R92C_SYS_FUNC_EN) |
+ R92C_SYS_FUNC_EN_CPUEN);
urtwn_write_1(sc, R92C_MCUFWDL,
urtwn_read_1(sc, R92C_MCUFWDL) | R92C_MCUFWDL_EN);