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

-gerrit

commit 4fa81f7cbcce03bb8679a69f073cd9317fde4412
Author: Stefan Reinauer <[email protected]>
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 <[email protected]>
---
 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);

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to