Message ID | 87v9vstd7a.wl-kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: add soc-component.c | expand |
On 2019-07-24 03:51, Kuninori Morimoto wrote:> + > +int snd_soc_component_prepare(struct snd_soc_component *component, > + struct snd_pcm_substream *substream) > +{ > + if (component->driver->ops && > + component->driver->ops->prepare) > + return component->driver->ops->prepare(substream); > + > + return 0; > +} > diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c > index 86d2e6b..a77a14c 100644 > --- a/sound/soc/soc-pcm.c > +++ b/sound/soc/soc-pcm.c > @@ -774,11 +774,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) > for_each_rtdcom(rtd, rtdcom) { > component = rtdcom->component; > > - if (!component->driver->ops || > - !component->driver->ops->prepare) > - continue; > - > - ret = component->driver->ops->prepare(substream); > + snd_soc_component_prepare(component, substream); > if (ret < 0) { > dev_err(component->dev, > "ASoC: platform prepare error: %d\n", ret); > Compared to old code, ret gets ignored here. Guess unintended modification?
Hi Cezary > > @@ -774,11 +774,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) > > for_each_rtdcom(rtd, rtdcom) { > > component = rtdcom->component; > > - if (!component->driver->ops || > > - !component->driver->ops->prepare) > > - continue; > > - > > - ret = component->driver->ops->prepare(substream); > > + snd_soc_component_prepare(component, substream); > > if (ret < 0) { > > dev_err(component->dev, > > "ASoC: platform prepare error: %d\n", ret); > > > > Compared to old code, ret gets ignored here. Guess unintended modification? Thank you for your report. Yes, I have noticed same issue. will be fixed at v2 Thank you for your help !! Best regards --- Kuninori Morimoto
diff --git a/include/sound/soc-component.h b/include/sound/soc-component.h index 6357c0a..9f31d60 100644 --- a/include/sound/soc-component.h +++ b/include/sound/soc-component.h @@ -327,5 +327,7 @@ int snd_soc_component_open(struct snd_soc_component *component, struct snd_pcm_substream *substream); int snd_soc_component_close(struct snd_soc_component *component, struct snd_pcm_substream *substream); +int snd_soc_component_prepare(struct snd_soc_component *component, + struct snd_pcm_substream *substream); #endif /* __SOC_COMPONENT_H */ diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c index d9191df..34838d9 100644 --- a/sound/soc/soc-component.c +++ b/sound/soc/soc-component.c @@ -305,3 +305,13 @@ int snd_soc_component_close(struct snd_soc_component *component, return 0; } + +int snd_soc_component_prepare(struct snd_soc_component *component, + struct snd_pcm_substream *substream) +{ + if (component->driver->ops && + component->driver->ops->prepare) + return component->driver->ops->prepare(substream); + + return 0; +} diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 86d2e6b..a77a14c 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -774,11 +774,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) for_each_rtdcom(rtd, rtdcom) { component = rtdcom->component; - if (!component->driver->ops || - !component->driver->ops->prepare) - continue; - - ret = component->driver->ops->prepare(substream); + snd_soc_component_prepare(component, substream); if (ret < 0) { dev_err(component->dev, "ASoC: platform prepare error: %d\n", ret);