ASoC: Intel: sof_rt5682: add two derivative options
Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>: Add support for platforms without amplifier (headset codec only) and without Intel graphics.
This commit is contained in:
Коммит
9ebb50df2b
|
@ -81,6 +81,7 @@ struct sof_card_private {
|
|||
struct snd_soc_jack sof_headset;
|
||||
struct list_head hdmi_pcm_list;
|
||||
bool common_hdmi_codec_drv;
|
||||
bool idisp_codec;
|
||||
};
|
||||
|
||||
static int sof_rt5682_quirk_cb(const struct dmi_system_id *id)
|
||||
|
@ -422,7 +423,7 @@ static int sof_card_late_probe(struct snd_soc_card *card)
|
|||
int i = 0;
|
||||
|
||||
/* HDMI is not supported by SOF on Baytrail/CherryTrail */
|
||||
if (is_legacy_cpu)
|
||||
if (is_legacy_cpu || !ctx->idisp_codec)
|
||||
return 0;
|
||||
|
||||
if (list_empty(&ctx->hdmi_pcm_list))
|
||||
|
@ -563,11 +564,14 @@ static struct snd_soc_dai_link_component dummy_component[] = {
|
|||
}
|
||||
};
|
||||
|
||||
#define IDISP_CODEC_MASK 0x4
|
||||
|
||||
static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
int ssp_codec,
|
||||
int ssp_amp,
|
||||
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;
|
||||
|
@ -681,13 +685,18 @@ 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);
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
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);
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
} else {
|
||||
idisp_components[i - 1].name = "snd-soc-dummy";
|
||||
idisp_components[i - 1].dai_name = "snd-soc-dummy-dai";
|
||||
}
|
||||
|
||||
links[id].codecs = &idisp_components[i - 1];
|
||||
links[id].num_codecs = 1;
|
||||
|
@ -843,6 +852,9 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
/* default number of HDMI DAI's */
|
||||
if (!hdmi_num)
|
||||
hdmi_num = 3;
|
||||
|
||||
if (mach->mach_params.codec_mask & IDISP_CODEC_MASK)
|
||||
ctx->idisp_codec = true;
|
||||
}
|
||||
|
||||
/* need to get main clock from pmc */
|
||||
|
@ -897,7 +909,7 @@ static int sof_audio_probe(struct platform_device *pdev)
|
|||
sof_audio_card_rt5682.num_links++;
|
||||
|
||||
dai_links = sof_card_dai_links_create(&pdev->dev, ssp_codec, ssp_amp,
|
||||
dmic_be_num, hdmi_num);
|
||||
dmic_be_num, hdmi_num, ctx->idisp_codec);
|
||||
if (!dai_links)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -1038,6 +1050,14 @@ static const struct platform_device_id board_ids[] = {
|
|||
SOF_BT_OFFLOAD_SSP(2) |
|
||||
SOF_SSP_BT_OFFLOAD_PRESENT),
|
||||
},
|
||||
{
|
||||
.name = "adl_rt5682",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
SOF_RT5682_SSP_CODEC(0) |
|
||||
SOF_RT5682_NUM_HDMIDEV(4) |
|
||||
SOF_BT_OFFLOAD_SSP(2) |
|
||||
SOF_SSP_BT_OFFLOAD_PRESENT),
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, board_ids);
|
||||
|
|
|
@ -447,6 +447,12 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
|
|||
.sof_fw_filename = "sof-adl.ri",
|
||||
.sof_tplg_filename = "sof-adl-max98390-rt5682.tplg",
|
||||
},
|
||||
{
|
||||
.comp_ids = &adl_rt5682_rt5682s_hp,
|
||||
.drv_name = "adl_rt5682",
|
||||
.sof_fw_filename = "sof-adl.ri",
|
||||
.sof_tplg_filename = "sof-adl-rt5682.tplg",
|
||||
},
|
||||
{},
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_adl_machines);
|
||||
|
|
Загрузка…
Ссылка в новой задаче