*/
#include "rsnd.h"
+#define SRC_NAME "src"
+
struct rsnd_src {
struct rsnd_src_platform_info *info; /* rcar_snd.h */
struct rsnd_mod mod;
return 0;
}
-static struct rsnd_mod_ops rsnd_src_non_ops = {
- .name = "src (non)",
-};
-
/*
* Gen1 functions
*/
return 0;
}
+static int rsnd_src_probe_gen1(struct rsnd_mod *mod,
+ struct rsnd_dai *rdai)
+{
+ struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
+ struct device *dev = rsnd_priv_to_dev(priv);
+
+ dev_dbg(dev, "%s (Gen1) is probed\n", rsnd_mod_name(mod));
+
+ return 0;
+}
+
static int rsnd_src_init_gen1(struct rsnd_mod *mod,
struct rsnd_dai *rdai)
{
}
static struct rsnd_mod_ops rsnd_src_gen1_ops = {
- .name = "sru (gen1)",
+ .name = SRC_NAME,
+ .probe = rsnd_src_probe_gen1,
.init = rsnd_src_init_gen1,
.quit = rsnd_src_quit,
.start = rsnd_src_start_gen1,
if (ret < 0)
dev_err(dev, "SRC DMA failed\n");
+ dev_dbg(dev, "%s (Gen2) is probed\n", rsnd_mod_name(mod));
+
return ret;
}
}
static struct rsnd_mod_ops rsnd_src_gen2_ops = {
- .name = "src (gen2)",
+ .name = SRC_NAME,
.probe = rsnd_src_probe_gen2,
.remove = rsnd_src_remove_gen2,
.init = rsnd_src_init_gen2,
nr = of_get_child_count(src_node);
if (!nr)
- return;
+ goto rsnd_of_parse_src_end;
src_info = devm_kzalloc(dev,
sizeof(struct rsnd_src_platform_info) * nr,
GFP_KERNEL);
if (!src_info) {
dev_err(dev, "src info allocation error\n");
- return;
+ goto rsnd_of_parse_src_end;
}
info->src_info = src_info;
info->src_info_nr = nr;
+
+rsnd_of_parse_src_end:
+ of_node_put(src_node);
}
int rsnd_src_probe(struct platform_device *pdev,
char name[RSND_SRC_NAME_SIZE];
int i, nr;
+ ops = NULL;
+ if (rsnd_is_gen1(priv))
+ ops = &rsnd_src_gen1_ops;
+ if (rsnd_is_gen2(priv))
+ ops = &rsnd_src_gen2_ops;
+ if (!ops) {
+ dev_err(dev, "unknown Generation\n");
+ return -EIO;
+ }
+
rsnd_of_parse_src(pdev, of_data, priv);
/*
priv->src = src;
for_each_rsnd_src(src, priv, i) {
- snprintf(name, RSND_SRC_NAME_SIZE, "src.%d", i);
+ snprintf(name, RSND_SRC_NAME_SIZE, "%s.%d",
+ SRC_NAME, i);
clk = devm_clk_get(dev, name);
if (IS_ERR(clk))
src->info = &info->src_info[i];
src->clk = clk;
- ops = &rsnd_src_non_ops;
- if (rsnd_is_gen1(priv))
- ops = &rsnd_src_gen1_ops;
- if (rsnd_is_gen2(priv))
- ops = &rsnd_src_gen2_ops;
-
rsnd_mod_init(priv, &src->mod, ops, RSND_MOD_SRC, i);
dev_dbg(dev, "SRC%d probed\n", i);