[coreboot-gerrit] New patch to review for coreboot: 23d9759 X201: Add azalia verb.
Vladimir Serbinenko (phcoder@gmail.com)
gerrit at coreboot.org
Fri Jan 10 17:37:07 CET 2014
Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4641
-gerrit
commit 23d9759c26006ef82c5da7a57f04025d465cf32f
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date: Fri Jan 10 01:01:42 2014 +0100
X201: Add azalia verb.
Adds missing sound codec configuration.
Change-Id: I3a7097ab0a7c85524f2400471323f5d2d15569ed
Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
src/mainboard/lenovo/x201/hda_verb.h | 120 ++++++++++++++++++++++++++++++++++
src/mainboard/lenovo/x201/mainboard.c | 13 ++++
2 files changed, 133 insertions(+)
diff --git a/src/mainboard/lenovo/x201/hda_verb.h b/src/mainboard/lenovo/x201/hda_verb.h
new file mode 100644
index 0000000..d5a8e7c
--- /dev/null
+++ b/src/mainboard/lenovo/x201/hda_verb.h
@@ -0,0 +1,120 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Vladimir Serbinenko.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+static const u32 mainboard_cim_verb_data[] = {
+ /* coreboot specific header */
+ 0x14F15069, /* Codec Vendor / Device ID: Conexant CX20585 */
+ 0x17AA2155, /* Subsystem ID */
+ 0x0000000B, /* Number of 4 dword sets */
+
+ /* NID 0x01: Subsystem ID. */
+ 0x00172055,
+ 0x00172121,
+ 0x001722AA,
+ 0x00172317,
+
+ /* NID 0x19: Headphone jack. */
+ 0x01971CF0,
+ 0x01971D40,
+ 0x01971E21,
+ 0x01971F04,
+
+ /* NID 0x1A: Dock mic jack. */
+ 0x01A71CF0,
+ 0x01A71D90,
+ 0x01A71EA1,
+ 0x01A71F61,
+
+ /* NID 0x1B: Mic jack. */
+ 0x01B71CF0,
+ 0x01B71D90,
+ 0x01B71EA1,
+ 0x01B71F04,
+
+ /* NID 0x1C: Dock headphone jack. */
+ 0x01C71CF0,
+ 0x01C71D40,
+ 0x01C71E21,
+ 0x01C71F61,
+
+ /* NID 0x1D: EAPD detect. */
+ 0x01D71CF0,
+ 0x01D71D00,
+ 0x01D71E17,
+ 0x01D71F60,
+
+ /* NID 0x1E */
+ 0x01E71CF0,
+ 0x01E71D01,
+ 0x01E71EF0,
+ 0x01E71F40,
+
+ /* NID 0x1F */
+ 0x01F71CF0,
+ 0x01F71D01,
+ 0x01F71E17,
+ 0x01F71F90,
+
+ /* NID 0x20 */
+ 0x02071CF0,
+ 0x02071D01,
+ 0x02071EF0,
+ 0x02071F40,
+
+ /* NID 0x22 */
+ 0x02271CF0,
+ 0x02271D01,
+ 0x02271EF0,
+ 0x02271F40,
+
+ /* NID 0x23: Internal mic boost volume. */
+ 0x02371CF0,
+ 0x02371D01,
+ 0x02371EA6,
+ 0x02371F90,
+
+ 0x80862804, /* Codec Vendor / Device ID: Intel Ibexpeak HDMI. */
+ 0x17aa21b5, /* Subsystem ID */
+ 0x00000004, /* Number of 4 dword sets */
+
+ /* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x17aa21b5 */
+ 0x301720B5,
+ 0x30172121,
+ 0x301722AA,
+ 0x30172317,
+
+ /* NID 0x04. */
+ 0x30471C10,
+ 0x30471D00,
+ 0x30471E56,
+ 0x30471F58,
+
+ /* NID 0x05. */
+ 0x30571C20,
+ 0x30571D00,
+ 0x30571E56,
+ 0x30571F18,
+
+ /* NID 0x06. */
+ 0x30671C30,
+ 0x30671D00,
+ 0x30671E56,
+ 0x30671F58,
+};
diff --git a/src/mainboard/lenovo/x201/mainboard.c b/src/mainboard/lenovo/x201/mainboard.c
index 6321777..75e44f4 100644
--- a/src/mainboard/lenovo/x201/mainboard.c
+++ b/src/mainboard/lenovo/x201/mainboard.c
@@ -37,6 +37,7 @@
#include <pc80/mc146818rtc.h>
#include "dock.h"
+#include "hda_verb.h"
#include <arch/x86/include/arch/acpigen.h>
#if CONFIG_PCI_OPTION_ROM_RUN_YABEL || CONFIG_PCI_OPTION_ROM_RUN_REALMODE
#include <x86emu/regs.h>
@@ -92,6 +93,17 @@ const char *smbios_mainboard_version(void)
return "Lenovo X201";
}
+/* Audio Setup */
+
+extern const u32 *cim_verb_data;
+extern u32 cim_verb_data_size;
+
+static void verb_setup(void)
+{
+ cim_verb_data = mainboard_cim_verb_data;
+ cim_verb_data_size = sizeof(mainboard_cim_verb_data);
+}
+
static void mainboard_enable(device_t dev)
{
device_t dev0;
@@ -150,6 +162,7 @@ static void mainboard_enable(device_t dev)
connected to anything and hence we don't init it.
*/
pc_keyboard_init(0);
+ verb_setup();
}
struct chip_operations mainboard_ops = {
More information about the coreboot-gerrit
mailing list