ASoC: soc-pcm.c: add soc_pcm_ret()
Current soc-pcm.c has many similar code for error case. This patch adds soc_pcm_ret() and share the code and error message. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87r10y4dzb.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
10d5d8cbf6
commit
041107289c
|
@ -27,6 +27,28 @@
|
||||||
#include <sound/soc-link.h>
|
#include <sound/soc-link.h>
|
||||||
#include <sound/initval.h>
|
#include <sound/initval.h>
|
||||||
|
|
||||||
|
#define soc_pcm_ret(rtd, ret) _soc_pcm_ret(rtd, __func__, ret)
|
||||||
|
static inline int _soc_pcm_ret(struct snd_soc_pcm_runtime *rtd,
|
||||||
|
const char *func, int ret)
|
||||||
|
{
|
||||||
|
/* Positive, Zero values are not errors */
|
||||||
|
if (ret >= 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/* Negative values might be errors */
|
||||||
|
switch (ret) {
|
||||||
|
case -EPROBE_DEFER:
|
||||||
|
case -ENOTSUPP:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_err(rtd->dev,
|
||||||
|
"ASoC: error at %s on %s: %d\n",
|
||||||
|
func, rtd->dai_link->name, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void snd_soc_dpcm_mutex_lock(struct snd_soc_pcm_runtime *rtd)
|
static inline void snd_soc_dpcm_mutex_lock(struct snd_soc_pcm_runtime *rtd)
|
||||||
{
|
{
|
||||||
mutex_lock_nested(&rtd->card->pcm_mutex, rtd->card->pcm_subclass);
|
mutex_lock_nested(&rtd->card->pcm_mutex, rtd->card->pcm_subclass);
|
||||||
|
@ -832,12 +854,10 @@ dynamic:
|
||||||
snd_soc_runtime_activate(rtd, substream->stream);
|
snd_soc_runtime_activate(rtd, substream->stream);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
err:
|
err:
|
||||||
if (ret < 0) {
|
if (ret < 0)
|
||||||
soc_pcm_clean(rtd, substream, 1);
|
soc_pcm_clean(rtd, substream, 1);
|
||||||
dev_err(rtd->dev, "%s() failed (%d)", __func__, ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return soc_pcm_ret(rtd, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PCM open ops for non-DPCM streams */
|
/* PCM open ops for non-DPCM streams */
|
||||||
|
@ -891,10 +911,7 @@ static int __soc_pcm_prepare(struct snd_soc_pcm_runtime *rtd,
|
||||||
snd_soc_dai_digital_mute(dai, 0, substream->stream);
|
snd_soc_dai_digital_mute(dai, 0, substream->stream);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (ret < 0)
|
return soc_pcm_ret(rtd, ret);
|
||||||
dev_err(rtd->dev, "ASoC: %s() failed (%d)\n", __func__, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PCM prepare ops for non-DPCM streams */
|
/* PCM prepare ops for non-DPCM streams */
|
||||||
|
@ -1060,12 +1077,10 @@ static int __soc_pcm_hw_params(struct snd_soc_pcm_runtime *rtd,
|
||||||
|
|
||||||
ret = snd_soc_pcm_component_hw_params(substream, params);
|
ret = snd_soc_pcm_component_hw_params(substream, params);
|
||||||
out:
|
out:
|
||||||
if (ret < 0) {
|
if (ret < 0)
|
||||||
soc_pcm_hw_clean(rtd, substream, 1);
|
soc_pcm_hw_clean(rtd, substream, 1);
|
||||||
dev_err(rtd->dev, "ASoC: %s() failed (%d)\n", __func__, ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return soc_pcm_ret(rtd, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hw_params PCM ops for non-DPCM streams */
|
/* hw_params PCM ops for non-DPCM streams */
|
||||||
|
@ -1627,10 +1642,7 @@ int dpcm_be_dai_startup(struct snd_soc_pcm_runtime *fe, int stream)
|
||||||
unwind:
|
unwind:
|
||||||
dpcm_be_dai_startup_rollback(fe, stream, dpcm);
|
dpcm_be_dai_startup_rollback(fe, stream, dpcm);
|
||||||
|
|
||||||
dev_err(fe->dev, "ASoC: %s() failed at %s (%d)\n",
|
return soc_pcm_ret(fe, err);
|
||||||
__func__, be->dai_link->name, err);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dpcm_runtime_setup_fe(struct snd_pcm_substream *substream)
|
static void dpcm_runtime_setup_fe(struct snd_pcm_substream *substream)
|
||||||
|
@ -1830,10 +1842,7 @@ static int dpcm_apply_symmetry(struct snd_pcm_substream *fe_substream,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
error:
|
error:
|
||||||
if (err < 0)
|
return soc_pcm_ret(fe, err);
|
||||||
dev_err(fe->dev, "ASoC: %s failed (%d)\n", __func__, err);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)
|
static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)
|
||||||
|
@ -1870,10 +1879,7 @@ unwind:
|
||||||
be_err:
|
be_err:
|
||||||
dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
|
dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
|
||||||
|
|
||||||
if (ret < 0)
|
return soc_pcm_ret(fe, ret);
|
||||||
dev_err(fe->dev, "%s() failed (%d)\n", __func__, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dpcm_fe_dai_shutdown(struct snd_pcm_substream *substream)
|
static int dpcm_fe_dai_shutdown(struct snd_pcm_substream *substream)
|
||||||
|
@ -2072,10 +2078,7 @@ out:
|
||||||
dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
|
dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
|
||||||
snd_soc_dpcm_mutex_unlock(fe);
|
snd_soc_dpcm_mutex_unlock(fe);
|
||||||
|
|
||||||
if (ret < 0)
|
return soc_pcm_ret(fe, ret);
|
||||||
dev_err(fe->dev, "ASoC: %s failed (%d)\n", __func__, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
|
int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
|
||||||
|
@ -2244,10 +2247,7 @@ next:
|
||||||
if (ret)
|
if (ret)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ret < 0)
|
return soc_pcm_ret(fe, ret);
|
||||||
dev_err(fe->dev, "ASoC: %s() failed at %s (%d)\n",
|
|
||||||
__func__, be->dai_link->name, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(dpcm_be_dai_trigger);
|
EXPORT_SYMBOL_GPL(dpcm_be_dai_trigger);
|
||||||
|
|
||||||
|
@ -2418,10 +2418,7 @@ int dpcm_be_dai_prepare(struct snd_soc_pcm_runtime *fe, int stream)
|
||||||
be->dpcm[stream].state = SND_SOC_DPCM_STATE_PREPARE;
|
be->dpcm[stream].state = SND_SOC_DPCM_STATE_PREPARE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret < 0)
|
return soc_pcm_ret(fe, ret);
|
||||||
dev_err(fe->dev, "ASoC: %s() failed (%d)\n", __func__, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dpcm_fe_dai_prepare(struct snd_pcm_substream *substream)
|
static int dpcm_fe_dai_prepare(struct snd_pcm_substream *substream)
|
||||||
|
@ -2458,10 +2455,7 @@ out:
|
||||||
dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
|
dpcm_set_fe_update_state(fe, stream, SND_SOC_DPCM_UPDATE_NO);
|
||||||
snd_soc_dpcm_mutex_unlock(fe);
|
snd_soc_dpcm_mutex_unlock(fe);
|
||||||
|
|
||||||
if (ret < 0)
|
return soc_pcm_ret(fe, ret);
|
||||||
dev_err(fe->dev, "ASoC: %s() failed (%d)\n", __func__, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dpcm_run_update_shutdown(struct snd_soc_pcm_runtime *fe, int stream)
|
static int dpcm_run_update_shutdown(struct snd_soc_pcm_runtime *fe, int stream)
|
||||||
|
@ -2494,10 +2488,7 @@ static int dpcm_run_update_shutdown(struct snd_soc_pcm_runtime *fe, int stream)
|
||||||
/* run the stream event for each BE */
|
/* run the stream event for each BE */
|
||||||
dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_NOP);
|
dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_NOP);
|
||||||
|
|
||||||
if (err < 0)
|
return soc_pcm_ret(fe, err);
|
||||||
dev_err(fe->dev, "ASoC: %s() failed (%d)\n", __func__, err);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dpcm_run_update_startup(struct snd_soc_pcm_runtime *fe, int stream)
|
static int dpcm_run_update_startup(struct snd_soc_pcm_runtime *fe, int stream)
|
||||||
|
@ -2587,10 +2578,7 @@ disconnect:
|
||||||
dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
|
dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret < 0)
|
return soc_pcm_ret(fe, ret);
|
||||||
dev_err(fe->dev, "ASoC: %s() failed (%d)\n", __func__, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int soc_dpcm_fe_runtime_update(struct snd_soc_pcm_runtime *fe, int new)
|
static int soc_dpcm_fe_runtime_update(struct snd_soc_pcm_runtime *fe, int new)
|
||||||
|
|
Loading…
Reference in New Issue