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@intel.com> Reviewed-on: https://review.coreboot.org/15440 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
		
				
					committed by
					
						 Aaron Durbin
						Aaron Durbin
					
				
			
			
				
	
			
			
			
						parent
						
							90e716691d
						
					
				
				
					commit
					af9f35a2ce
				
			| @@ -45,4 +45,10 @@ config UART_FOR_CONSOLE | |||||||
| 	int | 	int | ||||||
| 	default 2 | 	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 | endif # BOARD_GOOGLE_REEF | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ DefinitionBlock( | |||||||
| 		{ | 		{ | ||||||
| 			#include <soc/intel/apollolake/acpi/northbridge.asl> | 			#include <soc/intel/apollolake/acpi/northbridge.asl> | ||||||
| 			#include <soc/intel/apollolake/acpi/southbridge.asl> | 			#include <soc/intel/apollolake/acpi/southbridge.asl> | ||||||
|  | 			#include <soc/intel/apollolake/acpi/pch_hda.asl> | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,8 +13,12 @@ | |||||||
|  * GNU General Public License for more details. |  * GNU General Public License for more details. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #include <arch/acpi.h> | ||||||
|  | #include <console/console.h> | ||||||
| #include <device/device.h> | #include <device/device.h> | ||||||
|  | #include <nhlt.h> | ||||||
| #include <soc/gpio.h> | #include <soc/gpio.h> | ||||||
|  | #include <soc/nhlt.h> | ||||||
| #include "ec.h" | #include "ec.h" | ||||||
| #include "gpio.h" | #include "gpio.h" | ||||||
|  |  | ||||||
| @@ -24,6 +28,49 @@ static void mainboard_init(void *chip_info) | |||||||
| 	mainboard_ec_init(); | 	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 = { | struct chip_operations mainboard_ops = { | ||||||
| 	.init = mainboard_init, | 	.init = mainboard_init, | ||||||
|  | 	.enable_dev = mainboard_enable, | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user