summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Reid <dgreid@chromium.org>2012-04-27 11:37:33 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-08-07 01:03:39 +0200
commitb98d07813d39321e09a18233a565a5fe22944537 (patch)
tree37126efd11d7e0d514f0b501bfd7e339e37bb1f7
parentc02cadaee1c909c116b54502eadeade725011767 (diff)
downloadcoreboot-b98d07813d39321e09a18233a565a5fe22944537.tar.xz
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@chromium.org> Reviewed-on: http://review.coreboot.org/1410 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
-rw-r--r--src/mainboard/samsung/lumpy/hda_verb.h10
-rw-r--r--src/mainboard/samsung/lumpy/mainboard.c4
-rw-r--r--src/mainboard/samsung/stumpy/hda_verb.h9
-rw-r--r--src/mainboard/samsung/stumpy/mainboard.c4
-rw-r--r--src/southbridge/intel/bd82x6x/azalia.c12
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 732f0aad5f..3871aa1590 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 e83516a7ef..62d87b6c96 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 9a4a7406d9..c9a49c5db9 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 246b261eb9..c70673b836 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 e40bbe3dda..a257daf436 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)