[coreboot] New patch to review for coreboot: 4fa81f7 Fix libpayload speaker driver

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Tue Oct 25 23:17:53 CEST 2011


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/337

-gerrit

commit 4fa81f7cbcce03bb8679a69f073cd9317fde4412
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Tue Oct 25 14:15:57 2011 -0700

    Fix libpayload speaker driver
    
    The frequency for the PC speaker has to be specified as
    1193180 / frequency according to http://wiki.osdev.org/PC_Speaker
    
    Change-Id: Iaca9d45807e080efe834611e719b350680b5fb90
    Signed-off-by: Stefan Reinauer <reinauer at google.com>
---
 payloads/libpayload/drivers/speaker.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/payloads/libpayload/drivers/speaker.c b/payloads/libpayload/drivers/speaker.c
index 3b3a750..3a561bc 100644
--- a/payloads/libpayload/drivers/speaker.c
+++ b/payloads/libpayload/drivers/speaker.c
@@ -60,13 +60,15 @@
  */
 void speaker_enable(u16 freq)
 {
+	u16 reg16 = 1193180 / freq;
+
 	/* Select counter 2. Read/write LSB first, then MSB. Use mode 3
 	   (square wave generator). Use a 16bit binary counter. */
 	outb(0xb6, I82C54_CONTROL_WORD_REGISTER);
 
 	/* Set the desired tone frequency. */
-	outb((u8)(freq & 0x00ff), I82C54_COUNTER2);	/* LSB. */
-	outb((u8)(freq >> 8), I82C54_COUNTER2);		/* MSB. */
+	outb((u8)(reg16 & 0x00ff), I82C54_COUNTER2);	/* LSB. */
+	outb((u8)(reg16 >> 8), I82C54_COUNTER2);	/* MSB. */
 
 	/* Enable the PC speaker (set bits 0 and 1). */
 	outb(inb(PC_SPEAKER_PORT) | 0x03, PC_SPEAKER_PORT);




More information about the coreboot mailing list