summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.com>2014-09-17 11:34:17 +0200
committerPeter De Schrijver <pdeschrijver@nvidia.com>2014-09-18 13:56:53 +0200
commitb9e742c3164344fece3615aca42ec51b41753908 (patch)
treec6d2ec101d61bb69fa6eee437f67e2bed1cee8ab
parentclk: tegra124: Add PLL_M_UD and PLL_C_UD clocks (diff)
downloadlinux-b9e742c3164344fece3615aca42ec51b41753908.tar.xz
linux-b9e742c3164344fece3615aca42ec51b41753908.zip
clk: tegra: Make clock initialization more robust
Don't abort clock initialization if we cannot match an entry in tegra_clk_init_table to a valid entry in the clk array. Also log a corresponding error message. This was discovered when testing a patch that removed the EMC clock from tegra124_clks but left a mention in tegra_clk_init_table. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Reviewed-by: Stephen Warren <swarren@nvidia.com>
-rw-r--r--drivers/clk/tegra/clk.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/clk/tegra/clk.c b/drivers/clk/tegra/clk.c
index f87c609e8f72..97dc8595c3cd 100644
--- a/drivers/clk/tegra/clk.c
+++ b/drivers/clk/tegra/clk.c
@@ -207,8 +207,13 @@ void __init tegra_init_from_table(struct tegra_clk_init_table *tbl,
for (; tbl->clk_id < clk_max; tbl++) {
clk = clks[tbl->clk_id];
- if (IS_ERR_OR_NULL(clk))
- return;
+ if (IS_ERR_OR_NULL(clk)) {
+ pr_err("%s: invalid entry %ld in clks array for id %d\n",
+ __func__, PTR_ERR(clk), tbl->clk_id);
+ WARN_ON(1);
+
+ continue;
+ }
if (tbl->parent_id < clk_max) {
struct clk *parent = clks[tbl->parent_id];