[coreboot-gerrit] Patch set updated for coreboot: mainboard/google/reef: Use common NHLT

Saurabh Satija (saurabh.satija@intel.com) gerrit at coreboot.org
Thu Jun 30 23:53:29 CEST 2016


Saurabh Satija (saurabh.satija at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15440

-gerrit

commit b0c58d5ada10d78068feb6007d9c451abe54d9a0
Author: Saurabh Satija <saurabh.satija at intel.com>
Date:   Sun Jun 26 18:25:34 2016 -0700

    mainboard/google/reef: Use common NHLT
    
    Add ACPI NHLT table generation that the current hardware
    supports.
    
    Reef supports two audio codecs, Dialog 7219 for headsets
    and Maxim 98357 for speakers.
    
    Change-Id: Ie39947960c86b8f65140834e31f9ed9f1b578485
    Signed-off-by: Saurabh Satija <saurabh.satija at intel.com>
---
 src/mainboard/google/reef/Kconfig     |  6 +++++
 src/mainboard/google/reef/dsdt.asl    |  1 +
 src/mainboard/google/reef/mainboard.c | 47 +++++++++++++++++++++++++++++++++++
 3 files changed, 54 insertions(+)

diff --git a/src/mainboard/google/reef/Kconfig b/src/mainboard/google/reef/Kconfig
index d64598d..ded75bb 100644
--- a/src/mainboard/google/reef/Kconfig
+++ b/src/mainboard/google/reef/Kconfig
@@ -45,4 +45,10 @@ config UART_FOR_CONSOLE
 	int
 	default 2
 
+config INCLUDE_NHLT_BLOBS
+	bool "Include blobs for audio."
+	select NHLT_DMIC_2CH_16B
+	select NHLT_DA7219
+	select NHLT_MAX98357
+
 endif # BOARD_GOOGLE_REEF
diff --git a/src/mainboard/google/reef/dsdt.asl b/src/mainboard/google/reef/dsdt.asl
index e48db4b..7a88fb6 100644
--- a/src/mainboard/google/reef/dsdt.asl
+++ b/src/mainboard/google/reef/dsdt.asl
@@ -33,6 +33,7 @@ DefinitionBlock(
 		{
 			#include <soc/intel/apollolake/acpi/northbridge.asl>
 			#include <soc/intel/apollolake/acpi/southbridge.asl>
+			#include <soc/intel/apollolake/acpi/pch_hda.asl>
 		}
 	}
 
diff --git a/src/mainboard/google/reef/mainboard.c b/src/mainboard/google/reef/mainboard.c
index 31bf9c8..2b121ef 100644
--- a/src/mainboard/google/reef/mainboard.c
+++ b/src/mainboard/google/reef/mainboard.c
@@ -13,8 +13,12 @@
  * GNU General Public License for more details.
  */
 
+#include <arch/acpi.h>
+#include <console/console.h>
 #include <device/device.h>
+#include <nhlt.h>
 #include <soc/gpio.h>
+#include <soc/nhlt.h>
 #include "ec.h"
 #include "gpio.h"
 
@@ -24,6 +28,49 @@ static void mainboard_init(void *chip_info)
 	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;
+
+	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, "Added 2CH DMIC array.\n");
+
+	/* Dialog for Headset codec.
+	 * Headset codec is bi-directional but uses the same configuration
+	 * settings for render and capture endpoints.
+	 */
+	if (!nhlt_soc_add_da7219(nhlt, AUDIO_LINK_SSP1))
+		printk(BIOS_ERR, "Added Dialog_7219 codec.\n");
+
+	/* MAXIM Smart Amps for left and right speakers. */
+	if (!nhlt_soc_add_max98357(nhlt, AUDIO_LINK_SSP5))
+		printk(BIOS_ERR, "Added Maxim_98357 codec.\n");
+
+	end_addr = nhlt_soc_serialize(nhlt, start_addr);
+
+	if (end_addr != start_addr)
+		acpi_add_table(rsdp, (void *)start_addr);
+
+	return end_addr;
+}
+
+static void mainboard_enable(device_t dev)
+{
+	dev->ops->write_acpi_tables = mainboard_write_acpi_tables;
+}
+
 struct chip_operations mainboard_ops = {
 	.init = mainboard_init,
+	.enable_dev = mainboard_enable,
 };



More information about the coreboot-gerrit mailing list