linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: <skomatineni@nvidia.com>, <thierry.reding@gmail.com>,
	<jonathanh@nvidia.com>, <digetx@gmail.com>,
	<mperttunen@nvidia.com>, <gregkh@linuxfoundation.org>,
	<sboyd@kernel.org>, <robh+dt@kernel.org>, <mark.rutland@arm.com>
Cc: <pdeschrijver@nvidia.com>, <pgaikwad@nvidia.com>,
	<spujar@nvidia.com>, <josephl@nvidia.com>,
	<daniel.lezcano@linaro.org>, <mmaddireddy@nvidia.com>,
	<markz@nvidia.com>, <devicetree@vger.kernel.org>,
	<linux-clk@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH v4 12/19] ASoC: tegra: Add initial parent configuration for audio mclk
Date: Tue, 17 Dec 2019 12:03:59 -0800	[thread overview]
Message-ID: <1576613046-17159-13-git-send-email-skomatineni@nvidia.com> (raw)
In-Reply-To: <1576613046-17159-1-git-send-email-skomatineni@nvidia.com>

Tegra PMC clock clk_out_1 is dedicated for audio mclk from Tegra30
through Tegra210 and currently Tegra clock driver does initial parent
configuration for audio mclk "clk_out_1" and enables them by default.

With the move of Tera PMC clocks from clock driver to Tegra PMC
driver, initial parent configuration for audio clocks are through
the device tree using assigned-clock-parents property.

Default clock parents can be specified in device tree using
assigned-clocks and assigned-clock-parents and there is no need
to have clock driver do parent configuration and enable audio related
clocks.

This patch has implementation of doing initial parent confgiuration
in audio driver when default parent configuration is not specified
in the device tree using assigned-clock properties.

This patch configures PLLA_OUT0 as parent to extern1 and extern1
as parent to clk_out_1 and uses clk_out_1 as cdev1 clock to allow
mclk control from this driver.

Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
---
 sound/soc/tegra/tegra_asoc_utils.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/sound/soc/tegra/tegra_asoc_utils.c b/sound/soc/tegra/tegra_asoc_utils.c
index 38535962029c..fe9ca8acd0fb 100644
--- a/sound/soc/tegra/tegra_asoc_utils.c
+++ b/sound/soc/tegra/tegra_asoc_utils.c
@@ -158,6 +158,7 @@ EXPORT_SYMBOL_GPL(tegra_asoc_utils_set_ac97_rate);
 int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data,
 			  struct device *dev)
 {
+	struct clk *clk_out_1, *clk_extern1;
 	int ret;
 
 	data->dev = dev;
@@ -193,6 +194,41 @@ int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data,
 		return PTR_ERR(data->clk_cdev1);
 	}
 
+	/*
+	 * If clock parents are not set in DT, configure here to use clk_out_1
+	 * as mclk and extern1 as parent for Tegra30 and higher.
+	 */
+	if (!of_find_property(dev->of_node, "assigned-clock-parents", NULL) &&
+	    data->soc > TEGRA_ASOC_UTILS_SOC_TEGRA20) {
+		clk_extern1 = devm_clk_get(dev, "extern1");
+		if (IS_ERR(clk_extern1)) {
+			dev_err(data->dev, "Can't retrieve clk extern1\n");
+			return PTR_ERR(clk_extern1);
+		}
+
+		ret = clk_set_parent(clk_extern1, data->clk_pll_a_out0);
+		if (ret < 0) {
+			dev_err(data->dev,
+				"Set parent failed for clk extern1\n");
+			return ret;
+		}
+
+		clk_out_1 = devm_clk_get(dev, "clk_out_1");
+		if (IS_ERR(clk_out_1)) {
+			dev_err(data->dev, "Can't retrieve clk clk_out_1\n");
+			return PTR_ERR(clk_out_1);
+		}
+
+		ret = clk_set_parent(clk_out_1, clk_extern1);
+		if (ret < 0) {
+			dev_err(data->dev,
+				"Set parent failed for clk_out_1\n");
+			return ret;
+		}
+
+		data->clk_cdev1 = clk_out_1;
+	}
+
 	ret = tegra_asoc_utils_set_rate(data, 44100, 256 * 44100);
 
 	return ret;
-- 
2.7.4


  parent reply	other threads:[~2019-12-17 20:05 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-17 20:03 [PATCH v4 00/19] Move PMC clocks into Tegra PMC driver Sowjanya Komatineni
2019-12-17 20:03 ` [PATCH v4 01/19] dt-bindings: clock: tegra: Change CLK_M_DIV to OSC_DIV clocks Sowjanya Komatineni
2019-12-18 21:19   ` Rob Herring
2019-12-17 20:03 ` [PATCH v4 02/19] clk: tegra: Change CLK_M_DIV clocks " Sowjanya Komatineni
2019-12-17 20:03 ` [PATCH v4 03/19] clk: tegra: Fix Tegra PMC clock out parents Sowjanya Komatineni
2019-12-17 20:03 ` [PATCH v4 04/19] dt-bindings: tegra: Convert Tegra PMC bindings to YAML Sowjanya Komatineni
2019-12-18 21:29   ` Rob Herring
2019-12-18 22:31     ` Sowjanya Komatineni
2019-12-17 20:03 ` [PATCH v4 05/19] dt-bindings: soc: tegra-pmc: Add Tegra PMC clock bindings Sowjanya Komatineni
2019-12-18  7:56   ` Dmitry Osipenko
2019-12-17 20:03 ` [PATCH v4 06/19] soc: tegra: Add Tegra PMC clock registrations into PMC driver Sowjanya Komatineni
2019-12-18  8:30   ` Dmitry Osipenko
2019-12-18  8:35     ` Dmitry Osipenko
2019-12-18 15:46       ` Sowjanya Komatineni
2019-12-18 15:50         ` Sowjanya Komatineni
2019-12-18 16:52           ` Dmitry Osipenko
2019-12-18 17:00             ` Sowjanya Komatineni
2019-12-18 16:48         ` Dmitry Osipenko
2019-12-18 21:44       ` Dmitry Osipenko
2019-12-19  0:41         ` Sowjanya Komatineni
2019-12-20  1:21           ` Sowjanya Komatineni
2019-12-20  1:39             ` Dmitry Osipenko
2019-12-20  4:13               ` Sowjanya Komatineni
2019-12-20  4:34                 ` Dmitry Osipenko
2019-12-20 19:06                   ` Sowjanya Komatineni
2019-12-17 20:03 ` [PATCH v4 07/19] dt-bindings: soc: tegra-pmc: Add id for Tegra PMC 32KHz blink clock Sowjanya Komatineni
2019-12-18 21:30   ` Rob Herring
2019-12-17 20:03 ` [PATCH v4 08/19] soc: tegra: Add support for " Sowjanya Komatineni
2019-12-18  5:08   ` Dmitry Osipenko
2019-12-17 20:03 ` [PATCH v4 09/19] clk: tegra: Remove tegra_pmc_clk_init along with clk ids Sowjanya Komatineni
2019-12-17 20:03 ` [PATCH v4 10/19] dt-bindings: clock: tegra: Remove pmc clock ids from clock dt-bindings Sowjanya Komatineni
2019-12-18 21:32   ` Rob Herring
2019-12-17 20:03 ` [PATCH v4 11/19] ASoC: tegra: Use device managed resource APIs to get the clock Sowjanya Komatineni
2019-12-17 20:03 ` Sowjanya Komatineni [this message]
2019-12-17 20:04 ` [PATCH v4 13/19] ASoC: tegra: Add fallback implementation for audio mclk Sowjanya Komatineni
2019-12-18  6:59   ` Dmitry Osipenko
2019-12-18  7:01     ` Dmitry Osipenko
2019-12-18  7:14       ` Sowjanya Komatineni
2019-12-18  7:22         ` Dmitry Osipenko
2019-12-18  7:31           ` Dmitry Osipenko
2019-12-18 15:43             ` Sowjanya Komatineni
2019-12-18 16:29               ` Dmitry Osipenko
2019-12-18 16:32                 ` Sowjanya Komatineni
2019-12-18 16:34                   ` Dmitry Osipenko
2019-12-17 20:04 ` [PATCH v4 14/19] clk: tegra: Remove audio related clock enables from clocks init_table Sowjanya Komatineni
2019-12-17 20:04 ` [PATCH v4 15/19] ARM: dts: tegra: Add clock-cells property to pmc Sowjanya Komatineni
2019-12-18 21:36   ` Dmitry Osipenko
2019-12-17 20:04 ` [PATCH v4 16/19] arm64: tegra: Add clock-cells property to Tegra PMC node Sowjanya Komatineni
2019-12-17 20:04 ` [PATCH v4 17/19] ARM: tegra: Update sound node clocks in device tree Sowjanya Komatineni
2019-12-18  6:39   ` Dmitry Osipenko
2019-12-18  7:47   ` Dmitry Osipenko
2019-12-17 20:04 ` [PATCH v4 18/19] arm64: tegra: smaug: Change clk_out_2 provider to pmc Sowjanya Komatineni
2019-12-17 20:04 ` [PATCH v4 19/19] ASoC: nau8825: change Tegra clk_out_2 provider from tegra_car " Sowjanya Komatineni
2019-12-18 21:32   ` Rob Herring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1576613046-17159-13-git-send-email-skomatineni@nvidia.com \
    --to=skomatineni@nvidia.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jonathanh@nvidia.com \
    --cc=josephl@nvidia.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=markz@nvidia.com \
    --cc=mmaddireddy@nvidia.com \
    --cc=mperttunen@nvidia.com \
    --cc=pdeschrijver@nvidia.com \
    --cc=pgaikwad@nvidia.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=spujar@nvidia.com \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).