Commit 1e30f642 authored by Sameer Pujar's avatar Sameer Pujar Committed by Mark Brown

ASoC: simple-card-utils: Fix device module clock

If "clocks = <&xxx>" is specified from the CPU or Codec component
device node, the clock is not getting enabled. Thus audio playback
or capture fails.

Fix this by populating "simple_dai->clk" field when clocks property
is specified from device node as well. Also tidy up by re-organising
conditional statements of parsing logic.

Fixes: bb6fc620 ("ASoC: simple-card-utils: add asoc_simple_card_parse_clk()")
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/1612939421-19900-2-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent b165457c
...@@ -172,16 +172,15 @@ int asoc_simple_parse_clk(struct device *dev, ...@@ -172,16 +172,15 @@ int asoc_simple_parse_clk(struct device *dev,
* or device's module clock. * or device's module clock.
*/ */
clk = devm_get_clk_from_child(dev, node, NULL); clk = devm_get_clk_from_child(dev, node, NULL);
if (!IS_ERR(clk)) { if (IS_ERR(clk))
simple_dai->sysclk = clk_get_rate(clk); clk = devm_get_clk_from_child(dev, dlc->of_node, NULL);
if (!IS_ERR(clk)) {
simple_dai->clk = clk; simple_dai->clk = clk;
} else if (!of_property_read_u32(node, "system-clock-frequency", &val)) { simple_dai->sysclk = clk_get_rate(clk);
} else if (!of_property_read_u32(node, "system-clock-frequency",
&val)) {
simple_dai->sysclk = val; simple_dai->sysclk = val;
} else {
clk = devm_get_clk_from_child(dev, dlc->of_node, NULL);
if (!IS_ERR(clk))
simple_dai->sysclk = clk_get_rate(clk);
} }
if (of_property_read_bool(node, "system-clock-direction-out")) if (of_property_read_bool(node, "system-clock-direction-out"))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment