aboutsummaryrefslogtreecommitdiff
path: root/sound/soc/sh/rcar/rsrc-card.c
diff options
context:
space:
mode:
authorKuninori Morimoto2015-12-17 02:48:23 +0000
committerMark Brown2015-12-17 12:14:31 +0000
commit6dad9758a5e3e75de91871a636572d64806b240f (patch)
treec5260bb97f696de9c9749c1841b2f9599fb09017 /sound/soc/sh/rcar/rsrc-card.c
parent2b235a3da5560d65df6865ea436389e55a0f41ad (diff)
ASoC: rsrc-card: enable to use tdm_slot on DT
Renesas sound driver will use tdm slot on TDM Multi Mode support. This patch enables tdm slot on rsrc card driver on DT. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sh/rcar/rsrc-card.c')
-rw-r--r--sound/soc/sh/rcar/rsrc-card.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/sound/soc/sh/rcar/rsrc-card.c b/sound/soc/sh/rcar/rsrc-card.c
index a3ec13f6271e..3c308e2d696e 100644
--- a/sound/soc/sh/rcar/rsrc-card.c
+++ b/sound/soc/sh/rcar/rsrc-card.c
@@ -50,6 +50,10 @@ MODULE_DEVICE_TABLE(of, rsrc_card_of_match);
struct rsrc_card_dai {
unsigned int fmt;
unsigned int sysclk;
+ unsigned int tx_slot_mask;
+ unsigned int rx_slot_mask;
+ int slots;
+ int slot_width;
struct clk *clk;
char dai_name[DAI_NAME_NUM];
};
@@ -126,6 +130,18 @@ static int rsrc_card_dai_init(struct snd_soc_pcm_runtime *rtd)
}
}
+ if (dai_props->slots) {
+ ret = snd_soc_dai_set_tdm_slot(dai,
+ dai_props->tx_slot_mask,
+ dai_props->rx_slot_mask,
+ dai_props->slots,
+ dai_props->slot_width);
+ if (ret && ret != -ENOTSUPP) {
+ dev_err(dai->dev, "set_tdm_slot error\n");
+ goto err;
+ }
+ }
+
ret = 0;
err:
@@ -198,6 +214,15 @@ static int rsrc_card_parse_links(struct device_node *np,
if (ret)
return ret;
+ /* Parse TDM slot */
+ ret = snd_soc_of_parse_tdm_slot(np,
+ &dai_props->tx_slot_mask,
+ &dai_props->rx_slot_mask,
+ &dai_props->slots,
+ &dai_props->slot_width);
+ if (ret)
+ return ret;
+
if (is_fe) {
/* BE is dummy */
dai_link->codec_of_node = NULL;