mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
ASoC: soc-component: Convert the mark_module to void*
The mark_module of the snd_soc_component is strict snd_pcm_substream type which prevents it to be used by compressed streams. Change the type to void* along with the snd_soc_component_module_get() and snd_soc_component_module_put() to allow the same mark to be used by compressed when it's module_get_upon_open is set to 1. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20210901095255.3617-2-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
2266721938
commit
a739fdc262
@ -220,7 +220,7 @@ struct snd_soc_component {
|
||||
int (*init)(struct snd_soc_component *component);
|
||||
|
||||
/* function mark */
|
||||
struct snd_pcm_substream *mark_module;
|
||||
void *mark_module;
|
||||
struct snd_pcm_substream *mark_open;
|
||||
struct snd_pcm_substream *mark_hw_params;
|
||||
struct snd_pcm_substream *mark_trigger;
|
||||
@ -391,15 +391,13 @@ void snd_soc_component_exit_regmap(struct snd_soc_component *component);
|
||||
#define snd_soc_component_module_get_when_open(component, substream) \
|
||||
snd_soc_component_module_get(component, substream, 1)
|
||||
int snd_soc_component_module_get(struct snd_soc_component *component,
|
||||
struct snd_pcm_substream *substream,
|
||||
int upon_open);
|
||||
void *mark, int upon_open);
|
||||
#define snd_soc_component_module_put_when_remove(component) \
|
||||
snd_soc_component_module_put(component, NULL, 0, 0)
|
||||
#define snd_soc_component_module_put_when_close(component, substream, rollback) \
|
||||
snd_soc_component_module_put(component, substream, 1, rollback)
|
||||
void snd_soc_component_module_put(struct snd_soc_component *component,
|
||||
struct snd_pcm_substream *substream,
|
||||
int upon_open, int rollback);
|
||||
void *mark, int upon_open, int rollback);
|
||||
|
||||
static inline void snd_soc_component_set_drvdata(struct snd_soc_component *c,
|
||||
void *data)
|
||||
|
@ -251,8 +251,7 @@ int snd_soc_component_set_jack(struct snd_soc_component *component,
|
||||
EXPORT_SYMBOL_GPL(snd_soc_component_set_jack);
|
||||
|
||||
int snd_soc_component_module_get(struct snd_soc_component *component,
|
||||
struct snd_pcm_substream *substream,
|
||||
int upon_open)
|
||||
void *mark, int upon_open)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
@ -260,25 +259,24 @@ int snd_soc_component_module_get(struct snd_soc_component *component,
|
||||
!try_module_get(component->dev->driver->owner))
|
||||
ret = -ENODEV;
|
||||
|
||||
/* mark substream if succeeded */
|
||||
/* mark module if succeeded */
|
||||
if (ret == 0)
|
||||
soc_component_mark_push(component, substream, module);
|
||||
soc_component_mark_push(component, mark, module);
|
||||
|
||||
return soc_component_ret(component, ret);
|
||||
}
|
||||
|
||||
void snd_soc_component_module_put(struct snd_soc_component *component,
|
||||
struct snd_pcm_substream *substream,
|
||||
int upon_open, int rollback)
|
||||
void *mark, int upon_open, int rollback)
|
||||
{
|
||||
if (rollback && !soc_component_mark_match(component, substream, module))
|
||||
if (rollback && !soc_component_mark_match(component, mark, module))
|
||||
return;
|
||||
|
||||
if (component->driver->module_get_upon_open == !!upon_open)
|
||||
module_put(component->dev->driver->owner);
|
||||
|
||||
/* remove marked substream */
|
||||
soc_component_mark_pop(component, substream, module);
|
||||
/* remove the mark from module */
|
||||
soc_component_mark_pop(component, mark, module);
|
||||
}
|
||||
|
||||
int snd_soc_component_open(struct snd_soc_component *component,
|
||||
|
Loading…
Reference in New Issue
Block a user