soc/intel/kabylake: Add Dialog da7219 NHLT blob support
Add APIs and required parameters for creating Dialog da7219 SSP endpoints in NHLT table. The use of a NHLT table is required to make audio work on the kabylake SoCs employing the internal DSP. The table describes the audio endpoints (render vs capture) along with their supported formats. BUG=b:68686020 TEST=check that NHLT table for da7219 is created properly Change-Id: I57b88873f1c59c8aadf8eec3c80a9d95165a2cc3 Signed-off-by: Naveen Manohar <naveen.m@intel.com> Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com> Reviewed-on: https://review.coreboot.org/22324 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
a5b88e442b
commit
83670c5176
|
@ -272,6 +272,12 @@ config NHLT_MAX98927
|
||||||
help
|
help
|
||||||
Include DSP firmware settings for max98927 amplifier.
|
Include DSP firmware settings for max98927 amplifier.
|
||||||
|
|
||||||
|
config NHLT_DA7219
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Include DSP firmware settings for DA7219 headset codec.
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Cache-as-ram implementation"
|
prompt "Cache-as-ram implementation"
|
||||||
default CAR_NEM_ENHANCED
|
default CAR_NEM_ENHANCED
|
||||||
|
|
|
@ -77,4 +77,10 @@ int nhlt_soc_add_rt5663(struct nhlt *nhlt, int hwlink);
|
||||||
*/
|
*/
|
||||||
int nhlt_soc_add_max98927(struct nhlt *nhlt, int hwlink);
|
int nhlt_soc_add_max98927(struct nhlt *nhlt, int hwlink);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add da7219 headset codec on provided SSP link. Return 0 on success, < 0
|
||||||
|
* on error.
|
||||||
|
*/
|
||||||
|
int nhlt_soc_add_da7219(struct nhlt *nhlt, int hwlink);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,6 +5,7 @@ ramstage-y += ssm4567.c
|
||||||
ramstage-y += rt5514.c
|
ramstage-y += rt5514.c
|
||||||
ramstage-y += rt5663.c
|
ramstage-y += rt5663.c
|
||||||
ramstage-y += max98927.c
|
ramstage-y += max98927.c
|
||||||
|
ramstage-y += da7219.c
|
||||||
|
|
||||||
# DSP firmware settings files.
|
# DSP firmware settings files.
|
||||||
ifeq ($(CONFIG_SOC_INTEL_KABYLAKE),y)
|
ifeq ($(CONFIG_SOC_INTEL_KABYLAKE),y)
|
||||||
|
@ -25,6 +26,7 @@ RT5514_CAPTURE = rt5514-capture-4ch-48khz-16b.bin
|
||||||
RT5663 = rt5663-2ch-48khz-24b.bin
|
RT5663 = rt5663-2ch-48khz-24b.bin
|
||||||
SSM4567_RENDER = ssm4567-render-2ch-48khz-24b.bin
|
SSM4567_RENDER = ssm4567-render-2ch-48khz-24b.bin
|
||||||
SSM4567_CAPTURE = ssm4567-capture-4ch-48khz-32b.bin
|
SSM4567_CAPTURE = ssm4567-capture-4ch-48khz-32b.bin
|
||||||
|
DA7219_RENDER_CAPTURE = dialog-2ch-48khz-24b.bin
|
||||||
|
|
||||||
cbfs-files-$(CONFIG_NHLT_DMIC_2CH) += $(DMIC_2CH_48KHZ_16B)
|
cbfs-files-$(CONFIG_NHLT_DMIC_2CH) += $(DMIC_2CH_48KHZ_16B)
|
||||||
$(DMIC_2CH_48KHZ_16B)-file := $(NHLT_BLOB_PATH)/$(DMIC_2CH_48KHZ_16B)
|
$(DMIC_2CH_48KHZ_16B)-file := $(NHLT_BLOB_PATH)/$(DMIC_2CH_48KHZ_16B)
|
||||||
|
@ -73,3 +75,7 @@ $(MAX98927_RENDER_16B)-type := raw
|
||||||
cbfs-files-$(CONFIG_NHLT_MAX98927) += $(MAX98927_RENDER_24B)
|
cbfs-files-$(CONFIG_NHLT_MAX98927) += $(MAX98927_RENDER_24B)
|
||||||
$(MAX98927_RENDER_24B)-file := $(NHLT_BLOB_PATH)/$(MAX98927_RENDER_24B)
|
$(MAX98927_RENDER_24B)-file := $(NHLT_BLOB_PATH)/$(MAX98927_RENDER_24B)
|
||||||
$(MAX98927_RENDER_24B)-type := raw
|
$(MAX98927_RENDER_24B)-type := raw
|
||||||
|
|
||||||
|
cbfs-files-$(CONFIG_NHLT_DA7219) += $(DA7219_RENDER_CAPTURE)
|
||||||
|
$(DA7219_RENDER_CAPTURE)-file := $(NHLT_BLOB_PATH)/$(DA7219_RENDER_CAPTURE)
|
||||||
|
$(DA7219_RENDER_CAPTURE)-type := raw
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017 Intel Corp.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <console/console.h>
|
||||||
|
#include <nhlt.h>
|
||||||
|
#include <soc/nhlt.h>
|
||||||
|
|
||||||
|
static const struct nhlt_tdm_config tdm_config = {
|
||||||
|
.virtual_slot = 0,
|
||||||
|
.config_type = NHLT_TDM_BASIC,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct nhlt_format_config da7219_formats[] = {
|
||||||
|
/* 48 KHz 24-bits per sample. */
|
||||||
|
{
|
||||||
|
.num_channels = 2,
|
||||||
|
.sample_freq_khz = 48,
|
||||||
|
.container_bits_per_sample = 32,
|
||||||
|
.valid_bits_per_sample = 24,
|
||||||
|
.settings_file = "dialog-2ch-48khz-24b.bin",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct nhlt_endp_descriptor da7219_descriptors[] = {
|
||||||
|
/* Render Endpoint */
|
||||||
|
{
|
||||||
|
.link = NHLT_LINK_SSP,
|
||||||
|
.device = NHLT_SSP_DEV_I2S,
|
||||||
|
.direction = NHLT_DIR_RENDER,
|
||||||
|
.vid = NHLT_VID,
|
||||||
|
.did = NHLT_DID_SSP,
|
||||||
|
.cfg = &tdm_config,
|
||||||
|
.cfg_size = sizeof(tdm_config),
|
||||||
|
.formats = da7219_formats,
|
||||||
|
.num_formats = ARRAY_SIZE(da7219_formats),
|
||||||
|
},
|
||||||
|
/* Capture Endpoint */
|
||||||
|
{
|
||||||
|
.link = NHLT_LINK_SSP,
|
||||||
|
.device = NHLT_SSP_DEV_I2S,
|
||||||
|
.direction = NHLT_DIR_CAPTURE,
|
||||||
|
.vid = NHLT_VID,
|
||||||
|
.did = NHLT_DID_SSP,
|
||||||
|
.cfg = &tdm_config,
|
||||||
|
.cfg_size = sizeof(tdm_config),
|
||||||
|
.formats = da7219_formats,
|
||||||
|
.num_formats = ARRAY_SIZE(da7219_formats),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
int nhlt_soc_add_da7219(struct nhlt *nhlt, int hwlink)
|
||||||
|
{
|
||||||
|
/* Virtual bus id of SSP links are the hardware port ids proper. */
|
||||||
|
return nhlt_add_ssp_endpoints(nhlt, hwlink, da7219_descriptors,
|
||||||
|
ARRAY_SIZE(da7219_descriptors));
|
||||||
|
}
|
Loading…
Reference in New Issue