Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a792426 authored by Sanjana B's avatar Sanjana B
Browse files

asoc: qcs405: Update clk src string from dts



Extract clk src string from dts and update in afe.

Change-Id: I5004a5364d2d557072bbafc0c3476c50e18a4479
Signed-off-by: default avatarSanjana B <sanjb@codeaurora.org>
parent a15df090
Loading
Loading
Loading
Loading
+32 −4
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
 */
#include <linux/clk.h>
#include <linux/delay.h>
@@ -219,6 +219,8 @@ struct msm_asoc_wcd93xx_codec {
static const char *const pin_states[] = {"sleep", "i2s-active",
					 "tdm-active"};

const char *clk_src_name[CLK_SRC_MAX];

enum {
	TDM_0 = 0,
	TDM_1,
@@ -6742,10 +6744,17 @@ static int msm_meta_mi2s_snd_startup(struct snd_pcm_substream *substream)

		if (i == 0) {
			port_id = msm_get_port_id(rtd->dai_link->id);
			ret = afe_set_clk_id(port_id,
					     mi2s_clk[member_port].clk_id);
			if (meta_mi2s_rx_cfg[index].sample_rate
					% SAMPLING_RATE_8KHZ) {
				if (clk_src_name[CLK_SRC_FRACT] != NULL)
					ret = afe_set_source_clk(port_id,
							clk_src_name[CLK_SRC_FRACT]);
			} else if (clk_src_name[CLK_SRC_INTEGRAL] != NULL) {
				ret = afe_set_source_clk(port_id,
						clk_src_name[CLK_SRC_INTEGRAL]);
			}
			if (ret < 0)
				pr_err("%s: afe_set_clk_id fail %d\n",
				pr_err("%s: afe_set_source_name fail %d\n",
					 __func__, ret);

			ret = snd_soc_dai_set_fmt(cpu_dai, fmt);
@@ -9907,6 +9916,8 @@ static int msm_asoc_machine_probe(struct platform_device *pdev)
	const char *micb_voltage_str = "qcom,tdm-vdd-micb-voltage";
	const char *micb_current_str = "qcom,tdm-vdd-micb-current";
	u32 v_base_addr;
	const char *clk_src_name_str_integ = "qcom,clk-src-name-integ";
	const char *clk_src_name_str_fract = "qcom,clk-src-name-fract";

	if (!pdev->dev.of_node) {
		dev_err(&pdev->dev, "No platform supplied from device tree\n");
@@ -9943,6 +9954,23 @@ static int msm_asoc_machine_probe(struct platform_device *pdev)
		}
	}

	ret = of_property_read_string_index(pdev->dev.of_node,
			clk_src_name_str_integ, 0,
			&clk_src_name[CLK_SRC_INTEGRAL]);
	if (ret)
		dev_err(&pdev->dev,
			"No clk src name[%d] from device tree\n",
			CLK_SRC_INTEGRAL);
	ret = of_property_read_string_index(pdev->dev.of_node,
			clk_src_name_str_fract, 0,
			&clk_src_name[CLK_SRC_FRACT]);
	if (ret)
		dev_err(&pdev->dev,
			"No clk src name[%d] from device tree\n",
			CLK_SRC_FRACT);
	if (clk_src_name[CLK_SRC_INTEGRAL] != NULL &&
			clk_src_name[CLK_SRC_FRACT] != NULL)
		afe_set_clk_src_array(clk_src_name);
	/* test for ep92 HDMI bridge and update dai links accordingly */
	ret = msm_detect_ep92_dev(pdev, card);
	if (ret)