Skip to content

Commit

Permalink
phy: ti: phy-j721e-wiz: stop name conflict if multiple serdes are ini…
Browse files Browse the repository at this point in the history
…tialized

When multiple serdes instances are initialized the first will succeed but
additional will conflict over clocks names and probing fails.

Signed-off-by: Matt Ranostay <mranostay@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Link: https://lore.kernel.org/r/20220909200026.3422-1-mranostay@ti.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
  • Loading branch information
mranostay authored and vinodkoul committed Sep 20, 2022
1 parent 931c05a commit 1fbef61
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion drivers/phy/ti/phy-j721e-wiz.c
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,8 @@ static int wiz_phy_en_refclk_register(struct wiz *wiz)
struct device *dev = wiz->dev;
struct clk_init_data *init;
struct clk *clk;
char *clk_name;
unsigned int sz;

wiz_phy_en_refclk = devm_kzalloc(dev, sizeof(*wiz_phy_en_refclk), GFP_KERNEL);
if (!wiz_phy_en_refclk)
Expand All @@ -726,12 +728,23 @@ static int wiz_phy_en_refclk_register(struct wiz *wiz)

init->ops = &wiz_phy_en_refclk_ops;
init->flags = 0;
init->name = output_clk_names[TI_WIZ_PHY_EN_REFCLK];

sz = strlen(dev_name(dev)) + strlen(output_clk_names[TI_WIZ_PHY_EN_REFCLK]) + 2;

clk_name = kzalloc(sz, GFP_KERNEL);
if (!clk_name)
return -ENOMEM;

snprintf(clk_name, sz, "%s_%s", dev_name(dev), output_clk_names[TI_WIZ_PHY_EN_REFCLK]);
init->name = clk_name;

wiz_phy_en_refclk->phy_en_refclk = wiz->phy_en_refclk;
wiz_phy_en_refclk->hw.init = init;

clk = devm_clk_register(dev, &wiz_phy_en_refclk->hw);

kfree(clk_name);

if (IS_ERR(clk))
return PTR_ERR(clk);

Expand Down

0 comments on commit 1fbef61

Please sign in to comment.