| From 6b2d2c734c95551123c40088d09e10524a7b1170 Mon Sep 17 00:00:00 2001 |
| From: Xiubo Li <Li.Xiubo@freescale.com> |
| Date: Fri, 24 Jan 2014 15:43:01 +0800 |
| Subject: ASoC: simple-card: simplify the daifmt code |
| |
| In the asoc_simple_card_parse_of() will parse the device node's CPU/CODEC |
| DAI commone fmts, and then in asoc_simple_card_sub_parse_of() will parse |
| the CPU/CODEC DAI's sub-node fmts, so we can combine the info->daifmt and |
| info->set.fmt in asoc_simple_card_sub_parse_of() not while just before |
| _set_fmt(). |
| |
| And this will be more easy to add new functions, such as supporting |
| _set_tdm_slot(), etc. |
| |
| Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> |
| Signed-off-by: Mark Brown <broonie@linaro.org> |
| (cherry picked from commit 30d0341e7da0c012f64fb290dd1153360fb49a8d) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| sound/soc/generic/simple-card.c | 20 +++++++++----------- |
| 1 file changed, 9 insertions(+), 11 deletions(-) |
| |
| diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c |
| index 6366f3fa6a37..65833feb995f 100644 |
| --- a/sound/soc/generic/simple-card.c |
| +++ b/sound/soc/generic/simple-card.c |
| @@ -24,15 +24,12 @@ struct simple_card_data { |
| }; |
| |
| static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, |
| - struct asoc_simple_dai *set, |
| - unsigned int daifmt) |
| + struct asoc_simple_dai *set) |
| { |
| int ret; |
| |
| - daifmt |= set->fmt; |
| - |
| - if (daifmt) { |
| - ret = snd_soc_dai_set_fmt(dai, daifmt); |
| + if (set->fmt) { |
| + ret = snd_soc_dai_set_fmt(dai, set->fmt); |
| if (ret && ret != -ENOTSUPP) { |
| dev_err(dai->dev, "simple-card: set_fmt error\n"); |
| goto err; |
| @@ -59,14 +56,13 @@ static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd) |
| snd_soc_card_get_drvdata(rtd->card); |
| struct snd_soc_dai *codec = rtd->codec_dai; |
| struct snd_soc_dai *cpu = rtd->cpu_dai; |
| - unsigned int daifmt = priv->daifmt; |
| int ret; |
| |
| - ret = __asoc_simple_card_dai_init(codec, &priv->codec_dai, daifmt); |
| + ret = __asoc_simple_card_dai_init(codec, &priv->codec_dai); |
| if (ret < 0) |
| return ret; |
| |
| - ret = __asoc_simple_card_dai_init(cpu, &priv->cpu_dai, daifmt); |
| + ret = __asoc_simple_card_dai_init(cpu, &priv->cpu_dai); |
| if (ret < 0) |
| return ret; |
| |
| @@ -75,6 +71,7 @@ static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd) |
| |
| static int |
| asoc_simple_card_sub_parse_of(struct device_node *np, |
| + unsigned int daifmt, |
| struct asoc_simple_dai *dai, |
| const struct device_node **p_node, |
| const char **name) |
| @@ -103,6 +100,7 @@ asoc_simple_card_sub_parse_of(struct device_node *np, |
| * and specific "format" if it has |
| */ |
| dai->fmt = snd_soc_of_parse_daifmt(np, NULL); |
| + dai->fmt |= daifmt; |
| |
| /* |
| * dai->sysclk come from |
| @@ -161,7 +159,7 @@ static int asoc_simple_card_parse_of(struct device_node *node, |
| ret = -EINVAL; |
| np = of_get_child_by_name(node, "simple-audio-card,cpu"); |
| if (np) |
| - ret = asoc_simple_card_sub_parse_of(np, |
| + ret = asoc_simple_card_sub_parse_of(np, priv->daifmt, |
| &priv->cpu_dai, |
| &dai_link->cpu_of_node, |
| &dai_link->cpu_dai_name); |
| @@ -172,7 +170,7 @@ static int asoc_simple_card_parse_of(struct device_node *node, |
| ret = -EINVAL; |
| np = of_get_child_by_name(node, "simple-audio-card,codec"); |
| if (np) |
| - ret = asoc_simple_card_sub_parse_of(np, |
| + ret = asoc_simple_card_sub_parse_of(np, priv->daifmt, |
| &priv->codec_dai, |
| &dai_link->codec_of_node, |
| &dai_link->codec_dai_name); |
| -- |
| 2.1.2 |
| |