[coreboot-gerrit] New patch to review for coreboot: intel/amenia: Add nhlt support.

Lijian Zhao (lijian.zhao@intel.com) gerrit at coreboot.org
Mon Jun 6 23:21:14 CEST 2016


Lijian Zhao (lijian.zhao at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15087

-gerrit

commit df80d6aa6aaeb8bd34cc333115f0aa9848a8696b
Author: Saurabh Satija <saurabh.satija at intel.com>
Date:   Tue Mar 15 17:31:06 2016 -0700

    intel/amenia: Add nhlt support.
    
    Adding the ACPI NHLT table generation that the current hardware
    supports.
    
    Amenia has support for two audio codecs Nuvoton and Dialog  for
    headphones and Maxim for speakers.
    
    Change-Id: Id8e0f2cf5d79841dd271650936a28ca914e26753
    Signed-off-by: Saurabh Satija <saurabh.satija at intel.com>
    Reviewed-on: https://chromium.devtools.intel.com/7154
    Reviewed-by: Petrov, Andrey <andrey.petrov at intel.com>
    Tested-by: Petrov, Andrey <andrey.petrov at intel.com>
    Reviewed-on: https://chromium.devtools.intel.com/7576
---
 src/mainboard/intel/amenia/dsdt.asl    |  5 ++--
 src/mainboard/intel/amenia/mainboard.c | 45 ++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/src/mainboard/intel/amenia/dsdt.asl b/src/mainboard/intel/amenia/dsdt.asl
index 8147c27..20b0192 100644
--- a/src/mainboard/intel/amenia/dsdt.asl
+++ b/src/mainboard/intel/amenia/dsdt.asl
@@ -30,8 +30,9 @@ DefinitionBlock(
 	Scope (\_SB) {
 		Device (PCI0)
 		{
-                #include <soc/intel/apollolake/acpi/northbridge.asl>
-                #include <soc/intel/apollolake/acpi/southbridge.asl>
+                	#include <soc/intel/apollolake/acpi/northbridge.asl>
+                	#include <soc/intel/apollolake/acpi/southbridge.asl>
+			#include <soc/intel/apollolake/acpi/pch.asl>
 		}
 	}
 	/* Mainboard Specific devices */
diff --git a/src/mainboard/intel/amenia/mainboard.c b/src/mainboard/intel/amenia/mainboard.c
index 22304f8..c6a3594 100644
--- a/src/mainboard/intel/amenia/mainboard.c
+++ b/src/mainboard/intel/amenia/mainboard.c
@@ -18,6 +18,11 @@
 #include <device/device.h>
 #include <soc/gpio.h>
 #include <soc/pci_devs.h>
+#include <soc/nhlt.h>
+#include <arch/acpi.h>
+#include <console/console.h>
+#include <stdlib.h>
+#include <string.h>
 #include "ec.h"
 
 /* TODO: Move GPIO config to its own file once we get more GPIOs in the list */
@@ -138,6 +143,46 @@ 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, "Couldn't add 2CH DMIC array.\n");
+
+		/* NAU88l25 and Dialog have Headset codec. */
+		if (nhlt_soc_add_headset(nhlt, AUDIO_LINK_SSP1))
+                        printk(BIOS_ERR, "Couldn't add headset codec.\n");
+
+		/* MAXIM Smart Amps for left and right. */
+		if (nhlt_soc_add_max98357(nhlt, AUDIO_LINK_SSP5))
+			printk(BIOS_ERR, "Couldn't add max98357.\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 = (void *) mainboard_write_acpi_tables;
+}
+
 struct chip_operations mainboard_ops = {
 	.init = mainboard_init,
+	.enable_dev = mainboard_enable,
 };



More information about the coreboot-gerrit mailing list