From a6809d0e5c0aee0c2eebd4687a62761db2e1de34 Mon Sep 17 00:00:00 2001 From: "Ithamar R. Adema" Date: Mon, 9 Feb 2009 16:42:04 +0000 Subject: [PATCH] Do not enable interrupts on codec status change, since we do not handle those. This fixes the lockup on the EeePC, and follows the description in the HDA specs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29172 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/audio/hda/hda_controller.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp b/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp index 678fc3ff1d..060ad86c85 100644 --- a/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp +++ b/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp @@ -789,8 +789,14 @@ hda_hw_init(hda_controller* controller) dprintf("hda: init_corb_rirb_pos failed\n"); goto corb_rirb_failed; } - - controller->Write16(HDAC_WAKE_ENABLE, 0x7fff); + + /* + * Don't enable codec state change interrupts. We don't handle + * them, as we want to use the STATE_STATUS register to identify + * available codecs. We'd have to clear that register in the interrupt + * handler to 'ack' the codec change. + */ + controller->Write16(HDAC_WAKE_ENABLE, 0x0); /* Enable controller interrupts */ controller->Write32(HDAC_INTR_CONTROL, INTR_CONTROL_GLOBAL_ENABLE