mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
ASoC: soc-dapm: Add helper for comparing widget name
Some drivers use one event callback for multiple widgets but still need to perform a bit different actions based on actual widget. This is done by comparing widget name, however drivers tend to miss possible name prefix. Add a helper to solve common mistakes. Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20231003155710.821315-2-krzysztof.kozlowski@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
1426b9ba7c
commit
76aca10ccb
@ -469,6 +469,7 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card);
|
|||||||
|
|
||||||
int snd_soc_dapm_update_dai(struct snd_pcm_substream *substream,
|
int snd_soc_dapm_update_dai(struct snd_pcm_substream *substream,
|
||||||
struct snd_pcm_hw_params *params, struct snd_soc_dai *dai);
|
struct snd_pcm_hw_params *params, struct snd_soc_dai *dai);
|
||||||
|
int snd_soc_dapm_widget_name_cmp(struct snd_soc_dapm_widget *widget, const char *s);
|
||||||
|
|
||||||
/* dapm path setup */
|
/* dapm path setup */
|
||||||
int snd_soc_dapm_new_widgets(struct snd_soc_card *card);
|
int snd_soc_dapm_new_widgets(struct snd_soc_card *card);
|
||||||
|
@ -242,6 +242,7 @@ int snd_soc_component_notify_control(struct snd_soc_component *component,
|
|||||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||||
struct snd_kcontrol *kctl;
|
struct snd_kcontrol *kctl;
|
||||||
|
|
||||||
|
/* When updating, change also snd_soc_dapm_widget_name_cmp() */
|
||||||
if (component->name_prefix)
|
if (component->name_prefix)
|
||||||
snprintf(name, ARRAY_SIZE(name), "%s %s", component->name_prefix, ctl);
|
snprintf(name, ARRAY_SIZE(name), "%s %s", component->name_prefix, ctl);
|
||||||
else
|
else
|
||||||
|
@ -2728,6 +2728,18 @@ int snd_soc_dapm_update_dai(struct snd_pcm_substream *substream,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_soc_dapm_update_dai);
|
EXPORT_SYMBOL_GPL(snd_soc_dapm_update_dai);
|
||||||
|
|
||||||
|
int snd_soc_dapm_widget_name_cmp(struct snd_soc_dapm_widget *widget, const char *s)
|
||||||
|
{
|
||||||
|
struct snd_soc_component *component = snd_soc_dapm_to_component(widget->dapm);
|
||||||
|
const char *wname = widget->name;
|
||||||
|
|
||||||
|
if (component->name_prefix)
|
||||||
|
wname += strlen(component->name_prefix) + 1; /* plus space */
|
||||||
|
|
||||||
|
return strcmp(wname, s);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(snd_soc_dapm_widget_name_cmp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dapm_update_widget_flags() - Re-compute widget sink and source flags
|
* dapm_update_widget_flags() - Re-compute widget sink and source flags
|
||||||
* @w: The widget for which to update the flags
|
* @w: The widget for which to update the flags
|
||||||
|
Loading…
Reference in New Issue
Block a user