--- hdac.c 2020-10-09 01:02:31.000000000 +0100 +++ hdac.c 2020-10-13 11:06:13.266048000 +0100 @@ -1562,12 +1562,6 @@ statests = HDAC_READ_2(&sc->mem, HDAC_STATESTS); HDAC_WRITE_2(&sc->mem, HDAC_STATESTS, statests); - HDA_BOOTHVERBOSE( - device_printf(sc->dev, - "Enabling controller interrupt...\n"); - ); - HDAC_WRITE_4(&sc->mem, HDAC_GCTL, HDAC_READ_4(&sc->mem, HDAC_GCTL) | - HDAC_GCTL_UNSOL); if (sc->polling == 0) { HDAC_WRITE_4(&sc->mem, HDAC_INTCTL, HDAC_INTCTL_CIE | HDAC_INTCTL_GIE); @@ -1614,6 +1608,14 @@ sc->codecs[i].dev = child; } } + hdac_lock(sc); + HDA_BOOTHVERBOSE( + device_printf(sc->dev, + "Enabling controller interrupt...\n"); + ); + HDAC_WRITE_4(&sc->mem, HDAC_GCTL, HDAC_READ_4(&sc->mem, HDAC_GCTL) | + HDAC_GCTL_UNSOL); + hdac_unlock(sc); bus_generic_attach(sc->dev); SYSCTL_ADD_PROC(device_get_sysctl_ctx(sc->dev),