Specify components string for each card of each supported device. It's a free form string that describes audio hardware configuration. This information is useful for ALSA UCM rules. It allows to generalize UCM rules, potentially removing a need to add new UCM rule for each device.
This patch also adds asoc->components hook that allows to specify components description per device.
Suggested-by: Jaroslav Kysela perex@perex.cz Signed-off-by: Dmitry Osipenko digetx@gmail.com --- sound/soc/tegra/tegra_asoc_machine.c | 9 +++++++++ sound/soc/tegra/tegra_asoc_machine.h | 1 + sound/soc/tegra/tegra_wm8903.c | 1 + 3 files changed, 11 insertions(+)
diff --git a/sound/soc/tegra/tegra_asoc_machine.c b/sound/soc/tegra/tegra_asoc_machine.c index 17579decceda..a81f2ebfc00c 100644 --- a/sound/soc/tegra/tegra_asoc_machine.c +++ b/sound/soc/tegra/tegra_asoc_machine.c @@ -399,6 +399,8 @@ int tegra_asoc_machine_probe(struct platform_device *pdev)
if (asoc->add_common_snd_ops) card->dai_link->ops = &tegra_machine_snd_ops; + if (asoc->components) + card->components = asoc->components;
if (!card->owner) card->owner = THIS_MODULE; @@ -434,6 +436,7 @@ static struct snd_soc_dai_link tegra_wm8753_dai = { };
static struct snd_soc_card snd_soc_tegra_wm8753 = { + .components = "codec:wm8753", .dai_link = &tegra_wm8753_dai, .num_links = 1, .fully_routed = true, @@ -466,6 +469,7 @@ static struct snd_soc_dai_link tegra_wm9712_dai = { };
static struct snd_soc_card snd_soc_tegra_wm9712 = { + .components = "codec:wm9712", .dai_link = &tegra_wm9712_dai, .num_links = 1, .fully_routed = true, @@ -527,6 +531,7 @@ static struct snd_soc_dai_link tegra_sgtl5000_dai = { };
static struct snd_soc_card snd_soc_tegra_sgtl5000 = { + .components = "codec:sgtl5000", .dai_link = &tegra_sgtl5000_dai, .num_links = 1, .fully_routed = true, @@ -569,6 +574,7 @@ static struct snd_soc_dai_link tegra_tlv320aic23_dai = { };
static struct snd_soc_card snd_soc_tegra_trimslice = { + .components = "codec:tlv320aic23", .dai_link = &tegra_tlv320aic23_dai, .num_links = 1, .dapm_widgets = trimslice_dapm_widgets, @@ -616,6 +622,7 @@ static struct snd_soc_dai_link tegra_rt5677_dai = { };
static struct snd_soc_card snd_soc_tegra_rt5677 = { + .components = "codec:rt5677", .dai_link = &tegra_rt5677_dai, .num_links = 1, .fully_routed = true, @@ -649,6 +656,7 @@ static struct snd_soc_dai_link tegra_rt5640_dai = { };
static struct snd_soc_card snd_soc_tegra_rt5640 = { + .components = "codec:rt5640", .dai_link = &tegra_rt5640_dai, .num_links = 1, .fully_routed = true, @@ -681,6 +689,7 @@ static struct snd_soc_dai_link tegra_rt5632_dai = { };
static struct snd_soc_card snd_soc_tegra_rt5632 = { + .components = "codec:rt5632", .dai_link = &tegra_rt5632_dai, .num_links = 1, .fully_routed = true, diff --git a/sound/soc/tegra/tegra_asoc_machine.h b/sound/soc/tegra/tegra_asoc_machine.h index 080c1a26073a..fa325bfb2c8a 100644 --- a/sound/soc/tegra/tegra_asoc_machine.h +++ b/sound/soc/tegra/tegra_asoc_machine.h @@ -15,6 +15,7 @@ struct snd_soc_pcm_runtime; struct tegra_asoc_data { unsigned int (*mclk_rate)(unsigned int srate); struct snd_soc_card *card; + const char *components; unsigned int mclk_id; bool hp_jack_gpio_active_low; bool add_common_dapm_widgets; diff --git a/sound/soc/tegra/tegra_wm8903.c b/sound/soc/tegra/tegra_wm8903.c index a3ec1f50bcb8..3f4f582fb02f 100644 --- a/sound/soc/tegra/tegra_wm8903.c +++ b/sound/soc/tegra/tegra_wm8903.c @@ -108,6 +108,7 @@ static struct snd_soc_dai_link tegra_wm8903_dai = { };
static struct snd_soc_card snd_soc_tegra_wm8903 = { + .components = "codec:wm8903", .owner = THIS_MODULE, .dai_link = &tegra_wm8903_dai, .num_links = 1,