diff -r 252d9b812f7d sys/src/9/pc/etheriwl.c --- a/sys/src/9/pc/etheriwl.c Mon Mar 01 17:24:54 2021 +0100 +++ b/sys/src/9/pc/etheriwl.c Fri Mar 05 01:31:10 2021 +0100 @@ -1088,6 +1088,23 @@ nicunlock(ctlr); } + if(ctlr->pdev->did == 0x08b1 || ctlr->pdev->did == 0x08b2){ + print("host_interrupt_operation_mode work around!\n"); + if((err = niclock(ctlr)) != nil) + return err; + prphread(ctlr, 0xa04068); /* IWM_OSC */ + prphread(ctlr, 0xa04068); /* IWM_OSC */ + nicunlock(ctlr); + + /* iwm_set_bits_prph(sc, IWM_OSC_CLK, IWM_OSC_CLK_FORCE_CONTROL); */ + prphwrite(ctlr, 0xa04068, prphread(ctlr, 0xa04068) | 0x8); + if((err = niclock(ctlr)) != nil) + return err; + prphread(ctlr, 0xa04068); /* IWM_OSC */ + prphread(ctlr, 0xa04068); /* IWM_OSC */ + nicunlock(ctlr); + } + if(ctlr->family < 8000){ if((err = niclock(ctlr)) != nil) return err;