diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index c91a316a2..85864bcd4 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -1146,7 +1146,9 @@ static int gk20a_pm_enable_clk(struct device *dev) return -EINVAL; for (index = 0; index < platform->num_clks; index++) { - int err = clk_prepare_enable(platform->clk[index]); + int err = 0; + if (platform->clk[index]) + clk_prepare_enable(platform->clk[index]); if (err) return -EINVAL; } @@ -1163,8 +1165,10 @@ static int gk20a_pm_disable_clk(struct device *dev) if (!platform) return -EINVAL; - for (index = 0; index < platform->num_clks; index++) - clk_disable_unprepare(platform->clk[index]); + for (index = 0; index < platform->num_clks; index++) { + if (platform->clk[index]) + clk_disable_unprepare(platform->clk[index]); + } return 0; } diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a_generic.c b/drivers/gpu/nvgpu/gk20a/platform_gk20a_generic.c index 9b544ffc9..d5b82fccd 100644 --- a/drivers/gpu/nvgpu/gk20a/platform_gk20a_generic.c +++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a_generic.c @@ -96,6 +96,10 @@ err_get_clock: clk_put(platform->clk[1]); if (!IS_ERR_OR_NULL(platform->clk[2])) clk_put(platform->clk[2]); + + platform->clk[0] = NULL; + platform->clk[1] = NULL; + platform->clk[2] = NULL; return -ENODEV; }