• Jonas Dreßler's avatar
    mwifiex: Add quirk to disable deep sleep with certain hardware revision · 939b571a
    Jonas Dreßler authored
    The 88W8897 PCIe+USB card in the hardware revision 20 apparently has a
    hardware issue where the card wakes up from deep sleep randomly and very
    often, somewhat depending on the card activity, maybe the hardware has a
    floating wakeup pin or something. This was found by comparing two MS
    Surface Book 2 devices, where one devices wifi card experienced spurious
    wakeups, while the other one didn't.
    
    Those continuous wakeups prevent the card from entering host sleep when
    the computer suspends. And because the host won't answer to events from
    the card anymore while it's suspended, the firmwares internal power
    saving state machine seems to get confused and the card can't sleep
    anymore at all after that.
    
    Since we can't work around that hardware bug in the firmware, let's
    get the hardware revision string from the firmware and match it with
    known bad revisions. Then disable auto deep sleep for those revisions,
    which makes sure we no longer get those spurious wakeups.
    Signed-off-by: default avatarJonas Dreßler <verdre@v0yd.nl>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211103201800.13531-3-verdre@v0yd.nl
    939b571a
main.c 50.9 KB