diff options
author | Stefan Sperling <stsp@cvs.openbsd.org> | 2015-05-10 15:10:47 +0000 |
---|---|---|
committer | Stefan Sperling <stsp@cvs.openbsd.org> | 2015-05-10 15:10:47 +0000 |
commit | aeaca088097fc9446b7dc82269369a80d6a08ec3 (patch) | |
tree | 70c33a7c8a55dbc042ec656aadbb77978e6cac3b /sys/dev | |
parent | c41c4c74356d6d8b502e4091ce9b7a0e10cf4a0f (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.c | 9 |
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); |