[coreboot-gerrit] Change in coreboot[master]: Eve: NHLT changes to enable Windows use audio codecs

HARSHAPRIYA N (Code Review) gerrit at coreboot.org
Fri Mar 23 02:42:11 CET 2018


HARSHAPRIYA N has uploaded this change for review. ( https://review.coreboot.org/25334


Change subject: Eve: NHLT changes to enable Windows use audio codecs
......................................................................

Eve: NHLT changes to enable Windows use audio codecs

This patch adds changes to nhlt to enable windows use audio codecs
and enable audio functionality

Change-Id: Ib13110f4d42e140aa1356ed0b6a6127943b6e800
---
M src/include/nhlt.h
M src/lib/nhlt.c
M src/mainboard/google/eve/mainboard.c
M src/soc/intel/skylake/include/soc/nhlt.h
M src/soc/intel/skylake/nhlt/max98927.c
M src/soc/intel/skylake/nhlt/rt5514.c
M src/soc/intel/skylake/nhlt/rt5663.c
7 files changed, 58 insertions(+), 17 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/25334/1

diff --git a/src/include/nhlt.h b/src/include/nhlt.h
index 5b72320..ddebd5f 100644
--- a/src/include/nhlt.h
+++ b/src/include/nhlt.h
@@ -207,6 +207,7 @@
 	NHLT_DIR_RENDER,
 	NHLT_DIR_CAPTURE,
 	NHLT_DIR_BIDIRECTIONAL,
+	NHLT_DIR_FEEDBACK,
 };
 
 /* Channel Mask for an endpoint. While they are prefixed with 'SPEAKER' the
@@ -301,6 +302,7 @@
 	uint8_t num_endpoints;
 	struct nhlt_endpoint endpoints[MAX_ENDPOINTS];
 	uint8_t current_instance_id[NHLT_MAX_LINK_TYPES];
+	uint32_t buffer_size;
 };
 
 struct nhlt_tdm_config {
@@ -313,6 +315,13 @@
 	NHLT_TDM_MIC_ARRAY,
 };
 
+struct maxm_array_config {
+	struct nhlt_tdm_config tdm_config1;
+	uint8_t feedback_virtual_slot;
+	uint16_t feedback_channels;
+	uint16_t feedback_valid_bits_per_sample;
+};
+
 struct nhlt_dmic_array_config {
 	struct nhlt_tdm_config tdm_config;
 	uint8_t array_type;
diff --git a/src/lib/nhlt.c b/src/lib/nhlt.c
index da94415..723123c 100644
--- a/src/lib/nhlt.c
+++ b/src/lib/nhlt.c
@@ -275,7 +275,7 @@
 
 size_t nhlt_current_size(struct nhlt *nhlt)
 {
-	return calc_size(nhlt) + sizeof(acpi_header_t);
+	return calc_size(nhlt) + sizeof(acpi_header_t) + sizeof(uint32_t);
 }
 
 static void nhlt_free_resources(struct nhlt *nhlt)
@@ -386,6 +386,7 @@
 
 	for (i = 0; i < nhlt->num_endpoints; i++)
 		serialize_endpoint(&nhlt->endpoints[i], cur);
+	ser32(cur, nhlt->buffer_size);
 }
 
 uintptr_t nhlt_serialize(struct nhlt *nhlt, uintptr_t acpi_addr)
diff --git a/src/mainboard/google/eve/mainboard.c b/src/mainboard/google/eve/mainboard.c
index d30eff2..f8e3126 100644
--- a/src/mainboard/google/eve/mainboard.c
+++ b/src/mainboard/google/eve/mainboard.c
@@ -45,14 +45,26 @@
 	/* 4 Channel DMIC array */
 	if (nhlt_soc_add_rt5514(nhlt, AUDIO_LINK_SSP0, 4))
 		printk(BIOS_ERR, "Couldn't add rt5514.\n");
+	nhlt->endpoints[nhlt->num_endpoints-1].instance_id = 0;
+	nhlt->endpoints[nhlt->num_endpoints-1].subsystem_id = 0x006B;
 
 	/* RT5663 Headset codec */
 	if (nhlt_soc_add_rt5663(nhlt, AUDIO_LINK_SSP1))
 		printk(BIOS_ERR, "Couldn't add headset codec.\n");
+	nhlt->endpoints[nhlt->num_endpoints-1].instance_id = 0;
+	nhlt->endpoints[nhlt->num_endpoints-1].subsystem_id = 0x006B;
+	nhlt->endpoints[nhlt->num_endpoints-2].instance_id = 0;
+	nhlt->endpoints[nhlt->num_endpoints-2].subsystem_id = 0x006B;
 
 	/* 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");
+	nhlt->endpoints[nhlt->num_endpoints-1].instance_id = 0;
+	nhlt->endpoints[nhlt->num_endpoints-1].subsystem_id = 0x006B;
+	nhlt->endpoints[nhlt->num_endpoints-2].instance_id = 0;
+	nhlt->endpoints[nhlt->num_endpoints-2].subsystem_id = 0x006B;
+
+	nhlt->buffer_size = 0;
 
 	end_addr = nhlt_soc_serialize_oem_overrides(nhlt, start_addr,
 				    oem_id_maxim, oem_table_id_maxim, 0);
diff --git a/src/soc/intel/skylake/include/soc/nhlt.h b/src/soc/intel/skylake/include/soc/nhlt.h
index 1af27e8..b74d2e2 100644
--- a/src/soc/intel/skylake/include/soc/nhlt.h
+++ b/src/soc/intel/skylake/include/soc/nhlt.h
@@ -19,6 +19,7 @@
 #include <nhlt.h>
 
 #define NHLT_VID 0x8086
+#define NHLT_GOOGLE_VID 0x1ae0
 #define NHLT_DID_DMIC 0xae20
 #define NHLT_DID_BT 0xae30
 #define NHLT_DID_SSP 0xae34
diff --git a/src/soc/intel/skylake/nhlt/max98927.c b/src/soc/intel/skylake/nhlt/max98927.c
index bbaf15d..060657a 100644
--- a/src/soc/intel/skylake/nhlt/max98927.c
+++ b/src/soc/intel/skylake/nhlt/max98927.c
@@ -16,15 +16,6 @@
 #include <soc/nhlt.h>
 
 static const struct nhlt_format_config max98927_render_formats[] = {
-	/* 48 KHz 24-bits per sample. */
-	{
-		.num_channels = 2,
-		.sample_freq_khz = 48,
-		.container_bits_per_sample = 32,
-		.valid_bits_per_sample = 24,
-		.speaker_mask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT,
-		.settings_file = "max98927-render-2ch-48khz-24b.bin",
-	},
 	/* 48 KHz 16-bits per sample. */
 	{
 		.num_channels = 2,
@@ -41,29 +32,55 @@
 	{
 		.num_channels = 4,
 		.sample_freq_khz = 48,
-		.container_bits_per_sample = 32,
+		.container_bits_per_sample = 16,
 		.valid_bits_per_sample = 16,
 		.speaker_mask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |
 				SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT,
 		.settings_file = "max98927-render-2ch-48khz-16b.bin",
 	},
 };
+
+static const struct maxm_array_config render_config = {
+	.tdm_config1 = {
+		.virtual_slot = 0x0,
+		.config_type = 0x3,
+	},
+	.feedback_virtual_slot = 2,
+	.feedback_channels = 4,
+	.feedback_valid_bits_per_sample = 16,
+};
+
+static const struct maxm_array_config capture_config = {
+	.tdm_config1 = {
+		.virtual_slot = 0x2,
+		.config_type = 0x3,
+	},
+	.feedback_virtual_slot = 0,
+	.feedback_channels = 2,
+	.feedback_valid_bits_per_sample = 16,
+};
+
+
 static const struct nhlt_endp_descriptor max98927_descriptors[] = {
 	{
 		.link = NHLT_LINK_SSP,
 		.device = NHLT_SSP_DEV_I2S,
 		.direction = NHLT_DIR_RENDER,
-		.vid = NHLT_VID,
+		.vid = NHLT_GOOGLE_VID,
 		.did = NHLT_DID_SSP,
+		.cfg = &render_config,
+		.cfg_size = sizeof(render_config),
 		.formats = max98927_render_formats,
 		.num_formats = ARRAY_SIZE(max98927_render_formats),
 	},
 	{
 		.link = NHLT_LINK_SSP,
 		.device = NHLT_SSP_DEV_I2S,
-		.direction = NHLT_DIR_CAPTURE,
-		.vid = NHLT_VID,
+		.direction = NHLT_DIR_FEEDBACK,
+		.vid = NHLT_GOOGLE_VID,
 		.did = NHLT_DID_SSP,
+		.cfg = &capture_config,
+		.cfg_size = sizeof(capture_config),
 		.formats = max98927_capture_formats,
 		.num_formats = ARRAY_SIZE(max98927_capture_formats),
 	},
diff --git a/src/soc/intel/skylake/nhlt/rt5514.c b/src/soc/intel/skylake/nhlt/rt5514.c
index 9c48c7b..686f3a4 100644
--- a/src/soc/intel/skylake/nhlt/rt5514.c
+++ b/src/soc/intel/skylake/nhlt/rt5514.c
@@ -30,6 +30,7 @@
 
 static const struct nhlt_dmic_array_config rt5514_4ch_mic_config = {
 	.tdm_config = {
+		.virtual_slot = 0x1,
 		.config_type = NHLT_TDM_MIC_ARRAY,
 	},
 	.array_type = NHLT_MIC_ARRAY_4CH_L_SHAPED,
@@ -40,7 +41,7 @@
 		.link = NHLT_LINK_SSP,
 		.device = NHLT_SSP_DEV_I2S,
 		.direction = NHLT_DIR_CAPTURE,
-		.vid = NHLT_VID,
+		.vid = NHLT_GOOGLE_VID,
 		.did = NHLT_DID_SSP,
 		.cfg = &rt5514_4ch_mic_config,
 		.cfg_size = sizeof(rt5514_4ch_mic_config),
diff --git a/src/soc/intel/skylake/nhlt/rt5663.c b/src/soc/intel/skylake/nhlt/rt5663.c
index c5a3f53..d602425 100644
--- a/src/soc/intel/skylake/nhlt/rt5663.c
+++ b/src/soc/intel/skylake/nhlt/rt5663.c
@@ -46,7 +46,7 @@
 		.link = NHLT_LINK_SSP,
 		.device = NHLT_SSP_DEV_I2S,
 		.direction = NHLT_DIR_RENDER,
-		.vid = NHLT_VID,
+		.vid = NHLT_GOOGLE_VID,
 		.did = NHLT_DID_SSP,
 		.cfg = &tdm_config,
 		.cfg_size = sizeof(tdm_config),
@@ -58,7 +58,7 @@
 		.link = NHLT_LINK_SSP,
 		.device = NHLT_SSP_DEV_I2S,
 		.direction = NHLT_DIR_CAPTURE,
-		.vid = NHLT_VID,
+		.vid = NHLT_GOOGLE_VID,
 		.did = NHLT_DID_SSP,
 		.cfg = &tdm_config,
 		.cfg_size = sizeof(tdm_config),

-- 
To view, visit https://review.coreboot.org/25334
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib13110f4d42e140aa1356ed0b6a6127943b6e800
Gerrit-Change-Number: 25334
Gerrit-PatchSet: 1
Gerrit-Owner: HARSHAPRIYA N <harshapriya.n at intel.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180323/cea6c51d/attachment-0001.html>


More information about the coreboot-gerrit mailing list