All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mikko Perttunen <mperttunen@nvidia.com>
To: Krzysztof Kozlowski <krzk@kernel.org>,
	Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
	Thierry Reding <treding@nvidia.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Prashant Gaikwad <pgaikwad@nvidia.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	Dmitry Osipenko <digetx@gmail.com>,
	MyungJoo Ham <myungjoo.ham@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	Svyatoslav Ryhel <clamor95@gmail.com>,
	Svyatoslav Ryhel <clamor95@gmail.com>
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-tegra@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: Re: [PATCH v3 06/11] clk: tegra: remove EMC to MC clock mux in Tegra114
Date: Thu, 13 Nov 2025 14:05:21 +0900	[thread overview]
Message-ID: <6112196.aeNJFYEL58@senjougahara> (raw)
In-Reply-To: <20250915080157.28195-7-clamor95@gmail.com>

On Monday, September 15, 2025 5:01 PM Svyatoslav Ryhel wrote:
> Configure EMC without mux for correct EMC driver support.

Rather than just 'removing EMC to MC clock mux in Tegra114', I would say this patch removes current emc and emc_mux clocks and replaces them with the proper EMC clock implementation. I would edit the commit subject and commit message along those lines.

> 
> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> ---
>  drivers/clk/tegra/clk-tegra114.c | 48 ++++++++++++++++++++++----------
>  1 file changed, 33 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c
> index 8bde72aa5e68..6b3a140772c2 100644
> --- a/drivers/clk/tegra/clk-tegra114.c
> +++ b/drivers/clk/tegra/clk-tegra114.c
> @@ -622,10 +622,6 @@ static const char *mux_plld_out0_plld2_out0[] = {
>  };
>  #define mux_plld_out0_plld2_out0_idx NULL
>  
> -static const char *mux_pllmcp_clkm[] = {
> -	"pll_m_out0", "pll_c_out0", "pll_p_out0", "clk_m", "pll_m_ud",
> -};
> -
>  static const struct clk_div_table pll_re_div_table[] = {
>  	{ .val = 0, .div = 1 },
>  	{ .val = 1, .div = 2 },
> @@ -672,7 +668,6 @@ static struct tegra_clk tegra114_clks[tegra_clk_max] __initdata = {
>  	[tegra_clk_csi] = { .dt_id = TEGRA114_CLK_CSI, .present = true },
>  	[tegra_clk_i2c2] = { .dt_id = TEGRA114_CLK_I2C2, .present = true },
>  	[tegra_clk_uartc] = { .dt_id = TEGRA114_CLK_UARTC, .present = true },
> -	[tegra_clk_emc] = { .dt_id = TEGRA114_CLK_EMC, .present = true },
>  	[tegra_clk_usb2] = { .dt_id = TEGRA114_CLK_USB2, .present = true },
>  	[tegra_clk_usb3] = { .dt_id = TEGRA114_CLK_USB3, .present = true },
>  	[tegra_clk_vde_8] = { .dt_id = TEGRA114_CLK_VDE, .present = true },
> @@ -1048,14 +1043,7 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base,
>  					     0, 82, periph_clk_enb_refcnt);
>  	clks[TEGRA114_CLK_DSIB] = clk;
>  
> -	/* emc mux */
> -	clk = clk_register_mux(NULL, "emc_mux", mux_pllmcp_clkm,
> -			       ARRAY_SIZE(mux_pllmcp_clkm),
> -			       CLK_SET_RATE_NO_REPARENT,
> -			       clk_base + CLK_SOURCE_EMC,
> -			       29, 3, 0, &emc_lock);
> -
> -	clk = tegra_clk_register_mc("mc", "emc_mux", clk_base + CLK_SOURCE_EMC,
> +	clk = tegra_clk_register_mc("mc", "emc", clk_base + CLK_SOURCE_EMC,
>  				    &emc_lock);
>  	clks[TEGRA114_CLK_MC] = clk;
>  
> @@ -1321,6 +1309,28 @@ static int tegra114_reset_deassert(unsigned long id)
>  	return 0;
>  }
>  
> +#ifdef CONFIG_TEGRA124_CLK_EMC
> +static struct clk *tegra114_clk_src_onecell_get(struct of_phandle_args *clkspec,
> +						void *data)
> +{
> +	struct clk_hw *hw;
> +	struct clk *clk;
> +
> +	clk = of_clk_src_onecell_get(clkspec, data);
> +	if (IS_ERR(clk))
> +		return clk;
> +
> +	hw = __clk_get_hw(clk);
> +
> +	if (clkspec->args[0] == TEGRA114_CLK_EMC) {
> +		if (!tegra124_clk_emc_driver_available(hw))
> +			return ERR_PTR(-EPROBE_DEFER);
> +	}
> +
> +	return clk;
> +}
> +#endif
> +
>  static void __init tegra114_clock_init(struct device_node *np)
>  {
>  	struct device_node *node;
> @@ -1362,16 +1372,24 @@ static void __init tegra114_clock_init(struct device_node *np)
>  	tegra_audio_clk_init(clk_base, pmc_base, tegra114_clks,
>  			     tegra114_audio_plls,
>  			     ARRAY_SIZE(tegra114_audio_plls), 24000000);
> +
> +	tegra_clk_apply_init_table = tegra114_clock_apply_init_table;
> +

Is there any particular reason for moving this here? If not, omitting the change would simplify the patch a bit.

>  	tegra_super_clk_gen4_init(clk_base, pmc_base, tegra114_clks,
>  					&pll_x_params);
>  
>  	tegra_init_special_resets(1, tegra114_reset_assert,
>  				  tegra114_reset_deassert);
>  
> +#ifdef CONFIG_TEGRA124_CLK_EMC
> +	tegra_add_of_provider(np, tegra114_clk_src_onecell_get);
> +	clks[TEGRA114_CLK_EMC] = tegra124_clk_register_emc(clk_base, np,
> +							   &emc_lock);
> +#else
>  	tegra_add_of_provider(np, of_clk_src_onecell_get);
> -	tegra_register_devclks(devclks, ARRAY_SIZE(devclks));
> +#endif

tegra124_clk_register_emc and tegra124_clk_emc_driver_available have stub implementations when CONFIG_TEGRA124_CLK_EMC is not enabled, so it would be cleaner to just call them always.

>  
> -	tegra_clk_apply_init_table = tegra114_clock_apply_init_table;
> +	tegra_register_devclks(devclks, ARRAY_SIZE(devclks));
>  
>  	tegra_cpu_car_ops = &tegra114_cpu_car_ops;
>  }
> 





  parent reply	other threads:[~2025-11-13  5:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-15  8:01 [PATCH v3 00/11] Tegra114: implement EMC support Svyatoslav Ryhel
2025-09-15  8:01 ` [PATCH v3 01/11] devfreq: tegra30-devfreq: add support for Tegra114 Svyatoslav Ryhel
2025-11-11  8:55   ` Mikko Perttunen
2025-11-11 13:34     ` Svyatoslav Ryhel
2025-11-13  4:20       ` Mikko Perttunen
2025-09-15  8:01 ` [PATCH v3 02/11] ARM: tegra: Add ACTMON node to Tegra114 device tree Svyatoslav Ryhel
2025-11-11  9:00   ` Mikko Perttunen
2025-09-15  8:01 ` [PATCH v3 03/11] dt-bindings: memory: Document Tegra114 Memory Controller Svyatoslav Ryhel
2025-09-22 16:00   ` Rob Herring
2025-09-22 16:18     ` Svyatoslav Ryhel
2025-09-24 15:24       ` Rob Herring
2025-12-01 14:18         ` Thierry Reding
2025-09-15  8:01 ` [PATCH v3 04/11] memory: tegra: implement EMEM regs and ICC ops for Tegra114 Svyatoslav Ryhel
2025-11-13  4:36   ` Mikko Perttunen
2025-09-15  8:01 ` [PATCH v3 05/11] dt-bindings: memory: Add Tegra114 memory client IDs Svyatoslav Ryhel
2025-11-13  4:47   ` Mikko Perttunen
2025-09-15  8:01 ` [PATCH v3 06/11] clk: tegra: remove EMC to MC clock mux in Tegra114 Svyatoslav Ryhel
2025-09-21 17:54   ` Stephen Boyd
2025-11-13 14:21     ` Svyatoslav Ryhel
2025-11-25 10:21     ` Svyatoslav Ryhel
2025-11-13  5:05   ` Mikko Perttunen [this message]
2025-11-13 14:29     ` Svyatoslav Ryhel
2025-09-15  8:01 ` [PATCH v3 07/11] dt-bindings: memory: Document Tegra114 External Memory Controller Svyatoslav Ryhel
2025-09-15  8:01 ` [PATCH v3 08/11] memory: tegra: Add Tegra114 EMC driver Svyatoslav Ryhel
2025-11-18  7:08   ` Mikko Perttunen
2025-11-18  8:05     ` Svyatoslav Ryhel
2025-11-21  4:03       ` Mikko Perttunen
2025-11-21  8:54         ` Svyatoslav Ryhel
2025-11-25  3:29           ` Mikko Perttunen
2025-09-15  8:01 ` [PATCH v3 09/11] ARM: tegra: Add External Memory Controller node on Tegra114 Svyatoslav Ryhel
2025-09-15  8:01 ` [PATCH v3 10/11] ARM: tegra: Add EMC OPP and ICC properties to Tegra114 EMC and ACTMON device-tree nodes Svyatoslav Ryhel
2025-09-15  8:01 ` [PATCH v3 11/11] ARM: tegra: add DC interconnections for Tegra114 Svyatoslav Ryhel

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=6112196.aeNJFYEL58@senjougahara \
    --to=mperttunen@nvidia.com \
    --cc=clamor95@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=krzk@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=pgaikwad@nvidia.com \
    --cc=robh@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=treding@nvidia.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.