[coreboot-gerrit] Patch set updated for coreboot: mainboard/google/poppy: Generate required nhlt table

Rizwan Qureshi (rizwan.qureshi@intel.com) gerrit at coreboot.org
Fri Feb 10 11:32:05 CET 2017


Rizwan Qureshi (rizwan.qureshi at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18214

-gerrit

commit 1badb306a25e0d88d06026e86f899da0ecf18ee6
Author: Rizwan Qureshi <rizwan.qureshi at intel.com>
Date:   Fri Jan 13 22:30:01 2017 +0530

    mainboard/google/poppy: Generate required nhlt table
    
    poppy board uses Maxim 98927 speaker codec and Realtek RT5663
    for heaset. Select the apropriate NHLT blobs to be packaged in CBFS.
    Also, generate the required ACPI NHLT table for codec and the supported
    topology in poppy.
    
    BUG=None
    BRANCH=None
    TEST=With the required driver support in kernel verify that
    the Audio plays on on-board speakers and headset, recording
    works from on-boards mics and headset mics.
    
    Change-Id: I98c65038b35fe99a661807de0766e6eac2c80eed
    Signed-off-by: M Naveen <naveen.m at intel.com>
    Signed-off-by: Rizwan Qureshi <rizwan.qureshi at intel.com>
    Signed-off-by: Naresh G Solanki <naresh.solanki at intel.com>
---
 src/mainboard/google/poppy/Kconfig     |  6 ++++
 src/mainboard/google/poppy/mainboard.c | 53 ++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/src/mainboard/google/poppy/Kconfig b/src/mainboard/google/poppy/Kconfig
index f1749e3..7893482 100644
--- a/src/mainboard/google/poppy/Kconfig
+++ b/src/mainboard/google/poppy/Kconfig
@@ -41,4 +41,10 @@ config MAX_CPUS
 	int
 	default 8
 
+config INCLUDE_NHLT_BLOBS
+	bool "Include blobs for audio."
+	select NHLT_DMIC_2CH
+	select NHLT_DMIC_4CH
+	select NHLT_RT5663
+	select NHLT_MAX98927
 endif
diff --git a/src/mainboard/google/poppy/mainboard.c b/src/mainboard/google/poppy/mainboard.c
index 29559b3..6931a30 100644
--- a/src/mainboard/google/poppy/mainboard.c
+++ b/src/mainboard/google/poppy/mainboard.c
@@ -14,19 +14,72 @@
  */
 
 #include <arch/acpi.h>
+#include <console/console.h>
 #include <device/device.h>
 #include <ec/ec.h>
 #include <vendorcode/google/chromeos/chromeos.h>
+#include <soc/nhlt.h>
+
+static const char *oem_id_maxim = "GOOGLE";
+static const char *oem_table_id_maxim = "POPPYMAX";
 
 static void mainboard_init(device_t dev)
 {
 	mainboard_ec_init();
 }
 
+
+static unsigned long mainboard_write_acpi_tables(device_t device,
+	unsigned long current, acpi_rsdp_t *rsdp)
+{
+	uintptr_t start_addr;
+	uintptr_t end_addr;
+	struct nhlt *nhlt;
+	const char *oem_id = NULL;
+	const char *oem_table_id = NULL;
+	uint32_t oem_revision = 0;
+
+	start_addr = current;
+
+	nhlt = nhlt_init();
+
+	if (nhlt == NULL)
+		return start_addr;
+
+	/* 2 Channel DMIC array. */
+	if (nhlt_soc_add_dmic_array(nhlt, 2))
+		printk(BIOS_ERR, "Couldn't add 2CH DMIC array.\n");
+
+
+	/* 4 Channel DMIC array. */
+	if (nhlt_soc_add_dmic_array(nhlt, 4))
+		printk(BIOS_ERR, "Couldn't add 4CH DMIC arrays.\n");
+
+	/* MAXIM98927 Smart Amps for left and right channel */
+	if (nhlt_soc_add_max98927(nhlt, AUDIO_LINK_SSP0))
+		printk(BIOS_ERR, "Couldn't add max98927\n");
+
+	/* RT5663 Headset codec. */
+	if (nhlt_soc_add_rt5663(nhlt, AUDIO_LINK_SSP1))
+		printk(BIOS_ERR, "Couldn't add headset codec.\n");
+
+	oem_id = oem_id_maxim;
+	oem_table_id = oem_table_id_maxim;
+
+	end_addr = nhlt_soc_serialize_oem_overrides(nhlt, start_addr,
+				oem_id, oem_table_id, oem_revision);
+
+	if (end_addr != start_addr)
+		acpi_add_table(rsdp, (void *)start_addr);
+
+	return end_addr;
+}
+
 static void mainboard_enable(device_t dev)
 {
 	dev->ops->init = mainboard_init;
 	dev->ops->acpi_inject_dsdt_generator = chromeos_dsdt_generator;
+	dev->ops->write_acpi_tables = mainboard_write_acpi_tables;
 }
 
 struct chip_operations mainboard_ops = {



More information about the coreboot-gerrit mailing list