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

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.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b165457c
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -172,16 +172,15 @@ int asoc_simple_parse_clk(struct device *dev,
	 *  or device's module clock.
	 */
	clk = devm_get_clk_from_child(dev, node, NULL);
	if (!IS_ERR(clk)) {
		simple_dai->sysclk = clk_get_rate(clk);
	if (IS_ERR(clk))
		clk = devm_get_clk_from_child(dev, dlc->of_node, NULL);

	if (!IS_ERR(clk)) {
		simple_dai->clk = clk;
	} else if (!of_property_read_u32(node, "system-clock-frequency", &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);
	} else if (!of_property_read_u32(node, "system-clock-frequency",
					 &val)) {
		simple_dai->sysclk = val;
	}

	if (of_property_read_bool(node, "system-clock-direction-out"))