[Haiku-commits] r33047 - haiku/trunk/src/add-ons/kernel/drivers/audio/hda

korli at mail.berlios.de korli at mail.berlios.de
Fri Sep 11 00:55:06 CEST 2009


Author: korli
Date: 2009-09-11 00:55:02 +0200 (Fri, 11 Sep 2009)
New Revision: 33047
ViewCVS: http://svn.berlios.de/viewcvs/haiku?rev=33047&view=rev

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
Log:
try to align the offset to be more compliant


Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp	2009-09-10 22:03:37 UTC (rev 33046)
+++ haiku/trunk/src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp	2009-09-10 22:55:02 UTC (rev 33047)
@@ -119,13 +119,6 @@
 	stream->frames_count += stream->buffer_length;
 	stream->buffer_cycle = position / bufferSize;
 
-	// playback interrupts come early, offsets don't work on non intel
-	// TODO find out why
-	if (stream->type == STREAM_PLAYBACK
-		&& stream->controller->pci_info.vendor_id != INTEL_VENDORID) {
-		stream->buffer_cycle++;
-	}
-
 	release_spinlock(&stream->lock);
 
 	release_sem_etc(controller->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE);
@@ -563,13 +556,18 @@
 	// TODO check on other vendors, see in stream_handle_interrupt()
 	// Tested only on Intel ICH8
 	uint32 offset = 0;
-	if (stream->type == STREAM_PLAYBACK && stream->controller->pci_info.vendor_id == INTEL_VENDORID) {
-		if (stream->sample_size == 2)
-			offset = 6;
-		else if (stream->sample_size > 2)
-			offset = 8;
+	if (stream->type == STREAM_PLAYBACK) {
+		if (stream->controller->pci_info.vendor_id == INTEL_VENDORID) {
+			if (stream->sample_size == 2)
+				offset = 3;
+			else if (stream->sample_size > 2)
+				offset = 4;
+		} else {
+			offset = 11;	
+		}
+		offset *= 64;
+		offset = ALIGN(offset, 128);
 	}
-	offset *= 32;
 	
 	/* Calculate size of buffer (aligned to 128 bytes) */
 	bufferSize = stream->sample_size * stream->num_channels




More information about the Haiku-commits mailing list