Merge series "ASoC: Intel: machine driver updates for 5.7" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
Fix HDaudio/HDMI Kconfig dependencies, cleanup code, and add support
for 2 new configs (DA7219+Maxim 98360A and RT5692+RT1015)
Note that the last patch is the first case where we added the
Reviewed-by tags automagically from the list of GitHub
approvers. Feedback/comments welcome on the format, and thanks to
Ranjani for the nice script!
Changes since v1:
Change base to broonie/for-5.7
Rebase and fix for_each_codec_dais() macro in Patch 9.
Add new patch to remove GFP_ATOMIC
Guennadi Liakhovetski (3):
ASoC: codecs: hdac_hdmi: (cosmetic) remove redundant variable
initialisations
ASoC: Intel: skylake: (cosmetic) remove redundant variable
initialisations
ASoC: Intel: (cosmetic) simplify structure member access
Kai Vehmanen (4):
ASoC: Intel: boards: drop reverse deps for SND_HDA_CODEC_HDMI
ASoC: Intel: sof_pcm512x: drop reverse deps for SND_HDA_CODEC_HDMI
ASoC: Intel: sof_pcm512x: make HDMI optional for all platforms
ASoC: SOF: Intel: hda: remove SND_SOC_SOF_HDA_COMMON_HDMI_CODEC
Pierre-Louis Bossart (1):
ASoC: Intel: don't use GFP_ATOMIC for machine driver contexts
Yong Zhi (2):
ASoC: Intel: sof_da7219_max98373: Add support for max98360a speaker
amp
ASoC: Intel: sof_rt5682: Add rt1015 speaker amp support
sound/soc/codecs/hdac_hdmi.c | 6 +-
sound/soc/intel/boards/Kconfig | 20 ++--
sound/soc/intel/boards/bdw-rt5650.c | 2 +-
sound/soc/intel/boards/bdw-rt5677.c | 2 +-
sound/soc/intel/boards/broadwell.c | 2 +-
sound/soc/intel/boards/bxt_da7219_max98357a.c | 2 +-
sound/soc/intel/boards/bxt_rt298.c | 2 +-
sound/soc/intel/boards/bytcht_da7213.c | 2 +-
sound/soc/intel/boards/cht_bsw_max98090_ti.c | 2 +-
sound/soc/intel/boards/cht_bsw_nau8824.c | 2 +-
sound/soc/intel/boards/cht_bsw_rt5645.c | 2 +-
sound/soc/intel/boards/cml_rt1011_rt5682.c | 4 +-
sound/soc/intel/boards/glk_rt5682_max98357a.c | 2 +-
sound/soc/intel/boards/haswell.c | 2 +-
sound/soc/intel/boards/kbl_rt5663_max98927.c | 2 +-
.../intel/boards/kbl_rt5663_rt5514_max98927.c | 2 +-
sound/soc/intel/boards/skl_hda_dsp_generic.c | 2 +-
.../soc/intel/boards/skl_nau88l25_max98357a.c | 2 +-
sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 2 +-
sound/soc/intel/boards/sof_da7219_max98373.c | 78 +++++++++++--
sound/soc/intel/boards/sof_pcm512x.c | 38 ++++--
sound/soc/intel/boards/sof_rt5682.c | 110 +++++++++++++++++-
.../intel/common/soc-acpi-intel-jsl-match.c | 34 +++++-
sound/soc/intel/skylake/skl.c | 4 +-
sound/soc/sof/intel/Kconfig | 11 --
sound/soc/sof/intel/hda.c | 3 +-
26 files changed, 269 insertions(+), 71 deletions(-)
base-commit: 101247a3b8
--
2.20.1
This commit is contained in:
Коммит
ccab2c7dfe
|
@ -1998,11 +1998,11 @@ static struct hdac_hdmi_drv_data intel_drv_data = {
|
|||
|
||||
static int hdac_hdmi_dev_probe(struct hdac_device *hdev)
|
||||
{
|
||||
struct hdac_hdmi_priv *hdmi_priv = NULL;
|
||||
struct hdac_hdmi_priv *hdmi_priv;
|
||||
struct snd_soc_dai_driver *hdmi_dais = NULL;
|
||||
struct hdac_ext_link *hlink = NULL;
|
||||
struct hdac_ext_link *hlink;
|
||||
int num_dais = 0;
|
||||
int ret = 0;
|
||||
int ret;
|
||||
struct hdac_driver *hdrv = drv_to_hdac_driver(hdev->dev.driver);
|
||||
const struct hda_device_id *hdac_id = hdac_get_device_id(hdev, hdrv);
|
||||
|
||||
|
|
|
@ -289,7 +289,6 @@ config SND_SOC_INTEL_DA7219_MAX98357A_GENERIC
|
|||
select SND_SOC_DA7219
|
||||
select SND_SOC_MAX98357A
|
||||
select SND_SOC_DMIC
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
select SND_SOC_HDAC_HDMI
|
||||
|
||||
config SND_SOC_INTEL_BXT_DA7219_MAX98357A_COMMON
|
||||
|
@ -302,6 +301,7 @@ config SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH
|
|||
tristate "Broxton with DA7219 and MAX98357A in I2S Mode"
|
||||
depends on I2C && ACPI
|
||||
depends on MFD_INTEL_LPSS || COMPILE_TEST
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_INTEL_BXT_DA7219_MAX98357A_COMMON
|
||||
help
|
||||
This adds support for ASoC machine driver for Broxton-P platforms
|
||||
|
@ -402,6 +402,7 @@ config SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH
|
|||
tristate "GLK with DA7219 and MAX98357A in I2S Mode"
|
||||
depends on I2C && ACPI
|
||||
depends on MFD_INTEL_LPSS || COMPILE_TEST
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_INTEL_BXT_DA7219_MAX98357A_COMMON
|
||||
help
|
||||
This adds support for ASoC machine driver for Geminilake platforms
|
||||
|
@ -413,10 +414,10 @@ config SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH
|
|||
tristate "GLK with RT5682 and MAX98357A in I2S Mode"
|
||||
depends on I2C && ACPI
|
||||
depends on MFD_INTEL_LPSS || COMPILE_TEST
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_RT5682
|
||||
select SND_SOC_MAX98357A
|
||||
select SND_SOC_DMIC
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
select SND_SOC_HDAC_HDMI
|
||||
help
|
||||
This adds support for ASoC machine driver for Geminilake platforms
|
||||
|
@ -430,7 +431,7 @@ if SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC || SND_SOC_SOF_HDA_AUDIO_CODEC
|
|||
|
||||
config SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH
|
||||
tristate "SKL/KBL/BXT/APL with HDA Codecs"
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_HDAC_HDMI
|
||||
select SND_SOC_DMIC
|
||||
# SND_SOC_HDAC_HDA is already selected
|
||||
|
@ -448,9 +449,10 @@ config SND_SOC_INTEL_SOF_RT5682_MACH
|
|||
depends on I2C && ACPI
|
||||
depends on (SND_SOC_SOF_HDA_LINK && (MFD_INTEL_LPSS || COMPILE_TEST)) ||\
|
||||
(SND_SOC_SOF_BAYTRAIL && (X86_INTEL_LPSS || COMPILE_TEST))
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_RT1015
|
||||
select SND_SOC_RT5682
|
||||
select SND_SOC_DMIC
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
select SND_SOC_HDAC_HDMI
|
||||
help
|
||||
This adds support for ASoC machine driver for SOF platforms
|
||||
|
@ -463,8 +465,8 @@ config SND_SOC_INTEL_SOF_PCM512x_MACH
|
|||
depends on I2C && ACPI
|
||||
depends on (SND_SOC_SOF_HDA_AUDIO_CODEC && (MFD_INTEL_LPSS || COMPILE_TEST)) ||\
|
||||
(SND_SOC_SOF_BAYTRAIL && (X86_INTEL_LPSS || COMPILE_TEST))
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_PCM512x_I2C
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
help
|
||||
This adds support for ASoC machine driver for SOF platforms
|
||||
with TI PCM512x I2S audio codec.
|
||||
|
@ -490,11 +492,11 @@ config SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH
|
|||
tristate "CML with RT1011 and RT5682 in I2S Mode"
|
||||
depends on I2C && ACPI
|
||||
depends on MFD_INTEL_LPSS || COMPILE_TEST
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_RT1011
|
||||
select SND_SOC_RT5682
|
||||
select SND_SOC_DMIC
|
||||
select SND_SOC_HDAC_HDMI
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
help
|
||||
This adds support for ASoC machine driver for SOF platform with
|
||||
RT1011 + RT5682 I2S codec.
|
||||
|
@ -506,16 +508,16 @@ endif ## SND_SOC_SOF_COMETLAKE_LP && SND_SOC_SOF_HDA_LINK
|
|||
if SND_SOC_SOF_JASPERLAKE
|
||||
|
||||
config SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH
|
||||
tristate "SOF with DA7219 and MAX98373 in I2S Mode"
|
||||
tristate "SOF with DA7219 and MAX98373/MAX98360A in I2S Mode"
|
||||
depends on I2C && ACPI
|
||||
depends on MFD_INTEL_LPSS || COMPILE_TEST
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
select SND_SOC_DA7219
|
||||
select SND_SOC_MAX98373
|
||||
select SND_SOC_DMIC
|
||||
select SND_HDA_CODEC_HDMI if SND_SOC_SOF_HDA_AUDIO_CODEC
|
||||
help
|
||||
This adds support for ASoC machine driver for SOF platforms
|
||||
with DA7219 + MAX98373 I2S audio codec.
|
||||
with DA7219 + MAX98373/MAX98360A I2S audio codec.
|
||||
Say Y if you have such a device.
|
||||
If unsure select "N".
|
||||
|
||||
|
|
|
@ -298,7 +298,7 @@ static int bdw_rt5650_probe(struct platform_device *pdev)
|
|||
return -ENOMEM;
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
ret = snd_soc_fixup_dai_links_platform_name(&bdw_rt5650_card,
|
||||
mach->mach_params.platform);
|
||||
|
||||
|
|
|
@ -412,7 +412,7 @@ static int bdw_rt5677_probe(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
ret = snd_soc_fixup_dai_links_platform_name(&bdw_rt5677_card,
|
||||
mach->mach_params.platform);
|
||||
if (ret)
|
||||
|
|
|
@ -283,7 +283,7 @@ static int broadwell_audio_probe(struct platform_device *pdev)
|
|||
broadwell_rt286.dev = &pdev->dev;
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
ret = snd_soc_fixup_dai_links_platform_name(&broadwell_rt286,
|
||||
mach->mach_params.platform);
|
||||
if (ret)
|
||||
|
|
|
@ -721,7 +721,7 @@ static int broxton_audio_probe(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
platform_name = mach->mach_params.platform;
|
||||
|
||||
ret = snd_soc_fixup_dai_links_platform_name(&broxton_audio_card,
|
||||
|
|
|
@ -627,7 +627,7 @@ static int broxton_audio_probe(struct platform_device *pdev)
|
|||
snd_soc_card_set_drvdata(card, ctx);
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
platform_name = mach->mach_params.platform;
|
||||
|
||||
ret = snd_soc_fixup_dai_links_platform_name(card,
|
||||
|
|
|
@ -231,7 +231,7 @@ static int bytcht_da7213_probe(struct platform_device *pdev)
|
|||
int ret_val = 0;
|
||||
int i;
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
card = &bytcht_da7213_card;
|
||||
card->dev = &pdev->dev;
|
||||
|
||||
|
|
|
@ -553,7 +553,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
|
|||
|
||||
/* override plaform name, if required */
|
||||
snd_soc_card_cht.dev = &pdev->dev;
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
platform_name = mach->mach_params.platform;
|
||||
|
||||
ret_val = snd_soc_fixup_dai_links_platform_name(&snd_soc_card_cht,
|
||||
|
|
|
@ -259,7 +259,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
|
|||
|
||||
/* override plaform name, if required */
|
||||
snd_soc_card_cht.dev = &pdev->dev;
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
platform_name = mach->mach_params.platform;
|
||||
|
||||
ret_val = snd_soc_fixup_dai_links_platform_name(&snd_soc_card_cht,
|
||||
|
|
|
@ -539,7 +539,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
|
|||
if (!drv)
|
||||
return -ENOMEM;
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(snd_soc_cards); i++) {
|
||||
if (acpi_dev_found(snd_soc_cards[i].codec_id) &&
|
||||
|
|
|
@ -446,12 +446,12 @@ static int snd_cml_rt1011_probe(struct platform_device *pdev)
|
|||
const char *platform_name;
|
||||
int ret;
|
||||
|
||||
ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_ATOMIC);
|
||||
ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL);
|
||||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
||||
INIT_LIST_HEAD(&ctx->hdmi_pcm_list);
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
snd_soc_card_cml.dev = &pdev->dev;
|
||||
platform_name = mach->mach_params.platform;
|
||||
|
||||
|
|
|
@ -604,7 +604,7 @@ static int geminilake_audio_probe(struct platform_device *pdev)
|
|||
snd_soc_card_set_drvdata(card, ctx);
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
platform_name = mach->mach_params.platform;
|
||||
|
||||
ret = snd_soc_fixup_dai_links_platform_name(card, platform_name);
|
||||
|
|
|
@ -193,7 +193,7 @@ static int haswell_audio_probe(struct platform_device *pdev)
|
|||
haswell_rt5640.dev = &pdev->dev;
|
||||
|
||||
/* override plaform name, if required */
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
ret = snd_soc_fixup_dai_links_platform_name(&haswell_rt5640,
|
||||
mach->mach_params.platform);
|
||||
if (ret)
|
||||
|
|
|
@ -962,7 +962,7 @@ static int kabylake_audio_probe(struct platform_device *pdev)
|
|||
kabylake_audio_card->dev = &pdev->dev;
|
||||
snd_soc_card_set_drvdata(kabylake_audio_card, ctx);
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
if (mach)
|
||||
dmic_constraints = mach->mach_params.dmic_num == 2 ?
|
||||
&constraints_dmic_2ch : &constraints_dmic_channels;
|
||||
|
|
|
@ -772,7 +772,7 @@ static int kabylake_audio_probe(struct platform_device *pdev)
|
|||
kabylake_audio_card.dev = &pdev->dev;
|
||||
snd_soc_card_set_drvdata(&kabylake_audio_card, ctx);
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
if (mach)
|
||||
dmic_constraints = mach->mach_params.dmic_num == 2 ?
|
||||
&constraints_dmic_2ch : &constraints_dmic_channels;
|
||||
|
|
|
@ -182,7 +182,7 @@ static int skl_hda_audio_probe(struct platform_device *pdev)
|
|||
|
||||
INIT_LIST_HEAD(&ctx->hdmi_pcm_list);
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
if (!mach)
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -660,7 +660,7 @@ static int skylake_audio_probe(struct platform_device *pdev)
|
|||
skylake_audio_card.dev = &pdev->dev;
|
||||
snd_soc_card_set_drvdata(&skylake_audio_card, ctx);
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
if (mach)
|
||||
dmic_constraints = mach->mach_params.dmic_num == 2 ?
|
||||
&constraints_dmic_2ch : &constraints_dmic_channels;
|
||||
|
|
|
@ -703,7 +703,7 @@ static int skylake_audio_probe(struct platform_device *pdev)
|
|||
skylake_audio_card.dev = &pdev->dev;
|
||||
snd_soc_card_set_drvdata(&skylake_audio_card, ctx);
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
if (mach)
|
||||
dmic_constraints = mach->mach_params.dmic_num == 2 ?
|
||||
&constraints_dmic_2ch : &constraints_dmic_channels;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Copyright(c) 2019 Intel Corporation.
|
||||
|
||||
/*
|
||||
* Intel SOF Machine driver for DA7219 + MAX98373 codec
|
||||
* Intel SOF Machine driver for DA7219 + MAX98373/MAX98360A codec
|
||||
*/
|
||||
|
||||
#include <linux/input.h>
|
||||
|
@ -69,11 +69,14 @@ static const struct snd_kcontrol_new controls[] = {
|
|||
SOC_DAPM_PIN_SWITCH("Right Spk"),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new m98360a_controls[] = {
|
||||
SOC_DAPM_PIN_SWITCH("Headphone Jack"),
|
||||
SOC_DAPM_PIN_SWITCH("Headset Mic"),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget widgets[] = {
|
||||
SND_SOC_DAPM_HP("Headphone Jack", NULL),
|
||||
SND_SOC_DAPM_MIC("Headset Mic", NULL),
|
||||
SND_SOC_DAPM_SPK("Left Spk", NULL),
|
||||
SND_SOC_DAPM_SPK("Right Spk", NULL),
|
||||
SND_SOC_DAPM_SUPPLY("Platform Clock", SND_SOC_NOPM, 0, 0,
|
||||
platform_clock_control, SND_SOC_DAPM_POST_PMD |
|
||||
SND_SOC_DAPM_PRE_PMU),
|
||||
|
@ -83,15 +86,23 @@ static const struct snd_soc_dapm_route audio_map[] = {
|
|||
{ "Headphone Jack", NULL, "HPL" },
|
||||
{ "Headphone Jack", NULL, "HPR" },
|
||||
|
||||
{ "Left Spk", NULL, "Left BE_OUT" },
|
||||
{ "Right Spk", NULL, "Right BE_OUT" },
|
||||
|
||||
{ "MIC", NULL, "Headset Mic" },
|
||||
|
||||
{ "Headphone Jack", NULL, "Platform Clock" },
|
||||
{ "Headset Mic", NULL, "Platform Clock" },
|
||||
};
|
||||
|
||||
/* For MAX98373 amp */
|
||||
static const struct snd_soc_dapm_widget max98373_widgets[] = {
|
||||
SND_SOC_DAPM_SPK("Left Spk", NULL),
|
||||
SND_SOC_DAPM_SPK("Right Spk", NULL),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_route max98373_map[] = {
|
||||
{ "Left Spk", NULL, "Left BE_OUT" },
|
||||
{ "Right Spk", NULL, "Right BE_OUT" },
|
||||
};
|
||||
|
||||
static struct snd_soc_jack headset;
|
||||
|
||||
static int da7219_codec_init(struct snd_soc_pcm_runtime *rtd)
|
||||
|
@ -133,6 +144,21 @@ static int da7219_codec_init(struct snd_soc_pcm_runtime *rtd)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int speaker_amp_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Add widgets */
|
||||
ret = snd_soc_dapm_new_controls(&rtd->card->dapm, max98373_widgets,
|
||||
ARRAY_SIZE(max98373_widgets));
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Add routes */
|
||||
return snd_soc_dapm_add_routes(&rtd->card->dapm, max98373_map,
|
||||
ARRAY_SIZE(max98373_map));
|
||||
}
|
||||
|
||||
static int ssp1_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
|
@ -223,6 +249,8 @@ SND_SOC_DAILINK_DEF(ssp1_amps,
|
|||
DAILINK_COMP_ARRAY(
|
||||
/* Left */ COMP_CODEC(MAXIM_DEV0_NAME, MAX98373_CODEC_DAI),
|
||||
/* Right */ COMP_CODEC(MAXIM_DEV1_NAME, MAX98373_CODEC_DAI)));
|
||||
/* For the driver-less spk amp */
|
||||
SND_SOC_DAILINK_DEF(dummy, DAILINK_COMP_ARRAY(COMP_DUMMY()));
|
||||
|
||||
SND_SOC_DAILINK_DEF(dmic_pin,
|
||||
DAILINK_COMP_ARRAY(COMP_CPU("DMIC01 Pin")));
|
||||
|
@ -254,6 +282,7 @@ static struct snd_soc_dai_link dais[] = {
|
|||
.id = 0,
|
||||
.ignore_pmdown_time = 1,
|
||||
.no_pcm = 1,
|
||||
.init = speaker_amp_init,
|
||||
.dpcm_playback = 1,
|
||||
.dpcm_capture = 1, /* IV feedback */
|
||||
.ops = &ssp1_ops,
|
||||
|
@ -320,6 +349,21 @@ static struct snd_soc_card card_da7219_m98373 = {
|
|||
.late_probe = card_late_probe,
|
||||
};
|
||||
|
||||
static struct snd_soc_card card_da7219_m98360a = {
|
||||
.name = "da7219max98360a",
|
||||
.owner = THIS_MODULE,
|
||||
.dai_link = dais,
|
||||
.num_links = ARRAY_SIZE(dais),
|
||||
.controls = m98360a_controls,
|
||||
.num_controls = ARRAY_SIZE(m98360a_controls),
|
||||
.dapm_widgets = widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(widgets),
|
||||
.dapm_routes = audio_map,
|
||||
.num_dapm_routes = ARRAY_SIZE(audio_map),
|
||||
.fully_routed = true,
|
||||
.late_probe = card_late_probe,
|
||||
};
|
||||
|
||||
static int audio_probe(struct platform_device *pdev)
|
||||
{
|
||||
static struct snd_soc_card *card;
|
||||
|
@ -327,15 +371,26 @@ static int audio_probe(struct platform_device *pdev)
|
|||
struct card_private *ctx;
|
||||
int ret;
|
||||
|
||||
ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_ATOMIC);
|
||||
ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL);
|
||||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
||||
/* By default dais[0] is configured for max98373 */
|
||||
if (!strcmp(pdev->name, "sof_da7219_max98360a")) {
|
||||
dais[0] = (struct snd_soc_dai_link) {
|
||||
.name = "SSP1-Codec",
|
||||
.id = 0,
|
||||
.no_pcm = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ignore_pmdown_time = 1,
|
||||
SND_SOC_DAILINK_REG(ssp1_pin, dummy, platform) };
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&ctx->hdmi_pcm_list);
|
||||
card = (struct snd_soc_card *)pdev->id_entry->driver_data;
|
||||
card->dev = &pdev->dev;
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
ret = snd_soc_fixup_dai_links_platform_name(card,
|
||||
mach->mach_params.platform);
|
||||
if (ret)
|
||||
|
@ -351,13 +406,17 @@ static const struct platform_device_id board_ids[] = {
|
|||
.name = "sof_da7219_max98373",
|
||||
.driver_data = (kernel_ulong_t)&card_da7219_m98373,
|
||||
},
|
||||
{
|
||||
.name = "sof_da7219_max98360a",
|
||||
.driver_data = (kernel_ulong_t)&card_da7219_m98360a,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct platform_driver audio = {
|
||||
.probe = audio_probe,
|
||||
.driver = {
|
||||
.name = "sof_da7219_max98373",
|
||||
.name = "sof_da7219_max98_360a_373",
|
||||
.pm = &snd_soc_pm_ops,
|
||||
},
|
||||
.id_table = board_ids,
|
||||
|
@ -368,4 +427,5 @@ module_platform_driver(audio)
|
|||
MODULE_DESCRIPTION("ASoC Intel(R) SOF Machine driver");
|
||||
MODULE_AUTHOR("Yong Zhi <yong.zhi@intel.com>");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_ALIAS("platform:sof_da7219_max98360a");
|
||||
MODULE_ALIAS("platform:sof_da7219_max98373");
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
#define SOF_PCM512X_SSP_CODEC(quirk) ((quirk) & GENMASK(3, 0))
|
||||
#define SOF_PCM512X_SSP_CODEC_MASK (GENMASK(3, 0))
|
||||
|
||||
#define IDISP_CODEC_MASK 0x4
|
||||
|
||||
/* Default: SSP5 */
|
||||
static unsigned long sof_pcm512x_quirk = SOF_PCM512X_SSP_CODEC(5);
|
||||
|
||||
|
@ -40,6 +42,7 @@ struct sof_hdmi_pcm {
|
|||
|
||||
struct sof_card_private {
|
||||
struct list_head hdmi_pcm_list;
|
||||
bool idisp_codec;
|
||||
};
|
||||
|
||||
static int sof_pcm512x_quirk_cb(const struct dmi_system_id *id)
|
||||
|
@ -136,6 +139,9 @@ static int sof_card_late_probe(struct snd_soc_card *card)
|
|||
if (list_empty(&ctx->hdmi_pcm_list))
|
||||
return -EINVAL;
|
||||
|
||||
if (!ctx->idisp_codec)
|
||||
return 0;
|
||||
|
||||
pcm = list_first_entry(&ctx->hdmi_pcm_list, struct sof_hdmi_pcm, head);
|
||||
|
||||
return hda_dsp_hdmi_build_controls(card, pcm->codec_dai->component);
|
||||
|
@ -214,7 +220,8 @@ SND_SOC_DAILINK_DEF(dmic_component,
|
|||
static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
int ssp_codec,
|
||||
int dmic_be_num,
|
||||
int hdmi_num)
|
||||
int hdmi_num,
|
||||
bool idisp_codec)
|
||||
{
|
||||
struct snd_soc_dai_link_component *idisp_components;
|
||||
struct snd_soc_dai_link_component *cpus;
|
||||
|
@ -316,11 +323,19 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
|||
if (!links[id].cpus->dai_name)
|
||||
goto devm_err;
|
||||
|
||||
idisp_components[i - 1].name = "ehdaudio0D2";
|
||||
idisp_components[i - 1].dai_name = devm_kasprintf(dev,
|
||||
GFP_KERNEL,
|
||||
"intel-hdmi-hifi%d",
|
||||
i);
|
||||
/*
|
||||
* topology cannot be loaded if codec is missing, so
|
||||
* use the dummy codec if needed
|
||||
*/
|
||||
if (idisp_codec) {
|
||||
idisp_components[i - 1].name = "ehdaudio0D2";
|
||||
idisp_components[i - 1].dai_name =
|
||||
devm_kasprintf(dev, GFP_KERNEL,
|
||||
"intel-hdmi-hifi%d", i);
|
||||
} else {
|
||||
idisp_components[i - 1].name = "snd-soc-dummy";
|
||||
idisp_components[i - 1].dai_name = "snd-soc-dummy-dai";
|
||||
}
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
|
||||
|
@ -341,8 +356,8 @@ devm_err:
|
|||
|
||||
static int sof_audio_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct snd_soc_acpi_mach *mach = pdev->dev.platform_data;
|
||||
struct snd_soc_dai_link *dai_links;
|
||||
struct snd_soc_acpi_mach *mach;
|
||||
struct sof_card_private *ctx;
|
||||
int dmic_be_num, hdmi_num;
|
||||
int ret, ssp_codec;
|
||||
|
@ -360,6 +375,11 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
} else {
|
||||
dmic_be_num = 2;
|
||||
#if IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI)
|
||||
if (mach->mach_params.common_hdmi_codec_drv &&
|
||||
(mach->mach_params.codec_mask & IDISP_CODEC_MASK))
|
||||
ctx->idisp_codec = true;
|
||||
|
||||
/* links are always present in topology */
|
||||
hdmi_num = 3;
|
||||
#endif
|
||||
}
|
||||
|
@ -374,7 +394,8 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
sof_audio_card_pcm512x.num_links = 1 + dmic_be_num + hdmi_num;
|
||||
|
||||
dai_links = sof_card_dai_links_create(&pdev->dev, ssp_codec,
|
||||
dmic_be_num, hdmi_num);
|
||||
dmic_be_num, hdmi_num,
|
||||
ctx->idisp_codec);
|
||||
if (!dai_links)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -383,7 +404,6 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
INIT_LIST_HEAD(&ctx->hdmi_pcm_list);
|
||||
|
||||
sof_audio_card_pcm512x.dev = &pdev->dev;
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
|
||||
/* set platform name for each dailink */
|
||||
ret = snd_soc_fixup_dai_links_platform_name(&sof_audio_card_pcm512x,
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright(c) 2019 Intel Corporation.
|
||||
// Copyright(c) 2019-2020 Intel Corporation.
|
||||
|
||||
/*
|
||||
* Intel SOF Machine Driver with Realtek rt5682 Codec
|
||||
* and speaker codec MAX98357A
|
||||
* and speaker codec MAX98357A or RT1015.
|
||||
*/
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/input.h>
|
||||
|
@ -18,6 +18,7 @@
|
|||
#include <sound/soc.h>
|
||||
#include <sound/rt5682.h>
|
||||
#include <sound/soc-acpi.h>
|
||||
#include "../../codecs/rt1015.h"
|
||||
#include "../../codecs/rt5682.h"
|
||||
#include "../../codecs/hdac_hdmi.h"
|
||||
#include "../common/soc-intel-quirks.h"
|
||||
|
@ -39,6 +40,7 @@
|
|||
#define SOF_RT5682_NUM_HDMIDEV_MASK (GENMASK(12, 10))
|
||||
#define SOF_RT5682_NUM_HDMIDEV(quirk) \
|
||||
((quirk << SOF_RT5682_NUM_HDMIDEV_SHIFT) & SOF_RT5682_NUM_HDMIDEV_MASK)
|
||||
#define SOF_RT1015_SPEAKER_AMP_PRESENT BIT(13)
|
||||
|
||||
/* Default: MCLK on, MCLK 19.2M, SSP0 */
|
||||
static unsigned long sof_rt5682_quirk = SOF_RT5682_MCLK_EN |
|
||||
|
@ -260,6 +262,42 @@ static struct snd_soc_ops sof_rt5682_ops = {
|
|||
.hw_params = sof_rt5682_hw_params,
|
||||
};
|
||||
|
||||
static int sof_rt1015_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_card *card = rtd->card;
|
||||
struct snd_soc_dai *codec_dai;
|
||||
int i, ret;
|
||||
|
||||
if (!snd_soc_card_get_codec_dai(card, "rt1015-aif"))
|
||||
return 0;
|
||||
|
||||
for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
||||
ret = snd_soc_dai_set_pll(codec_dai, 0, RT1015_PLL_S_BCLK,
|
||||
params_rate(params) * 50,
|
||||
params_rate(params) * 256);
|
||||
if (ret < 0) {
|
||||
dev_err(card->dev, "failed to set pll\n");
|
||||
return ret;
|
||||
}
|
||||
/* Configure sysclk for codec */
|
||||
ret = snd_soc_dai_set_sysclk(codec_dai, RT1015_SCLK_S_PLL,
|
||||
params_rate(params) * 256,
|
||||
SND_SOC_CLOCK_IN);
|
||||
if (ret < 0) {
|
||||
dev_err(card->dev, "failed to set sysclk\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct snd_soc_ops sof_rt1015_ops = {
|
||||
.hw_params = sof_rt1015_hw_params,
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component platform_component[] = {
|
||||
{
|
||||
/* name might be overridden during probe */
|
||||
|
@ -316,12 +354,17 @@ static const struct snd_kcontrol_new sof_controls[] = {
|
|||
SOC_DAPM_PIN_SWITCH("Headphone Jack"),
|
||||
SOC_DAPM_PIN_SWITCH("Headset Mic"),
|
||||
SOC_DAPM_PIN_SWITCH("Spk"),
|
||||
SOC_DAPM_PIN_SWITCH("Left Spk"),
|
||||
SOC_DAPM_PIN_SWITCH("Right Spk"),
|
||||
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget sof_widgets[] = {
|
||||
SND_SOC_DAPM_HP("Headphone Jack", NULL),
|
||||
SND_SOC_DAPM_MIC("Headset Mic", NULL),
|
||||
SND_SOC_DAPM_SPK("Spk", NULL),
|
||||
SND_SOC_DAPM_SPK("Left Spk", NULL),
|
||||
SND_SOC_DAPM_SPK("Right Spk", NULL),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget dmic_widgets[] = {
|
||||
|
@ -342,11 +385,22 @@ static const struct snd_soc_dapm_route speaker_map[] = {
|
|||
{ "Spk", NULL, "Speaker" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_route speaker_map_lr[] = {
|
||||
{ "Left Spk", NULL, "Left SPO" },
|
||||
{ "Right Spk", NULL, "Right SPO" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_route dmic_map[] = {
|
||||
/* digital mics */
|
||||
{"DMic", NULL, "SoC DMIC"},
|
||||
};
|
||||
|
||||
static int speaker_codec_init_lr(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
return snd_soc_dapm_add_routes(&rtd->card->dapm, speaker_map_lr,
|
||||
ARRAY_SIZE(speaker_map_lr));
|
||||
}
|
||||
|
||||
static int speaker_codec_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_card *card = rtd->card;
|
||||
|
@ -382,6 +436,17 @@ static int dmic_init(struct snd_soc_pcm_runtime *rtd)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static struct snd_soc_codec_conf rt1015_amp_conf[] = {
|
||||
{
|
||||
.dlc = COMP_CODEC_CONF("i2c-10EC1015:00"),
|
||||
.name_prefix = "Left",
|
||||
},
|
||||
{
|
||||
.dlc = COMP_CODEC_CONF("i2c-10EC1015:01"),
|
||||
.name_prefix = "Right",
|
||||
},
|
||||
};
|
||||
|
||||
/* sof audio machine driver for rt5682 codec */
|
||||
static struct snd_soc_card sof_audio_card_rt5682 = {
|
||||
.name = "rt5682", /* the sof- prefix is added by the core */
|
||||
|
@ -417,6 +482,17 @@ static struct snd_soc_dai_link_component max98357a_component[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component rt1015_components[] = {
|
||||
{
|
||||
.name = "i2c-10EC1015:00",
|
||||
.dai_name = "rt1015-aif",
|
||||
},
|
||||
{
|
||||
.name = "i2c-10EC1015:01",
|
||||
.dai_name = "rt1015-aif",
|
||||
},
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
int ssp_codec,
|
||||
int ssp_amp,
|
||||
|
@ -556,11 +632,18 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
|||
goto devm_err;
|
||||
|
||||
links[id].id = id;
|
||||
links[id].codecs = max98357a_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(max98357a_component);
|
||||
if (sof_rt5682_quirk & SOF_RT1015_SPEAKER_AMP_PRESENT) {
|
||||
links[id].codecs = rt1015_components;
|
||||
links[id].num_codecs = ARRAY_SIZE(rt1015_components);
|
||||
links[id].init = speaker_codec_init_lr;
|
||||
links[id].ops = &sof_rt1015_ops;
|
||||
} else {
|
||||
links[id].codecs = max98357a_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(max98357a_component);
|
||||
links[id].init = speaker_codec_init;
|
||||
}
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
links[id].init = speaker_codec_init,
|
||||
links[id].nonatomic = true;
|
||||
links[id].dpcm_playback = 1;
|
||||
links[id].no_pcm = 1;
|
||||
|
@ -604,7 +687,7 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
|
||||
dmi_check_system(sof_rt5682_quirk_table);
|
||||
|
||||
mach = (&pdev->dev)->platform_data;
|
||||
mach = pdev->dev.platform_data;
|
||||
|
||||
/* A speaker amp might not be present when the quirk claims one is.
|
||||
* Detect this via whether the machine driver match includes quirk_data.
|
||||
|
@ -669,6 +752,11 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
|
||||
sof_audio_card_rt5682.dai_link = dai_links;
|
||||
|
||||
if (sof_rt5682_quirk & SOF_RT1015_SPEAKER_AMP_PRESENT) {
|
||||
sof_audio_card_rt5682.codec_conf = rt1015_amp_conf;
|
||||
sof_audio_card_rt5682.num_configs = ARRAY_SIZE(rt1015_amp_conf);
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&ctx->hdmi_pcm_list);
|
||||
|
||||
sof_audio_card_rt5682.dev = &pdev->dev;
|
||||
|
@ -714,6 +802,15 @@ static const struct platform_device_id board_ids[] = {
|
|||
SOF_RT5682_SSP_AMP(1) |
|
||||
SOF_RT5682_NUM_HDMIDEV(4)),
|
||||
},
|
||||
{
|
||||
.name = "jsl_rt5682_rt1015",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
SOF_RT5682_MCLK_24MHZ |
|
||||
SOF_RT5682_SSP_CODEC(0) |
|
||||
SOF_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT1015_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT5682_SSP_AMP(1)),
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
@ -735,3 +832,4 @@ MODULE_AUTHOR("Sathya Prakash M R <sathya.prakash.m.r@intel.com>");
|
|||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_ALIAS("platform:sof_rt5682");
|
||||
MODULE_ALIAS("platform:tgl_max98357a_rt5682");
|
||||
MODULE_ALIAS("platform:jsl_rt5682_rt1015");
|
||||
|
|
|
@ -2,20 +2,50 @@
|
|||
/*
|
||||
* soc-apci-intel-jsl-match.c - tables and support for JSL ACPI enumeration.
|
||||
*
|
||||
* Copyright (c) 2019, Intel Corporation.
|
||||
* Copyright (c) 2019-2020, Intel Corporation.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sound/soc-acpi.h>
|
||||
#include <sound/soc-acpi-intel-match.h>
|
||||
|
||||
static struct snd_soc_acpi_codecs jsl_7219_98373_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98373"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs rt1015_spk = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10EC1015"}
|
||||
};
|
||||
|
||||
/*
|
||||
* When adding new entry to the snd_soc_acpi_intel_jsl_machines array,
|
||||
* use .quirk_data member to distinguish different machine driver,
|
||||
* and keep ACPI .id field unchanged for the common codec.
|
||||
*/
|
||||
struct snd_soc_acpi_mach snd_soc_acpi_intel_jsl_machines[] = {
|
||||
{
|
||||
.id = "DLGS7219",
|
||||
.drv_name = "sof_da7219_max98373",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.sof_tplg_filename = "sof-jsl-da7219.tplg",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &jsl_7219_98373_codecs,
|
||||
},
|
||||
{
|
||||
.id = "DLGS7219",
|
||||
.drv_name = "sof_da7219_max98360a",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.sof_tplg_filename = "sof-jsl-da7219-mx98360a.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.drv_name = "jsl_rt5682_rt1015",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &rt1015_spk,
|
||||
.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
|
|
@ -359,7 +359,7 @@ static int skl_resume(struct device *dev)
|
|||
struct pci_dev *pci = to_pci_dev(dev);
|
||||
struct hdac_bus *bus = pci_get_drvdata(pci);
|
||||
struct skl_dev *skl = bus_to_skl(bus);
|
||||
struct hdac_ext_link *hlink = NULL;
|
||||
struct hdac_ext_link *hlink;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
|
@ -794,7 +794,7 @@ static void skl_probe_work(struct work_struct *work)
|
|||
{
|
||||
struct skl_dev *skl = container_of(work, struct skl_dev, probe_work);
|
||||
struct hdac_bus *bus = skl_to_bus(skl);
|
||||
struct hdac_ext_link *hlink = NULL;
|
||||
struct hdac_ext_link *hlink;
|
||||
int err;
|
||||
|
||||
if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI)) {
|
||||
|
|
|
@ -324,17 +324,6 @@ config SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1
|
|||
Say Y if you want to enable DMI Link L1
|
||||
If unsure, select "N".
|
||||
|
||||
config SND_SOC_SOF_HDA_COMMON_HDMI_CODEC
|
||||
bool "SOF common HDA HDMI codec driver"
|
||||
depends on SND_SOC_SOF_HDA_LINK
|
||||
depends on SND_HDA_CODEC_HDMI
|
||||
default SND_HDA_CODEC_HDMI
|
||||
help
|
||||
This adds support for HDMI audio by using the common HDA
|
||||
HDMI/DisplayPort codec driver.
|
||||
Say Y if you want to use the common codec driver with SOF.
|
||||
If unsure select "Y".
|
||||
|
||||
endif ## SND_SOC_SOF_HDA_COMMON
|
||||
|
||||
config SND_SOC_SOF_HDA_LINK_BASELINE
|
||||
|
|
|
@ -54,8 +54,7 @@ static int hda_dmic_num = -1;
|
|||
module_param_named(dmic_num, hda_dmic_num, int, 0444);
|
||||
MODULE_PARM_DESC(dmic_num, "SOF HDA DMIC number");
|
||||
|
||||
static bool hda_codec_use_common_hdmi =
|
||||
IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_COMMON_HDMI_CODEC);
|
||||
static bool hda_codec_use_common_hdmi = IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI);
|
||||
module_param_named(use_common_hdmi, hda_codec_use_common_hdmi, bool, 0444);
|
||||
MODULE_PARM_DESC(use_common_hdmi, "SOF HDA use common HDMI codec driver");
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче