From 12f7c176448a117a08a4e9a3b7e0f3b12cfa8cb5 Mon Sep 17 00:00:00 2001 From: Sameer Pujar Date: Wed, 3 Feb 2021 12:23:00 +0530 Subject: [PATCH] ASoC: tegra: Make AUD_MCLK an optional clock Currently AUD_MCLK is controlled by kernel driver and it remains active as long as an audio use case is running. This is the case most platforms or audio codecs require. But some external codecs, depending on specific platform, may want AUD_MCLK clock to be running always and do not require a runtime control. Since kernel is common, we need a provision in DT to differentiate both of the above requirements. This can be achieved by making AUD_MCLK clock an optional property. Platforms which don't require kernel control can simply exclude AUD_MCLK clock entry. Respective call in kernel will not have any effect. Note: We are using upstream utils driver now and update the references wherever applicable. The changes need not be considered for upstream because there is plan to use audio-graph-card based driver for Tegra210 and later, which already treats AUD_MCLK clock as optional. Thus no explicit AUD_MCLK management is necessary. Also it is recommended that codec driver should take the control of AUD_MCLK. Hence current change is needed till mentioned transition happens. Bug 200694208 Change-Id: I87e496515e02db4ded6209a336f6cfbaec034fa1 Signed-off-by: Sameer Pujar Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2474868 (manually cherry picked from commit 8b2965341c1611b5984ff412f1d5001673396476) Reviewed-on: https://git-master.nvidia.com/r/c/linux-5.10/+/2518783 Tested-by: mobile promotions Reviewed-by: svcacv Reviewed-by: Viswanath L Reviewed-by: Mohan Kumar D Reviewed-by: Sharad Gupta Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit --- sound/soc/tegra/tegra_asoc_utils.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/tegra/tegra_asoc_utils.c b/sound/soc/tegra/tegra_asoc_utils.c index 9fe2d2d3..b024033f 100644 --- a/sound/soc/tegra/tegra_asoc_utils.c +++ b/sound/soc/tegra/tegra_asoc_utils.c @@ -3,7 +3,7 @@ * tegra_asoc_utils.c - Harmony machine ASoC driver * * Author: Stephen Warren - * Copyright (C) 2010,2012 - NVIDIA, Inc. + * Copyright (c) 2010-2021 NVIDIA CORPORATION. All rights reserved. */ #include @@ -296,8 +296,8 @@ int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data, return PTR_ERR(data->clk_pll_a_out0); } - /* FIXME: data->clk_cdev1 = devm_clk_get(dev, "mclk"); */ - data->clk_cdev1 = devm_clk_get(dev, "extern1"); + /* FIXME: data->clk_cdev1 = devm_clk_get_optional(dev, "mclk"); */ + data->clk_cdev1 = devm_clk_get_optional(dev, "extern1"); if (IS_ERR(data->clk_cdev1)) { dev_err(data->dev, "Can't retrieve clk cdev1\n"); return PTR_ERR(data->clk_cdev1); @@ -323,7 +323,7 @@ int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data, "Configuring clocks for a legacy device-tree\n"); dev_warn(data->dev, "Please update DT to use assigned-clock-parents\n"); - clk_extern1 = devm_clk_get(dev, "extern1"); + clk_extern1 = devm_clk_get_optional(dev, "extern1"); if (IS_ERR(clk_extern1)) { dev_err(data->dev, "Can't retrieve clk extern1\n"); return PTR_ERR(clk_extern1);