diff options
-rw-r--r-- | sound/soc/sh/Kconfig | 1 | ||||
-rw-r--r-- | sound/soc/sh/rcar/rsrc-card.c | 38 |
2 files changed, 5 insertions, 34 deletions
diff --git a/sound/soc/sh/Kconfig b/sound/soc/sh/Kconfig index c9902a6d6fa0..9311f119feb5 100644 --- a/sound/soc/sh/Kconfig +++ b/sound/soc/sh/Kconfig | |||
@@ -44,6 +44,7 @@ config SND_SOC_RCAR | |||
44 | 44 | ||
45 | config SND_SOC_RSRC_CARD | 45 | config SND_SOC_RSRC_CARD |
46 | tristate "Renesas Sampling Rate Convert Sound Card" | 46 | tristate "Renesas Sampling Rate Convert Sound Card" |
47 | select SND_SIMPLE_CARD_UTILS | ||
47 | help | 48 | help |
48 | This option enables simple sound if you need sampling rate convert | 49 | This option enables simple sound if you need sampling rate convert |
49 | 50 | ||
diff --git a/sound/soc/sh/rcar/rsrc-card.c b/sound/soc/sh/rcar/rsrc-card.c index 1bc7ecfc42a9..984d8fed0dbd 100644 --- a/sound/soc/sh/rcar/rsrc-card.c +++ b/sound/soc/sh/rcar/rsrc-card.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <sound/jack.h> | 20 | #include <sound/jack.h> |
21 | #include <sound/soc.h> | 21 | #include <sound/soc.h> |
22 | #include <sound/soc-dai.h> | 22 | #include <sound/soc-dai.h> |
23 | #include <sound/simple_card_utils.h> | ||
23 | 24 | ||
24 | struct rsrc_card_of_data { | 25 | struct rsrc_card_of_data { |
25 | const char *prefix; | 26 | const char *prefix; |
@@ -159,38 +160,6 @@ static int rsrc_card_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, | |||
159 | return 0; | 160 | return 0; |
160 | } | 161 | } |
161 | 162 | ||
162 | static int rsrc_card_parse_daifmt(struct device_node *node, | ||
163 | struct device_node *codec, | ||
164 | struct rsrc_card_priv *priv, | ||
165 | struct snd_soc_dai_link *dai_link, | ||
166 | unsigned int *retfmt) | ||
167 | { | ||
168 | struct device_node *bitclkmaster = NULL; | ||
169 | struct device_node *framemaster = NULL; | ||
170 | unsigned int daifmt; | ||
171 | |||
172 | daifmt = snd_soc_of_parse_daifmt(node, NULL, | ||
173 | &bitclkmaster, &framemaster); | ||
174 | daifmt &= ~SND_SOC_DAIFMT_MASTER_MASK; | ||
175 | |||
176 | if (!bitclkmaster && !framemaster) | ||
177 | return -EINVAL; | ||
178 | |||
179 | if (codec == bitclkmaster) | ||
180 | daifmt |= (codec == framemaster) ? | ||
181 | SND_SOC_DAIFMT_CBM_CFM : SND_SOC_DAIFMT_CBM_CFS; | ||
182 | else | ||
183 | daifmt |= (codec == framemaster) ? | ||
184 | SND_SOC_DAIFMT_CBS_CFM : SND_SOC_DAIFMT_CBS_CFS; | ||
185 | |||
186 | of_node_put(bitclkmaster); | ||
187 | of_node_put(framemaster); | ||
188 | |||
189 | *retfmt = daifmt; | ||
190 | |||
191 | return 0; | ||
192 | } | ||
193 | |||
194 | static int rsrc_card_parse_links(struct device_node *np, | 163 | static int rsrc_card_parse_links(struct device_node *np, |
195 | struct rsrc_card_priv *priv, | 164 | struct rsrc_card_priv *priv, |
196 | int idx, bool is_fe) | 165 | int idx, bool is_fe) |
@@ -358,6 +327,7 @@ static int rsrc_card_dai_sub_link_of(struct device_node *node, | |||
358 | static int rsrc_card_dai_link_of(struct device_node *node, | 327 | static int rsrc_card_dai_link_of(struct device_node *node, |
359 | struct rsrc_card_priv *priv) | 328 | struct rsrc_card_priv *priv) |
360 | { | 329 | { |
330 | struct device *dev = rsrc_priv_to_dev(priv); | ||
361 | struct snd_soc_dai_link *dai_link; | 331 | struct snd_soc_dai_link *dai_link; |
362 | struct device_node *np; | 332 | struct device_node *np; |
363 | unsigned int daifmt = 0; | 333 | unsigned int daifmt = 0; |
@@ -370,8 +340,8 @@ static int rsrc_card_dai_link_of(struct device_node *node, | |||
370 | dai_link = rsrc_priv_to_link(priv, i); | 340 | dai_link = rsrc_priv_to_link(priv, i); |
371 | 341 | ||
372 | if (strcmp(np->name, "codec") == 0) { | 342 | if (strcmp(np->name, "codec") == 0) { |
373 | ret = rsrc_card_parse_daifmt(node, np, priv, | 343 | ret = asoc_simple_card_parse_daifmt(dev, node, np, |
374 | dai_link, &daifmt); | 344 | NULL, &daifmt); |
375 | if (ret < 0) | 345 | if (ret < 0) |
376 | return ret; | 346 | return ret; |
377 | break; | 347 | break; |