[coreboot] New patch to review for coreboot: 4974878 bd82x6x: Add beep commands

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Sat Aug 4 01:13:30 CEST 2012


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

-gerrit

commit 4974878d81fa32f95dfdc5f62308a8f66926c4b1
Author: Dylan Reid <dgreid at chromium.org>
Date:   Fri Apr 27 11:37:33 2012 -0700

    bd82x6x: Add beep commands
    
    Move beep commands to board-specific area as they need to be different for
    different codecs.
    
    Change-Id: I2a1ac938c49827cc816a95df10793a7e234942bf
    Signed-off-by: Dylan Reid <dgreid at chromium.org>
---
 src/mainboard/samsung/lumpy/hda_verb.h   |   10 ++++++++++
 src/mainboard/samsung/lumpy/mainboard.c  |    4 ++++
 src/mainboard/samsung/stumpy/hda_verb.h  |    9 +++++++++
 src/mainboard/samsung/stumpy/mainboard.c |    4 ++++
 src/southbridge/intel/bd82x6x/azalia.c   |   12 ++++++++++++
 5 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/src/mainboard/samsung/lumpy/hda_verb.h b/src/mainboard/samsung/lumpy/hda_verb.h
index 732f0aa..3871aa1 100644
--- a/src/mainboard/samsung/lumpy/hda_verb.h
+++ b/src/mainboard/samsung/lumpy/hda_verb.h
@@ -69,3 +69,13 @@ static const u32 mainboard_cim_verb_data[] = {
 	0x00a71e45,
 	0x00a71f43
 };
+
+static const u32 mainboard_pc_beep_verbs[] = {
+	0x00170500,			/* power up codec */
+	0x00270500,			/* power up DAC */
+	0x00670500,			/* power up speaker */
+	0x00670740,			/* enable speaker output */
+	0x0023B04B,			/* set DAC gain */
+};
+static const u32 mainboard_pc_beep_verbs_size =
+	sizeof(mainboard_pc_beep_verbs) / sizeof(mainboard_pc_beep_verbs[0]);
diff --git a/src/mainboard/samsung/lumpy/mainboard.c b/src/mainboard/samsung/lumpy/mainboard.c
index e83516a..62d87b6 100644
--- a/src/mainboard/samsung/lumpy/mainboard.c
+++ b/src/mainboard/samsung/lumpy/mainboard.c
@@ -253,11 +253,15 @@ static void int15_install(void)
 
 extern const u32 * cim_verb_data;
 extern u32 cim_verb_data_size;
+extern const u32 * pc_beep_verbs;
+extern u32 pc_beep_verbs_size;
 
 static void verb_setup(void)
 {
 	cim_verb_data = mainboard_cim_verb_data;
 	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
+	pc_beep_verbs = mainboard_pc_beep_verbs;
+	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
 }
 
 static void mainboard_init(device_t dev)
diff --git a/src/mainboard/samsung/stumpy/hda_verb.h b/src/mainboard/samsung/stumpy/hda_verb.h
index 9a4a740..c9a49c5 100644
--- a/src/mainboard/samsung/stumpy/hda_verb.h
+++ b/src/mainboard/samsung/stumpy/hda_verb.h
@@ -97,3 +97,12 @@ static const u32 mainboard_cim_verb_data[] = {
 	0x30771f18
 };
 
+static const u32 mainboard_pc_beep_verbs[] = {
+	0x00170500,			/* power up codec */
+	0x00270500,			/* power up DAC */
+	0x00670500,			/* power up speaker */
+	0x00670740,			/* enable speaker output */
+	0x0023B04B,			/* set DAC gain */
+};
+static const u32 mainboard_pc_beep_verbs_size =
+	sizeof(mainboard_pc_beep_verbs) / sizeof(mainboard_pc_beep_verbs[0]);
diff --git a/src/mainboard/samsung/stumpy/mainboard.c b/src/mainboard/samsung/stumpy/mainboard.c
index 246b261..c70673b 100644
--- a/src/mainboard/samsung/stumpy/mainboard.c
+++ b/src/mainboard/samsung/stumpy/mainboard.c
@@ -223,11 +223,15 @@ static void int15_install(void)
 
 extern const u32 * cim_verb_data;
 extern u32 cim_verb_data_size;
+extern const u32 * pc_beep_verbs;
+extern u32 pc_beep_verbs_size;
 
 static void verb_setup(void)
 {
 	cim_verb_data = mainboard_cim_verb_data;
 	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
+	pc_beep_verbs = mainboard_pc_beep_verbs;
+	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
 }
 
 // mainboard_enable is executed as first thing after
diff --git a/src/southbridge/intel/bd82x6x/azalia.c b/src/southbridge/intel/bd82x6x/azalia.c
index e40bbe3..a257daf 100644
--- a/src/southbridge/intel/bd82x6x/azalia.c
+++ b/src/southbridge/intel/bd82x6x/azalia.c
@@ -92,6 +92,8 @@ no_codec:
 
 const u32 * cim_verb_data = NULL;
 u32 cim_verb_data_size = 0;
+const u32 * pc_beep_verbs = NULL;
+u32 pc_beep_verbs_size = 0;
 
 static u32 find_verb(struct device *dev, u32 viddid, const u32 ** verb)
 {
@@ -218,6 +220,16 @@ static void codecs_init(struct device *dev, u32 base, u32 codec_mask)
 		if (codec_mask & (1 << i))
 			codec_init(dev, base, i);
 	}
+
+	for (i = 0; i < pc_beep_verbs_size; i++) {
+		if (wait_for_ready(base) == -1)
+			return;
+
+		write32(base + 0x60, pc_beep_verbs[i]);
+
+		if (wait_for_valid(base) == -1)
+			return;
+	}
 }
 
 static void azalia_init(struct device *dev)




More information about the coreboot mailing list