<p>HARSHAPRIYA N has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25334">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Eve: NHLT changes to enable Windows use audio codecs<br><br>This patch adds changes to nhlt to enable windows use audio codecs<br>and enable audio functionality<br><br>Change-Id: Ib13110f4d42e140aa1356ed0b6a6127943b6e800<br>---<br>M src/include/nhlt.h<br>M src/lib/nhlt.c<br>M src/mainboard/google/eve/mainboard.c<br>M src/soc/intel/skylake/include/soc/nhlt.h<br>M src/soc/intel/skylake/nhlt/max98927.c<br>M src/soc/intel/skylake/nhlt/rt5514.c<br>M src/soc/intel/skylake/nhlt/rt5663.c<br>7 files changed, 58 insertions(+), 17 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/25334/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/include/nhlt.h b/src/include/nhlt.h</span><br><span>index 5b72320..ddebd5f 100644</span><br><span>--- a/src/include/nhlt.h</span><br><span>+++ b/src/include/nhlt.h</span><br><span>@@ -207,6 +207,7 @@</span><br><span> NHLT_DIR_RENDER,</span><br><span> NHLT_DIR_CAPTURE,</span><br><span> NHLT_DIR_BIDIRECTIONAL,</span><br><span style="color: hsl(120, 100%, 40%);">+ NHLT_DIR_FEEDBACK,</span><br><span> };</span><br><span> </span><br><span> /* Channel Mask for an endpoint. While they are prefixed with 'SPEAKER' the</span><br><span>@@ -301,6 +302,7 @@</span><br><span> uint8_t num_endpoints;</span><br><span> struct nhlt_endpoint endpoints[MAX_ENDPOINTS];</span><br><span> uint8_t current_instance_id[NHLT_MAX_LINK_TYPES];</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t buffer_size;</span><br><span> };</span><br><span> </span><br><span> struct nhlt_tdm_config {</span><br><span>@@ -313,6 +315,13 @@</span><br><span> NHLT_TDM_MIC_ARRAY,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct maxm_array_config {</span><br><span style="color: hsl(120, 100%, 40%);">+ struct nhlt_tdm_config tdm_config1;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t feedback_virtual_slot;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t feedback_channels;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t feedback_valid_bits_per_sample;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct nhlt_dmic_array_config {</span><br><span> struct nhlt_tdm_config tdm_config;</span><br><span> uint8_t array_type;</span><br><span>diff --git a/src/lib/nhlt.c b/src/lib/nhlt.c</span><br><span>index da94415..723123c 100644</span><br><span>--- a/src/lib/nhlt.c</span><br><span>+++ b/src/lib/nhlt.c</span><br><span>@@ -275,7 +275,7 @@</span><br><span> </span><br><span> size_t nhlt_current_size(struct nhlt *nhlt)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- return calc_size(nhlt) + sizeof(acpi_header_t);</span><br><span style="color: hsl(120, 100%, 40%);">+ return calc_size(nhlt) + sizeof(acpi_header_t) + sizeof(uint32_t);</span><br><span> }</span><br><span> </span><br><span> static void nhlt_free_resources(struct nhlt *nhlt)</span><br><span>@@ -386,6 +386,7 @@</span><br><span> </span><br><span> for (i = 0; i < nhlt->num_endpoints; i++)</span><br><span> serialize_endpoint(&nhlt->endpoints[i], cur);</span><br><span style="color: hsl(120, 100%, 40%);">+ ser32(cur, nhlt->buffer_size);</span><br><span> }</span><br><span> </span><br><span> uintptr_t nhlt_serialize(struct nhlt *nhlt, uintptr_t acpi_addr)</span><br><span>diff --git a/src/mainboard/google/eve/mainboard.c b/src/mainboard/google/eve/mainboard.c</span><br><span>index d30eff2..f8e3126 100644</span><br><span>--- a/src/mainboard/google/eve/mainboard.c</span><br><span>+++ b/src/mainboard/google/eve/mainboard.c</span><br><span>@@ -45,14 +45,26 @@</span><br><span> /* 4 Channel DMIC array */</span><br><span> if (nhlt_soc_add_rt5514(nhlt, AUDIO_LINK_SSP0, 4))</span><br><span> printk(BIOS_ERR, "Couldn't add rt5514.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-1].instance_id = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-1].subsystem_id = 0x006B;</span><br><span> </span><br><span> /* RT5663 Headset codec */</span><br><span> if (nhlt_soc_add_rt5663(nhlt, AUDIO_LINK_SSP1))</span><br><span> printk(BIOS_ERR, "Couldn't add headset codec.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-1].instance_id = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-1].subsystem_id = 0x006B;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-2].instance_id = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-2].subsystem_id = 0x006B;</span><br><span> </span><br><span> /* MAXIM98927 Smart Amps for left and right channel */</span><br><span> if (nhlt_soc_add_max98927(nhlt, AUDIO_LINK_SSP0))</span><br><span> printk(BIOS_ERR, "Couldn't add max98927\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-1].instance_id = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-1].subsystem_id = 0x006B;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-2].instance_id = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->endpoints[nhlt->num_endpoints-2].subsystem_id = 0x006B;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ nhlt->buffer_size = 0;</span><br><span> </span><br><span> end_addr = nhlt_soc_serialize_oem_overrides(nhlt, start_addr,</span><br><span> oem_id_maxim, oem_table_id_maxim, 0);</span><br><span>diff --git a/src/soc/intel/skylake/include/soc/nhlt.h b/src/soc/intel/skylake/include/soc/nhlt.h</span><br><span>index 1af27e8..b74d2e2 100644</span><br><span>--- a/src/soc/intel/skylake/include/soc/nhlt.h</span><br><span>+++ b/src/soc/intel/skylake/include/soc/nhlt.h</span><br><span>@@ -19,6 +19,7 @@</span><br><span> #include <nhlt.h></span><br><span> </span><br><span> #define NHLT_VID 0x8086</span><br><span style="color: hsl(120, 100%, 40%);">+#define NHLT_GOOGLE_VID 0x1ae0</span><br><span> #define NHLT_DID_DMIC 0xae20</span><br><span> #define NHLT_DID_BT 0xae30</span><br><span> #define NHLT_DID_SSP 0xae34</span><br><span>diff --git a/src/soc/intel/skylake/nhlt/max98927.c b/src/soc/intel/skylake/nhlt/max98927.c</span><br><span>index bbaf15d..060657a 100644</span><br><span>--- a/src/soc/intel/skylake/nhlt/max98927.c</span><br><span>+++ b/src/soc/intel/skylake/nhlt/max98927.c</span><br><span>@@ -16,15 +16,6 @@</span><br><span> #include <soc/nhlt.h></span><br><span> </span><br><span> static const struct nhlt_format_config max98927_render_formats[] = {</span><br><span style="color: hsl(0, 100%, 40%);">- /* 48 KHz 24-bits per sample. */</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- .num_channels = 2,</span><br><span style="color: hsl(0, 100%, 40%);">- .sample_freq_khz = 48,</span><br><span style="color: hsl(0, 100%, 40%);">- .container_bits_per_sample = 32,</span><br><span style="color: hsl(0, 100%, 40%);">- .valid_bits_per_sample = 24,</span><br><span style="color: hsl(0, 100%, 40%);">- .speaker_mask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT,</span><br><span style="color: hsl(0, 100%, 40%);">- .settings_file = "max98927-render-2ch-48khz-24b.bin",</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span> /* 48 KHz 16-bits per sample. */</span><br><span> {</span><br><span> .num_channels = 2,</span><br><span>@@ -41,29 +32,55 @@</span><br><span> {</span><br><span> .num_channels = 4,</span><br><span> .sample_freq_khz = 48,</span><br><span style="color: hsl(0, 100%, 40%);">- .container_bits_per_sample = 32,</span><br><span style="color: hsl(120, 100%, 40%);">+ .container_bits_per_sample = 16,</span><br><span> .valid_bits_per_sample = 16,</span><br><span> .speaker_mask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |</span><br><span> SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT,</span><br><span> .settings_file = "max98927-render-2ch-48khz-16b.bin",</span><br><span> },</span><br><span> };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct maxm_array_config render_config = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .tdm_config1 = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .virtual_slot = 0x0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .config_type = 0x3,</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ .feedback_virtual_slot = 2,</span><br><span style="color: hsl(120, 100%, 40%);">+ .feedback_channels = 4,</span><br><span style="color: hsl(120, 100%, 40%);">+ .feedback_valid_bits_per_sample = 16,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct maxm_array_config capture_config = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .tdm_config1 = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .virtual_slot = 0x2,</span><br><span style="color: hsl(120, 100%, 40%);">+ .config_type = 0x3,</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ .feedback_virtual_slot = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .feedback_channels = 2,</span><br><span style="color: hsl(120, 100%, 40%);">+ .feedback_valid_bits_per_sample = 16,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static const struct nhlt_endp_descriptor max98927_descriptors[] = {</span><br><span> {</span><br><span> .link = NHLT_LINK_SSP,</span><br><span> .device = NHLT_SSP_DEV_I2S,</span><br><span> .direction = NHLT_DIR_RENDER,</span><br><span style="color: hsl(0, 100%, 40%);">- .vid = NHLT_VID,</span><br><span style="color: hsl(120, 100%, 40%);">+ .vid = NHLT_GOOGLE_VID,</span><br><span> .did = NHLT_DID_SSP,</span><br><span style="color: hsl(120, 100%, 40%);">+ .cfg = &render_config,</span><br><span style="color: hsl(120, 100%, 40%);">+ .cfg_size = sizeof(render_config),</span><br><span> .formats = max98927_render_formats,</span><br><span> .num_formats = ARRAY_SIZE(max98927_render_formats),</span><br><span> },</span><br><span> {</span><br><span> .link = NHLT_LINK_SSP,</span><br><span> .device = NHLT_SSP_DEV_I2S,</span><br><span style="color: hsl(0, 100%, 40%);">- .direction = NHLT_DIR_CAPTURE,</span><br><span style="color: hsl(0, 100%, 40%);">- .vid = NHLT_VID,</span><br><span style="color: hsl(120, 100%, 40%);">+ .direction = NHLT_DIR_FEEDBACK,</span><br><span style="color: hsl(120, 100%, 40%);">+ .vid = NHLT_GOOGLE_VID,</span><br><span> .did = NHLT_DID_SSP,</span><br><span style="color: hsl(120, 100%, 40%);">+ .cfg = &capture_config,</span><br><span style="color: hsl(120, 100%, 40%);">+ .cfg_size = sizeof(capture_config),</span><br><span> .formats = max98927_capture_formats,</span><br><span> .num_formats = ARRAY_SIZE(max98927_capture_formats),</span><br><span> },</span><br><span>diff --git a/src/soc/intel/skylake/nhlt/rt5514.c b/src/soc/intel/skylake/nhlt/rt5514.c</span><br><span>index 9c48c7b..686f3a4 100644</span><br><span>--- a/src/soc/intel/skylake/nhlt/rt5514.c</span><br><span>+++ b/src/soc/intel/skylake/nhlt/rt5514.c</span><br><span>@@ -30,6 +30,7 @@</span><br><span> </span><br><span> static const struct nhlt_dmic_array_config rt5514_4ch_mic_config = {</span><br><span> .tdm_config = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .virtual_slot = 0x1,</span><br><span> .config_type = NHLT_TDM_MIC_ARRAY,</span><br><span> },</span><br><span> .array_type = NHLT_MIC_ARRAY_4CH_L_SHAPED,</span><br><span>@@ -40,7 +41,7 @@</span><br><span> .link = NHLT_LINK_SSP,</span><br><span> .device = NHLT_SSP_DEV_I2S,</span><br><span> .direction = NHLT_DIR_CAPTURE,</span><br><span style="color: hsl(0, 100%, 40%);">- .vid = NHLT_VID,</span><br><span style="color: hsl(120, 100%, 40%);">+ .vid = NHLT_GOOGLE_VID,</span><br><span> .did = NHLT_DID_SSP,</span><br><span> .cfg = &rt5514_4ch_mic_config,</span><br><span> .cfg_size = sizeof(rt5514_4ch_mic_config),</span><br><span>diff --git a/src/soc/intel/skylake/nhlt/rt5663.c b/src/soc/intel/skylake/nhlt/rt5663.c</span><br><span>index c5a3f53..d602425 100644</span><br><span>--- a/src/soc/intel/skylake/nhlt/rt5663.c</span><br><span>+++ b/src/soc/intel/skylake/nhlt/rt5663.c</span><br><span>@@ -46,7 +46,7 @@</span><br><span> .link = NHLT_LINK_SSP,</span><br><span> .device = NHLT_SSP_DEV_I2S,</span><br><span> .direction = NHLT_DIR_RENDER,</span><br><span style="color: hsl(0, 100%, 40%);">- .vid = NHLT_VID,</span><br><span style="color: hsl(120, 100%, 40%);">+ .vid = NHLT_GOOGLE_VID,</span><br><span> .did = NHLT_DID_SSP,</span><br><span> .cfg = &tdm_config,</span><br><span> .cfg_size = sizeof(tdm_config),</span><br><span>@@ -58,7 +58,7 @@</span><br><span> .link = NHLT_LINK_SSP,</span><br><span> .device = NHLT_SSP_DEV_I2S,</span><br><span> .direction = NHLT_DIR_CAPTURE,</span><br><span style="color: hsl(0, 100%, 40%);">- .vid = NHLT_VID,</span><br><span style="color: hsl(120, 100%, 40%);">+ .vid = NHLT_GOOGLE_VID,</span><br><span> .did = NHLT_DID_SSP,</span><br><span> .cfg = &tdm_config,</span><br><span> .cfg_size = sizeof(tdm_config),</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25334">change 25334</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/25334"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ib13110f4d42e140aa1356ed0b6a6127943b6e800 </div>
<div style="display:none"> Gerrit-Change-Number: 25334 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: HARSHAPRIYA N <harshapriya.n@intel.com> </div>