Commit 5176ee64 authored by Mark Brown's avatar Mark Brown

ASoC: soc-pcm.c: random cleanup

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

These are not related, but random cleanup patches for soc-pcm.c
parents 4ec8179c 6932b20d
...@@ -27,6 +27,28 @@ ...@@ -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 @@ static int __soc_pcm_open(struct snd_soc_pcm_runtime *rtd, ...@@ -832,12 +854,10 @@ static int __soc_pcm_open(struct snd_soc_pcm_runtime *rtd,
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 */
...@@ -852,16 +872,6 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -852,16 +872,6 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
return ret; return ret;
} }
static void codec2codec_close_delayed_work(struct snd_soc_pcm_runtime *rtd)
{
/*
* Currently nothing to do for c2c links
* Since c2c links are internal nodes in the DAPM graph and
* don't interface with the outside world or application layer
* we don't have to do any special handling on close.
*/
}
/* /*
* Called by ALSA when the PCM substream is prepared, can set format, sample * Called by ALSA when the PCM substream is prepared, can set format, sample
* rate, etc. This function is non atomic and can be called multiple times, * rate, etc. This function is non atomic and can be called multiple times,
...@@ -901,10 +911,7 @@ static int __soc_pcm_prepare(struct snd_soc_pcm_runtime *rtd, ...@@ -901,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 */
...@@ -1070,12 +1077,10 @@ static int __soc_pcm_hw_params(struct snd_soc_pcm_runtime *rtd, ...@@ -1070,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 */
...@@ -1453,6 +1458,10 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream, ...@@ -1453,6 +1458,10 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
struct snd_soc_dapm_widget *widget; struct snd_soc_dapm_widget *widget;
int i, new = 0, err; int i, new = 0, err;
/* don't connect if FE is not running */
if (!fe->dpcm[stream].runtime && !fe->fe_compr)
return new;
/* Create any new FE <--> BE connections */ /* Create any new FE <--> BE connections */
for_each_dapm_widgets(list, i, widget) { for_each_dapm_widgets(list, i, widget) {
...@@ -1477,10 +1486,6 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream, ...@@ -1477,10 +1486,6 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
continue; continue;
} }
/* don't connect if FE is not running */
if (!fe->dpcm[stream].runtime && !fe->fe_compr)
continue;
/* /*
* Filter for systems with 'component_chaining' enabled. * Filter for systems with 'component_chaining' enabled.
* This helps to avoid unnecessary re-configuration of an * This helps to avoid unnecessary re-configuration of an
...@@ -1637,10 +1642,7 @@ int dpcm_be_dai_startup(struct snd_soc_pcm_runtime *fe, int stream) ...@@ -1637,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)
...@@ -1840,10 +1842,7 @@ static int dpcm_apply_symmetry(struct snd_pcm_substream *fe_substream, ...@@ -1840,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)
...@@ -1880,10 +1879,7 @@ static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream) ...@@ -1880,10 +1879,7 @@ static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)
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)
...@@ -2082,10 +2078,7 @@ static int dpcm_fe_dai_hw_params(struct snd_pcm_substream *substream, ...@@ -2082,10 +2078,7 @@ static int dpcm_fe_dai_hw_params(struct snd_pcm_substream *substream,
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,
...@@ -2254,10 +2247,7 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream, ...@@ -2254,10 +2247,7 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
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);
...@@ -2428,10 +2418,7 @@ int dpcm_be_dai_prepare(struct snd_soc_pcm_runtime *fe, int stream) ...@@ -2428,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)
...@@ -2468,10 +2455,7 @@ static int dpcm_fe_dai_prepare(struct snd_pcm_substream *substream) ...@@ -2468,10 +2455,7 @@ static int dpcm_fe_dai_prepare(struct snd_pcm_substream *substream)
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)
...@@ -2504,10 +2488,7 @@ static int dpcm_run_update_shutdown(struct snd_soc_pcm_runtime *fe, int stream) ...@@ -2504,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)
...@@ -2597,10 +2578,7 @@ static int dpcm_run_update_startup(struct snd_soc_pcm_runtime *fe, int stream) ...@@ -2597,10 +2578,7 @@ static int dpcm_run_update_startup(struct snd_soc_pcm_runtime *fe, int stream)
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)
...@@ -2899,9 +2877,13 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) ...@@ -2899,9 +2877,13 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
return ret; return ret;
/* DAPM dai link stream work */ /* DAPM dai link stream work */
if (rtd->dai_link->params) /*
rtd->close_delayed_work_func = codec2codec_close_delayed_work; * Currently nothing to do for c2c links
else * Since c2c links are internal nodes in the DAPM graph and
* don't interface with the outside world or application layer
* we don't have to do any special handling on close.
*/
if (!rtd->dai_link->params)
rtd->close_delayed_work_func = snd_soc_close_delayed_work; rtd->close_delayed_work_func = snd_soc_close_delayed_work;
rtd->pcm = pcm; rtd->pcm = pcm;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment