summaryrefslogtreecommitdiffstats
path: root/sound/soc/sh/rcar/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/sh/rcar/core.c')
-rw-r--r--sound/soc/sh/rcar/core.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 7f68b33dcbbb..8c3707a68603 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -138,6 +138,17 @@ char *rsnd_mod_name(struct rsnd_mod *mod)
return mod->ops->name;
}
+char *rsnd_mod_dma_name(struct rsnd_mod *mod)
+{
+ if (!mod || !mod->ops)
+ return "unknown";
+
+ if (!mod->ops->dma_name)
+ return mod->ops->name;
+
+ return mod->ops->dma_name(mod);
+}
+
void rsnd_mod_init(struct rsnd_priv *priv,
struct rsnd_mod *mod,
struct rsnd_mod_ops *ops,
@@ -261,7 +272,7 @@ static int _rsnd_dma_of_name(char *dma_name, struct rsnd_mod *mod)
{
if (mod)
return snprintf(dma_name, DMA_NAME_SIZE / 2, "%s%d",
- rsnd_mod_name(mod), rsnd_mod_id(mod));
+ rsnd_mod_dma_name(mod), rsnd_mod_id(mod));
else
return snprintf(dma_name, DMA_NAME_SIZE / 2, "mem");
@@ -343,11 +354,8 @@ int rsnd_dma_init(struct rsnd_priv *priv, struct rsnd_dma *dma,
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
- if (dev->of_node)
- rsnd_dma_of_name(dma, is_play, dma_name);
- else
- snprintf(dma_name, DMA_NAME_SIZE,
- is_play ? "tx" : "rx");
+ rsnd_dma_of_name(dma, is_play, dma_name);
+ rsnd_gen_dma_addr(priv, dma, &cfg, is_play, id);
dev_dbg(dev, "dma name : %s\n", dma_name);
@@ -359,8 +367,6 @@ int rsnd_dma_init(struct rsnd_priv *priv, struct rsnd_dma *dma,
return -EIO;
}
- rsnd_gen_dma_addr(priv, dma, &cfg, is_play, id);
-
ret = dmaengine_slave_config(dma->chan, &cfg);
if (ret < 0)
goto rsnd_dma_init_err;