ASoC: rsnd: fix sound route path when using SRC6/SRC9
This patch fixes the problem that the missing value of the route path setting table and incorrect values are set in the CMD_ROUTE_SELECT register. Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> [Kuninori: shared data on MIX and non-MIX case] Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
4b30eebfc3
Коммит
a1c2ff5372
|
@ -31,23 +31,24 @@ static int rsnd_cmd_init(struct rsnd_mod *mod,
|
|||
struct rsnd_mod *mix = rsnd_io_to_mod_mix(io);
|
||||
struct device *dev = rsnd_priv_to_dev(priv);
|
||||
u32 data;
|
||||
u32 path[] = {
|
||||
[1] = 1 << 0,
|
||||
[5] = 1 << 8,
|
||||
[6] = 1 << 12,
|
||||
[9] = 1 << 15,
|
||||
};
|
||||
|
||||
if (!mix && !dvc)
|
||||
return 0;
|
||||
|
||||
if (ARRAY_SIZE(path) < rsnd_mod_id(mod) + 1)
|
||||
return -ENXIO;
|
||||
|
||||
if (mix) {
|
||||
struct rsnd_dai *rdai;
|
||||
struct rsnd_mod *src;
|
||||
struct rsnd_dai_stream *tio;
|
||||
int i;
|
||||
u32 path[] = {
|
||||
[0] = 0,
|
||||
[1] = 1 << 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0,
|
||||
[5] = 1 << 8
|
||||
};
|
||||
|
||||
/*
|
||||
* it is assuming that integrater is well understanding about
|
||||
|
@ -70,16 +71,19 @@ static int rsnd_cmd_init(struct rsnd_mod *mod,
|
|||
} else {
|
||||
struct rsnd_mod *src = rsnd_io_to_mod_src(io);
|
||||
|
||||
u32 path[] = {
|
||||
[0] = 0x30000,
|
||||
[1] = 0x30001,
|
||||
[2] = 0x40000,
|
||||
[3] = 0x10000,
|
||||
[4] = 0x20000,
|
||||
[5] = 0x40100
|
||||
u8 cmd_case[] = {
|
||||
[0] = 0x3,
|
||||
[1] = 0x3,
|
||||
[2] = 0x4,
|
||||
[3] = 0x1,
|
||||
[4] = 0x2,
|
||||
[5] = 0x4,
|
||||
[6] = 0x1,
|
||||
[9] = 0x2,
|
||||
};
|
||||
|
||||
data = path[rsnd_mod_id(src)];
|
||||
data = path[rsnd_mod_id(src)] |
|
||||
cmd_case[rsnd_mod_id(src)] << 16;
|
||||
}
|
||||
|
||||
dev_dbg(dev, "ctu/mix path = 0x%08x", data);
|
||||
|
|
Загрузка…
Ссылка в новой задаче