提交 75ab9eb6 编写于 作者: K Kuninori Morimoto 提交者: Mark Brown

ASoC: add null_snd_soc_ops and reduce NULL ops check

Double NULL pointer check for ops and ops->func is difficult to read
and might be forget to check it if new func was add.
This patch adds new null_snd_soc_ops and use it if rtd->dai_link didn't
have it to avoid NULL ops, and reduces ops NULL check.
Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: NMark Brown <broonie@kernel.org>
上级 74b33b84
...@@ -614,6 +614,8 @@ struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card, ...@@ -614,6 +614,8 @@ struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
} }
EXPORT_SYMBOL_GPL(snd_soc_get_dai_substream); EXPORT_SYMBOL_GPL(snd_soc_get_dai_substream);
static const struct snd_soc_ops null_snd_soc_ops;
static struct snd_soc_pcm_runtime *soc_new_pcm_runtime( static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
struct snd_soc_card *card, struct snd_soc_dai_link *dai_link) struct snd_soc_card *card, struct snd_soc_dai_link *dai_link)
{ {
...@@ -626,6 +628,9 @@ static struct snd_soc_pcm_runtime *soc_new_pcm_runtime( ...@@ -626,6 +628,9 @@ static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
INIT_LIST_HEAD(&rtd->component_list); INIT_LIST_HEAD(&rtd->component_list);
rtd->card = card; rtd->card = card;
rtd->dai_link = dai_link; rtd->dai_link = dai_link;
if (!rtd->dai_link->ops)
rtd->dai_link->ops = &null_snd_soc_ops;
rtd->codec_dais = kzalloc(sizeof(struct snd_soc_dai *) * rtd->codec_dais = kzalloc(sizeof(struct snd_soc_dai *) *
dai_link->num_codecs, dai_link->num_codecs,
GFP_KERNEL); GFP_KERNEL);
......
...@@ -511,7 +511,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -511,7 +511,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
codec_dai->rx_mask = 0; codec_dai->rx_mask = 0;
} }
if (rtd->dai_link->ops && rtd->dai_link->ops->startup) { if (rtd->dai_link->ops->startup) {
ret = rtd->dai_link->ops->startup(substream); ret = rtd->dai_link->ops->startup(substream);
if (ret < 0) { if (ret < 0) {
pr_err("ASoC: %s startup failed: %d\n", pr_err("ASoC: %s startup failed: %d\n",
...@@ -585,7 +585,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -585,7 +585,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
return 0; return 0;
config_err: config_err:
if (rtd->dai_link->ops && rtd->dai_link->ops->shutdown) if (rtd->dai_link->ops->shutdown)
rtd->dai_link->ops->shutdown(substream); rtd->dai_link->ops->shutdown(substream);
machine_err: machine_err:
...@@ -692,7 +692,7 @@ static int soc_pcm_close(struct snd_pcm_substream *substream) ...@@ -692,7 +692,7 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
codec_dai->driver->ops->shutdown(substream, codec_dai); codec_dai->driver->ops->shutdown(substream, codec_dai);
} }
if (rtd->dai_link->ops && rtd->dai_link->ops->shutdown) if (rtd->dai_link->ops->shutdown)
rtd->dai_link->ops->shutdown(substream); rtd->dai_link->ops->shutdown(substream);
if (platform->driver->ops && platform->driver->ops->close) if (platform->driver->ops && platform->driver->ops->close)
...@@ -751,7 +751,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) ...@@ -751,7 +751,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream)
mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass); mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass);
if (rtd->dai_link->ops && rtd->dai_link->ops->prepare) { if (rtd->dai_link->ops->prepare) {
ret = rtd->dai_link->ops->prepare(substream); ret = rtd->dai_link->ops->prepare(substream);
if (ret < 0) { if (ret < 0) {
dev_err(rtd->card->dev, "ASoC: machine prepare error:" dev_err(rtd->card->dev, "ASoC: machine prepare error:"
...@@ -855,7 +855,7 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -855,7 +855,7 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
int i, ret = 0; int i, ret = 0;
mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass); mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass);
if (rtd->dai_link->ops && rtd->dai_link->ops->hw_params) { if (rtd->dai_link->ops->hw_params) {
ret = rtd->dai_link->ops->hw_params(substream, params); ret = rtd->dai_link->ops->hw_params(substream, params);
if (ret < 0) { if (ret < 0) {
dev_err(rtd->card->dev, "ASoC: machine hw_params" dev_err(rtd->card->dev, "ASoC: machine hw_params"
...@@ -948,7 +948,7 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -948,7 +948,7 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
codec_dai->rate = 0; codec_dai->rate = 0;
} }
if (rtd->dai_link->ops && rtd->dai_link->ops->hw_free) if (rtd->dai_link->ops->hw_free)
rtd->dai_link->ops->hw_free(substream); rtd->dai_link->ops->hw_free(substream);
mutex_unlock(&rtd->pcm_mutex); mutex_unlock(&rtd->pcm_mutex);
...@@ -994,7 +994,7 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) ...@@ -994,7 +994,7 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
} }
/* free any machine hw params */ /* free any machine hw params */
if (rtd->dai_link->ops && rtd->dai_link->ops->hw_free) if (rtd->dai_link->ops->hw_free)
rtd->dai_link->ops->hw_free(substream); rtd->dai_link->ops->hw_free(substream);
/* free any DMA resources */ /* free any DMA resources */
...@@ -1045,7 +1045,7 @@ static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd) ...@@ -1045,7 +1045,7 @@ static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
return ret; return ret;
} }
if (rtd->dai_link->ops && rtd->dai_link->ops->trigger) { if (rtd->dai_link->ops->trigger) {
ret = rtd->dai_link->ops->trigger(substream, cmd); ret = rtd->dai_link->ops->trigger(substream, cmd);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册