summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2018-10-19 17:01:31 -0700
committerDuncan Laurie <dlaurie@chromium.org>2018-10-31 18:31:15 +0000
commit29f2b258c855ab13452eb7ebd519140860fbe76a (patch)
tree66c26c37aa252dd99e19c23217c6bb6bd7906f15
parentf5d688a5a2bc1d62fb463a76a04267cb349b158f (diff)
downloadcoreboot-29f2b258c855ab13452eb7ebd519140860fbe76a.tar.xz
ec/google/wilco: Unmute audio on init
The speakers start up muted, and the EC must be told by the BIOS to unmute it. This helps prevent popping noises on boot/resume. Change-Id: I693f1d01e46e19362ef8fd0d5b3f4930967b5a12 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/29203 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/ec/google/wilco/chip.c3
-rw-r--r--src/ec/google/wilco/commands.h7
2 files changed, 10 insertions, 0 deletions
diff --git a/src/ec/google/wilco/chip.c b/src/ec/google/wilco/chip.c
index 929d1cc312..0cd0048f67 100644
--- a/src/ec/google/wilco/chip.c
+++ b/src/ec/google/wilco/chip.c
@@ -63,6 +63,9 @@ static void wilco_ec_init(struct device *dev)
/* Direct power button to the host for processing */
wilco_ec_send(KB_POWER_BUTTON_TO_HOST, 1);
+
+ /* Unmute speakers */
+ wilco_ec_send(KB_HW_MUTE_CONTROL, AUDIO_UNMUTE_125MS);
}
static void wilco_ec_resource(struct device *dev, int index,
diff --git a/src/ec/google/wilco/commands.h b/src/ec/google/wilco/commands.h
index 7a9bc05a07..4a19030216 100644
--- a/src/ec/google/wilco/commands.h
+++ b/src/ec/google/wilco/commands.h
@@ -36,6 +36,8 @@ enum {
KB_ACPI = 0x3a,
/* Manage the EC power button passthru to the host */
KB_POWER_BUTTON_TO_HOST = 0x3e,
+ /* Manage the EC control of speaker mute */
+ KB_HW_MUTE_CONTROL = 0x60,
/* Inform the EC that the host is about to enter S3 */
KB_SLP_EN = 0x64,
/* Inform the EC about BIOS boot progress */
@@ -54,6 +56,11 @@ enum bios_progress_code {
BIOS_PROGRESS_POST_COMPLETE = 0x04,
};
+enum ec_audio_mute {
+ AUDIO_MUTE = 0, /* Mute speakers immediately */
+ AUDIO_UNMUTE_125MS, /* Unmute in 125ms */
+};
+
/*
* EC Information
*/