Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

phy: cadence: Sierra: Replace `clk_register(`) with `clk_hw_register()`

The `devm_clk_register()` API is deprecated. Switch to
`devm_clk_hw_register()`.

Since the driver enables its own internal PLLs using the clock API we
still need to get a reference to the PLL clocks using the
`devm_clk_hw_get_clk()` API.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Link: https://lore.kernel.org/r/20230326011416.363318-1-lars@metafoo.de
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Lars-Peter Clausen and committed by
Vinod Koul
6ef7aa32 c8481d99

+26 -20
+26 -20
drivers/phy/cadence/phy-cadence-sierra.c
··· 371 371 u32 num_lanes; 372 372 bool autoconf; 373 373 int already_configured; 374 - struct clk_onecell_data clk_data; 375 - struct clk *output_clks[CDNS_SIERRA_OUTPUT_CLOCKS]; 374 + struct clk *pll_clks[SIERRA_NUM_CMN_PLLC]; 375 + struct clk_hw_onecell_data clk_data; 376 376 }; 377 377 378 378 static int cdns_regmap_write(void *context, unsigned int reg, unsigned int val) ··· 726 726 unsigned int num_parents; 727 727 char clk_name[100]; 728 728 struct clk *clk; 729 + int ret; 729 730 int i; 730 731 731 732 mux = devm_kzalloc(dev, sizeof(*mux), GFP_KERNEL); ··· 762 761 mux->termen_field = termen_field; 763 762 mux->hw.init = init; 764 763 765 - clk = devm_clk_register(dev, &mux->hw); 766 - if (IS_ERR(clk)) 767 - return PTR_ERR(clk); 764 + ret = devm_clk_hw_register(dev, &mux->hw); 765 + if (ret) 766 + return ret; 768 767 769 - sp->output_clks[clk_index] = clk; 768 + sp->clk_data.hws[clk_index] = &mux->hw; 769 + 770 + sp->pll_clks[clk_index] = devm_clk_hw_get_clk(dev, &mux->hw, 771 + clk_names[clk_index]); 770 772 771 773 return 0; 772 774 } ··· 842 838 struct clk_init_data *init; 843 839 struct regmap *regmap; 844 840 char clk_name[100]; 845 - struct clk *clk; 841 + int ret; 846 842 847 843 derived_refclk = devm_kzalloc(dev, sizeof(*derived_refclk), GFP_KERNEL); 848 844 if (!derived_refclk) ··· 875 871 876 872 derived_refclk->hw.init = init; 877 873 878 - clk = devm_clk_register(dev, &derived_refclk->hw); 879 - if (IS_ERR(clk)) 880 - return PTR_ERR(clk); 874 + ret = devm_clk_hw_register(dev, &derived_refclk->hw); 875 + if (ret) 876 + return ret; 881 877 882 - sp->output_clks[CDNS_SIERRA_DERIVED_REFCLK] = clk; 878 + sp->clk_data.hws[CDNS_SIERRA_DERIVED_REFCLK] = &derived_refclk->hw; 883 879 884 880 return 0; 885 881 } ··· 910 906 return ret; 911 907 } 912 908 913 - sp->clk_data.clks = sp->output_clks; 914 - sp->clk_data.clk_num = CDNS_SIERRA_OUTPUT_CLOCKS; 915 - ret = of_clk_add_provider(node, of_clk_src_onecell_get, &sp->clk_data); 909 + sp->clk_data.num = CDNS_SIERRA_OUTPUT_CLOCKS; 910 + ret = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, 911 + &sp->clk_data); 916 912 if (ret) 917 913 dev_err(dev, "Failed to add clock provider: %s\n", node->name); 918 914 ··· 1194 1190 { 1195 1191 int ret; 1196 1192 1197 - ret = clk_prepare_enable(sp->output_clks[CDNS_SIERRA_PLL_CMNLC]); 1193 + ret = clk_prepare_enable(sp->pll_clks[CDNS_SIERRA_PLL_CMNLC]); 1198 1194 if (ret) 1199 1195 return ret; 1200 1196 1201 - ret = clk_prepare_enable(sp->output_clks[CDNS_SIERRA_PLL_CMNLC1]); 1197 + ret = clk_prepare_enable(sp->pll_clks[CDNS_SIERRA_PLL_CMNLC1]); 1202 1198 if (ret) 1203 1199 goto err_pll_cmnlc1; 1204 1200 1205 1201 return 0; 1206 1202 1207 1203 err_pll_cmnlc1: 1208 - clk_disable_unprepare(sp->output_clks[CDNS_SIERRA_PLL_CMNLC]); 1204 + clk_disable_unprepare(sp->pll_clks[CDNS_SIERRA_PLL_CMNLC]); 1209 1205 1210 1206 return ret; 1211 1207 } 1212 1208 1213 1209 static void cdns_sierra_phy_disable_clocks(struct cdns_sierra_phy *sp) 1214 1210 { 1215 - clk_disable_unprepare(sp->output_clks[CDNS_SIERRA_PLL_CMNLC1]); 1216 - clk_disable_unprepare(sp->output_clks[CDNS_SIERRA_PLL_CMNLC]); 1211 + clk_disable_unprepare(sp->pll_clks[CDNS_SIERRA_PLL_CMNLC1]); 1212 + clk_disable_unprepare(sp->pll_clks[CDNS_SIERRA_PLL_CMNLC]); 1217 1213 if (!sp->already_configured) 1218 1214 clk_disable_unprepare(sp->input_clks[PHY_CLK]); 1219 1215 } ··· 1374 1370 if (!data) 1375 1371 return -EINVAL; 1376 1372 1377 - sp = devm_kzalloc(dev, sizeof(*sp), GFP_KERNEL); 1373 + sp = devm_kzalloc(dev, struct_size(sp, clk_data.hws, 1374 + CDNS_SIERRA_OUTPUT_CLOCKS), 1375 + GFP_KERNEL); 1378 1376 if (!sp) 1379 1377 return -ENOMEM; 1380 1378 dev_set_drvdata(dev, sp);