ASoC: simple-card-utils: add asoc_simple_card_init_dai()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 9 Aug 2016 05:48:30 +0000 (05:48 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 9 Aug 2016 11:43:55 +0000 (12:43 +0100)
simple-card is supporting clock/tdm slot initialization.
This patch makes this method simple style standard.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/simple_card_utils.h
sound/soc/generic/simple-card-utils.c

index 62b392695d2d630531b3947e7f4c3b0b3928d85c..13168e029232f2251d2a390aa14cd8e0c64ddce6 100644 (file)
@@ -58,4 +58,6 @@ int asoc_simple_card_parse_dai(struct device_node *node,
                                  const char *cells_name,
                                  int *is_single_links);
 
+int asoc_simple_card_init_dai(struct snd_soc_dai *dai,
+                             struct asoc_simple_dai *simple_dai);
 #endif /* __SIMPLE_CARD_CORE_H */
index 27e6d038a9027104a12c01be878fc6aff4a94f8b..33abe1f7014e898f5e689d3536b462d91efcd9b6 100644 (file)
@@ -164,6 +164,35 @@ int asoc_simple_card_parse_dai(struct device_node *node,
 }
 EXPORT_SYMBOL_GPL(asoc_simple_card_parse_dai);
 
+int asoc_simple_card_init_dai(struct snd_soc_dai *dai,
+                             struct asoc_simple_dai *simple_dai)
+{
+       int ret;
+
+       if (simple_dai->sysclk) {
+               ret = snd_soc_dai_set_sysclk(dai, 0, simple_dai->sysclk, 0);
+               if (ret && ret != -ENOTSUPP) {
+                       dev_err(dai->dev, "simple-card: set_sysclk error\n");
+                       return ret;
+               }
+       }
+
+       if (simple_dai->slots) {
+               ret = snd_soc_dai_set_tdm_slot(dai,
+                                              simple_dai->tx_slot_mask,
+                                              simple_dai->rx_slot_mask,
+                                              simple_dai->slots,
+                                              simple_dai->slot_width);
+               if (ret && ret != -ENOTSUPP) {
+                       dev_err(dai->dev, "simple-card: set_tdm_slot error\n");
+                       return ret;
+               }
+       }
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(asoc_simple_card_init_dai);
+
 /* Module information */
 MODULE_AUTHOR("Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>");
 MODULE_DESCRIPTION("ALSA SoC Simple Card Utils");