Skip to content

Commit 239d5fb

Browse files
Gabriel-Fernandzbebarino
authored andcommitted
clk: stm32mp13: use platform device APIs
Convert devm_platform_ioremap_resource() and remove unnecessary dependency check with SCMI clock driver. Signed-off-by: Gabriel Fernandez <gabriel.fernandez@foss.st.com> Link: https://lore.kernel.org/r/20240411092453.243633-2-gabriel.fernandez@foss.st.com Signed-off-by: Stephen Boyd <sboyd@kernel.org>
1 parent 4cece76 commit 239d5fb

File tree

2 files changed

+10
-73
lines changed

2 files changed

+10
-73
lines changed

drivers/clk/stm32/clk-stm32-core.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ static int stm32_rcc_clock_init(struct device *dev,
2525
{
2626
const struct stm32_rcc_match_data *data = match->data;
2727
struct clk_hw_onecell_data *clk_data = data->hw_clks;
28-
struct device_node *np = dev_of_node(dev);
2928
struct clk_hw **hws;
3029
int n, max_binding;
3130

@@ -64,7 +63,7 @@ static int stm32_rcc_clock_init(struct device *dev,
6463
hws[cfg_clock->id] = hw;
6564
}
6665

67-
return of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_data);
66+
return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
6867
}
6968

7069
int stm32_rcc_init(struct device *dev, const struct of_device_id *match_data,
@@ -638,7 +637,7 @@ struct clk_hw *clk_stm32_mux_register(struct device *dev,
638637
mux->lock = lock;
639638
mux->clock_data = data->clock_data;
640639

641-
err = clk_hw_register(dev, hw);
640+
err = devm_clk_hw_register(dev, hw);
642641
if (err)
643642
return ERR_PTR(err);
644643

@@ -659,7 +658,7 @@ struct clk_hw *clk_stm32_gate_register(struct device *dev,
659658
gate->lock = lock;
660659
gate->clock_data = data->clock_data;
661660

662-
err = clk_hw_register(dev, hw);
661+
err = devm_clk_hw_register(dev, hw);
663662
if (err)
664663
return ERR_PTR(err);
665664

@@ -680,7 +679,7 @@ struct clk_hw *clk_stm32_div_register(struct device *dev,
680679
div->lock = lock;
681680
div->clock_data = data->clock_data;
682681

683-
err = clk_hw_register(dev, hw);
682+
err = devm_clk_hw_register(dev, hw);
684683
if (err)
685684
return ERR_PTR(err);
686685

@@ -701,7 +700,7 @@ struct clk_hw *clk_stm32_composite_register(struct device *dev,
701700
composite->lock = lock;
702701
composite->clock_data = data->clock_data;
703702

704-
err = clk_hw_register(dev, hw);
703+
err = devm_clk_hw_register(dev, hw);
705704
if (err)
706705
return ERR_PTR(err);
707706

drivers/clk/stm32/clk-stm32mp13.c

Lines changed: 5 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1536,77 +1536,16 @@ static const struct of_device_id stm32mp13_match_data[] = {
15361536
};
15371537
MODULE_DEVICE_TABLE(of, stm32mp13_match_data);
15381538

1539-
static int stm32mp1_rcc_init(struct device *dev)
1540-
{
1541-
void __iomem *rcc_base;
1542-
int ret = -ENOMEM;
1543-
1544-
rcc_base = of_iomap(dev_of_node(dev), 0);
1545-
if (!rcc_base) {
1546-
dev_err(dev, "%pOFn: unable to map resource", dev_of_node(dev));
1547-
goto out;
1548-
}
1549-
1550-
ret = stm32_rcc_init(dev, stm32mp13_match_data, rcc_base);
1551-
out:
1552-
if (ret) {
1553-
if (rcc_base)
1554-
iounmap(rcc_base);
1555-
1556-
of_node_put(dev_of_node(dev));
1557-
}
1558-
1559-
return ret;
1560-
}
1561-
1562-
static int get_clock_deps(struct device *dev)
1563-
{
1564-
static const char * const clock_deps_name[] = {
1565-
"hsi", "hse", "csi", "lsi", "lse",
1566-
};
1567-
size_t deps_size = sizeof(struct clk *) * ARRAY_SIZE(clock_deps_name);
1568-
struct clk **clk_deps;
1569-
int i;
1570-
1571-
clk_deps = devm_kzalloc(dev, deps_size, GFP_KERNEL);
1572-
if (!clk_deps)
1573-
return -ENOMEM;
1574-
1575-
for (i = 0; i < ARRAY_SIZE(clock_deps_name); i++) {
1576-
struct clk *clk = of_clk_get_by_name(dev_of_node(dev),
1577-
clock_deps_name[i]);
1578-
1579-
if (IS_ERR(clk)) {
1580-
if (PTR_ERR(clk) != -EINVAL && PTR_ERR(clk) != -ENOENT)
1581-
return PTR_ERR(clk);
1582-
} else {
1583-
/* Device gets a reference count on the clock */
1584-
clk_deps[i] = devm_clk_get(dev, __clk_get_name(clk));
1585-
clk_put(clk);
1586-
}
1587-
}
1588-
1589-
return 0;
1590-
}
1591-
15921539
static int stm32mp1_rcc_clocks_probe(struct platform_device *pdev)
15931540
{
15941541
struct device *dev = &pdev->dev;
1595-
int ret = get_clock_deps(dev);
1542+
void __iomem *base;
15961543

1597-
if (!ret)
1598-
ret = stm32mp1_rcc_init(dev);
1599-
1600-
return ret;
1601-
}
1602-
1603-
static void stm32mp1_rcc_clocks_remove(struct platform_device *pdev)
1604-
{
1605-
struct device *dev = &pdev->dev;
1606-
struct device_node *child, *np = dev_of_node(dev);
1544+
base = devm_platform_ioremap_resource(pdev, 0);
1545+
if (WARN_ON(IS_ERR(base)))
1546+
return PTR_ERR(base);
16071547

1608-
for_each_available_child_of_node(np, child)
1609-
of_clk_del_provider(child);
1548+
return stm32_rcc_init(dev, stm32mp13_match_data, base);
16101549
}
16111550

16121551
static struct platform_driver stm32mp13_rcc_clocks_driver = {
@@ -1615,7 +1554,6 @@ static struct platform_driver stm32mp13_rcc_clocks_driver = {
16151554
.of_match_table = stm32mp13_match_data,
16161555
},
16171556
.probe = stm32mp1_rcc_clocks_probe,
1618-
.remove_new = stm32mp1_rcc_clocks_remove,
16191557
};
16201558

16211559
static int __init stm32mp13_clocks_init(void)

0 commit comments

Comments
 (0)