From 74010f99115a5276a6e475084070893a8a2f9c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 6 Jan 2009 19:25:34 +0000 Subject: [PATCH] * reading CORB_READ_POS_RESET as zero fails on some chips (ie nForce). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28849 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 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 6445cd81b4..7a7bd5791c 100644 --- a/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp +++ b/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp @@ -354,13 +354,11 @@ init_corb_rirb_pos(hda_controller* controller) controller->stream_positions = (uint32*) ((uint8*)controller->corb + posOffset); + controller->Write16(HDAC_CORB_WRITE_POS, 0); /* Reset CORB read pointer */ - /* NOTE: See HDA011 for corrected procedure! */ controller->Write16(HDAC_CORB_READ_POS, CORB_READ_POS_RESET); - do { - spin(10); - } while ((controller->Read16(HDAC_CORB_READ_POS) - & CORB_READ_POS_RESET) == 0); + /* Reading CORB_READ_POS_RESET as zero fails on some chips. + We reset the bit here. */ controller->Write16(HDAC_CORB_READ_POS, 0); /* Reset RIRB write pointer */