On Tue, Aug 27, 2024 at 03:57:05AM -0600, Yangtao Li wrote: > Use devm_clk_get_enabled() and devm_clk_get_optional_enabled() > to simplify code. > > Signed-off-by: Yangtao Li <frank.li@xxxxxxxx> > Reviewed-by: Maxime Chevallier <maxime.chevallier@xxxxxxxxxxx> > Suggested-by: Serge Semin <fancer.lancer@xxxxxxxxx> Can't remember that I suggested the entire change, but merely the ERR_CAST() macro utilization. Anyway the patch now looks good: Reviewed-by: Serge Semin <fancer.lancer@xxxxxxxxx> Thanks. -Serge(y) > --- > v2: > -remove unused 'ret' > -fix incompatible-pointer-types > > .../ethernet/stmicro/stmmac/stmmac_platform.c | 35 +++++-------------- > 1 file changed, 8 insertions(+), 27 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > index ad868e8d195d..4365afabf3c4 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > @@ -415,8 +415,6 @@ static int stmmac_of_get_mac_mode(struct device_node *np) > static void stmmac_remove_config_dt(struct platform_device *pdev, > struct plat_stmmacenet_data *plat) > { > - clk_disable_unprepare(plat->stmmac_clk); > - clk_disable_unprepare(plat->pclk); > of_node_put(plat->phy_node); > of_node_put(plat->mdio_node); > } > @@ -436,7 +434,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) > struct plat_stmmacenet_data *plat; > struct stmmac_dma_cfg *dma_cfg; > int phy_mode; > - void *ret; > int rc; > > plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL); > @@ -615,21 +612,16 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) > > /* clock setup */ > if (!of_device_is_compatible(np, "snps,dwc-qos-ethernet-4.10")) { > - plat->stmmac_clk = devm_clk_get(&pdev->dev, > - STMMAC_RESOURCE_NAME); > + plat->stmmac_clk = devm_clk_get_enabled(&pdev->dev, STMMAC_RESOURCE_NAME); > if (IS_ERR(plat->stmmac_clk)) { > dev_warn(&pdev->dev, "Cannot get CSR clock\n"); > plat->stmmac_clk = NULL; > } > - clk_prepare_enable(plat->stmmac_clk); > } > > - plat->pclk = devm_clk_get_optional(&pdev->dev, "pclk"); > - if (IS_ERR(plat->pclk)) { > - ret = plat->pclk; > - goto error_pclk_get; > - } > - clk_prepare_enable(plat->pclk); > + plat->pclk = devm_clk_get_optional_enabled(&pdev->dev, "pclk"); > + if (IS_ERR(plat->pclk)) > + return ERR_CAST(plat->pclk); > > /* Fall-back to main clock in case of no PTP ref is passed */ > plat->clk_ptp_ref = devm_clk_get(&pdev->dev, "ptp_ref"); > @@ -644,26 +636,15 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac) > > plat->stmmac_rst = devm_reset_control_get_optional(&pdev->dev, > STMMAC_RESOURCE_NAME); > - if (IS_ERR(plat->stmmac_rst)) { > - ret = plat->stmmac_rst; > - goto error_hw_init; > - } > + if (IS_ERR(plat->stmmac_rst)) > + return ERR_CAST(plat->stmmac_rst); > > plat->stmmac_ahb_rst = devm_reset_control_get_optional_shared( > &pdev->dev, "ahb"); > - if (IS_ERR(plat->stmmac_ahb_rst)) { > - ret = plat->stmmac_ahb_rst; > - goto error_hw_init; > - } > + if (IS_ERR(plat->stmmac_ahb_rst)) > + return ERR_CAST(plat->stmmac_ahb_rst); > > return plat; > - > -error_hw_init: > - clk_disable_unprepare(plat->pclk); > -error_pclk_get: > - clk_disable_unprepare(plat->stmmac_clk); > - > - return ret; > } > > static void devm_stmmac_remove_config_dt(void *data) > -- > 2.39.0 >