mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 09:16:33 +00:00
misc: sram: Improve and simplify clk handling
The current code tries to get an associated clk, ignores any errors in the process and if there is a clock enables it unconditionally for the whole lifetime of the sram device. Instead use an "optional" variant of devm_clk_get() which handles the case where no clk is needed for the sram device and do proper error handling for the remaining error cases. Also use an "enabled" variant of devm_clk_get() to simplify. With that .probe() is the only function using struct sram_dev::clk, so it can be replaced by a local variable. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Link: https://lore.kernel.org/r/20230302091251.1852454-1-u.kleine-koenig@pengutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7ef1a2c1c9
commit
9263271a61
@ -381,6 +381,7 @@ static int sram_probe(struct platform_device *pdev)
|
||||
struct sram_dev *sram;
|
||||
int ret;
|
||||
struct resource *res;
|
||||
struct clk *clk;
|
||||
|
||||
config = of_device_get_match_data(&pdev->dev);
|
||||
|
||||
@ -409,16 +410,14 @@ static int sram_probe(struct platform_device *pdev)
|
||||
return PTR_ERR(sram->pool);
|
||||
}
|
||||
|
||||
sram->clk = devm_clk_get(sram->dev, NULL);
|
||||
if (IS_ERR(sram->clk))
|
||||
sram->clk = NULL;
|
||||
else
|
||||
clk_prepare_enable(sram->clk);
|
||||
clk = devm_clk_get_optional_enabled(sram->dev, NULL);
|
||||
if (IS_ERR(clk))
|
||||
return PTR_ERR(clk);
|
||||
|
||||
ret = sram_reserve_regions(sram,
|
||||
platform_get_resource(pdev, IORESOURCE_MEM, 0));
|
||||
if (ret)
|
||||
goto err_disable_clk;
|
||||
return ret;
|
||||
|
||||
platform_set_drvdata(pdev, sram);
|
||||
|
||||
@ -436,9 +435,6 @@ static int sram_probe(struct platform_device *pdev)
|
||||
|
||||
err_free_partitions:
|
||||
sram_free_partitions(sram);
|
||||
err_disable_clk:
|
||||
if (sram->clk)
|
||||
clk_disable_unprepare(sram->clk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -452,9 +448,6 @@ static int sram_remove(struct platform_device *pdev)
|
||||
if (sram->pool && gen_pool_avail(sram->pool) < gen_pool_size(sram->pool))
|
||||
dev_err(sram->dev, "removed while SRAM allocated\n");
|
||||
|
||||
if (sram->clk)
|
||||
clk_disable_unprepare(sram->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,6 @@ struct sram_dev {
|
||||
bool no_memory_wc;
|
||||
|
||||
struct gen_pool *pool;
|
||||
struct clk *clk;
|
||||
|
||||
struct sram_partition *partition;
|
||||
u32 partitions;
|
||||
|
Loading…
Reference in New Issue
Block a user