Patch "clk: iproc: Do not rely on node name for correct PLL setup" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    clk: iproc: Do not rely on node name for correct PLL setup

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     clk-iproc-do-not-rely-on-node-name-for-correct-pll-s.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 6b8b65c704099e902e2773be65ca2f126a47373e
Author: Florian Fainelli <f.fainelli@xxxxxxxxx>
Date:   Mon Sep 5 09:15:03 2022 -0700

    clk: iproc: Do not rely on node name for correct PLL setup
    
    [ Upstream commit 1b24a132eba7a1c19475ba2510ec1c00af3ff914 ]
    
    After commit 31fd9b79dc58 ("ARM: dts: BCM5301X: update CRU block
    description") a warning from clk-iproc-pll.c was generated due to a
    duplicate PLL name as well as the console stopped working. Upon closer
    inspection it became clear that iproc_pll_clk_setup() used the Device
    Tree node unit name as an unique identifier as well as a parent name to
    parent all clocks under the PLL.
    
    BCM5301X was the first platform on which that got noticed because of the
    DT node unit name renaming but the same assumptions hold true for any
    user of the iproc_pll_clk_setup() function.
    
    The first 'clock-output-names' property is always guaranteed to be
    unique as well as providing the actual desired PLL clock name, so we
    utilize that to register the PLL and as a parent name of all children
    clock.
    
    Fixes: 5fe225c105fd ("clk: iproc: add initial common clock support")
    Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
    Acked-by: Rafał Miłecki <rafal@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20220905161504.1526-1-f.fainelli@xxxxxxxxx
    Signed-off-by: Stephen Boyd <sboyd@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/clk/bcm/clk-iproc-pll.c b/drivers/clk/bcm/clk-iproc-pll.c
index 33da30f99c79..d39c44b61c52 100644
--- a/drivers/clk/bcm/clk-iproc-pll.c
+++ b/drivers/clk/bcm/clk-iproc-pll.c
@@ -736,6 +736,7 @@ void iproc_pll_clk_setup(struct device_node *node,
 	const char *parent_name;
 	struct iproc_clk *iclk_array;
 	struct clk_hw_onecell_data *clk_data;
+	const char *clk_name;
 
 	if (WARN_ON(!pll_ctrl) || WARN_ON(!clk_ctrl))
 		return;
@@ -783,7 +784,12 @@ void iproc_pll_clk_setup(struct device_node *node,
 	iclk = &iclk_array[0];
 	iclk->pll = pll;
 
-	init.name = node->name;
+	ret = of_property_read_string_index(node, "clock-output-names",
+					    0, &clk_name);
+	if (WARN_ON(ret))
+		goto err_pll_register;
+
+	init.name = clk_name;
 	init.ops = &iproc_pll_ops;
 	init.flags = 0;
 	parent_name = of_clk_get_parent_name(node, 0);
@@ -803,13 +809,11 @@ void iproc_pll_clk_setup(struct device_node *node,
 		goto err_pll_register;
 
 	clk_data->hws[0] = &iclk->hw;
+	parent_name = clk_name;
 
 	/* now initialize and register all leaf clocks */
 	for (i = 1; i < num_clks; i++) {
-		const char *clk_name;
-
 		memset(&init, 0, sizeof(init));
-		parent_name = node->name;
 
 		ret = of_property_read_string_index(node, "clock-output-names",
 						    i, &clk_name);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux