]> www.infradead.org Git - users/dwmw2/linux.git/commit
ASoC: rsnd: don't call clk_get_rate() under atomic context
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 6 Aug 2019 03:45:38 +0000 (12:45 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 5 Oct 2019 11:13:34 +0000 (13:13 +0200)
commit912d58f959f1daece3e013c3e118d788c755e1b7
tree83858a9ab2f37e2516e2de1c229f1c6ab1e6925c
parent5da3a9eb815973eb78a3ef74c5755ed44e12c302
ASoC: rsnd: don't call clk_get_rate() under atomic context

[ Upstream commit 06e8f5c842f2dbb232897ba967ea7b422745c271 ]

ADG is using clk_get_rate() under atomic context, thus, we might
have scheduling issue.
To avoid this issue, we need to get/keep clk rate under
non atomic context.

We need to handle ADG as special device at Renesas Sound driver.
From SW point of view, we want to impletent it as
rsnd_mod_ops :: prepare, but it makes code just complicate.

To avoid complicated code/patch, this patch adds new clk_rate[] array,
and keep clk IN rate when rsnd_adg_clk_enable() was called.

Reported-by: Leon Kong <Leon.KONG@cn.bosch.com>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Leon Kong <Leon.KONG@cn.bosch.com>
Link: https://lore.kernel.org/r/87v9vb0xkp.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/sh/rcar/adg.c