summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavi Merino <javi.merino@arm.com>2015-06-03 11:10:36 +0100
committerJon Medhurst <tixy@linaro.org>2015-09-02 16:38:16 +0100
commit7d8b1ff6d34e3cfca9d89921c53cfdad68e220a7 (patch)
treed696009bbf1b39932e06a4d34d5601572480203a
parent7bbc659fe93918f2614a385e6957b6532f17f255 (diff)
mali: defer driver registration until the clock has been registered
Clocks are also registered as a module platform driver and you can't ensure that the clocks will be registered before the Mali driver so defer the probe of the Mali driver until the clocks are ready. Signed-off-by: Javi Merino <javi.merino@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
-rw-r--r--drivers/gpu/arm/midgard/mali_kbase_core_linux.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
index 8cffa55fa98..2a611c252e6 100644
--- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
+++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
@@ -3513,6 +3513,9 @@ static int kbase_platform_device_probe(struct platform_device *pdev)
#endif
kbdev->clock = clk_get(kbdev->dev, "clk_mali");
if (IS_ERR_OR_NULL(kbdev->clock)) {
+ err = PTR_ERR(kbdev->clock);
+ if (err == -EPROBE_DEFER)
+ goto out_regulator_get;
dev_info(kbdev->dev, "Continuing without Mali clock control\n");
kbdev->clock = NULL;
/* Allow probe to continue without clock. */
@@ -3544,6 +3547,7 @@ out_common_init:
clk_disable_unprepare(kbdev->clock);
out_clock_prepare:
clk_put(kbdev->clock);
+out_regulator_get:
#ifdef CONFIG_MALI_PLATFORM_DEVICETREE
pm_runtime_disable(kbdev->dev);
#endif