]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/panfrost: make devfreq optional again
authorNeil Armstrong <narmstrong@baylibre.com>
Wed, 5 Jun 2019 15:02:33 +0000 (17:02 +0200)
committerRob Herring <robh@kernel.org>
Mon, 10 Jun 2019 15:30:20 +0000 (09:30 -0600)
Devfreq runtime usage was made mandatory, thus making panfrost fail to probe
on Amlogic S912 SoCs missing the "operating-points-v2" property.
Make it optional again, leaving PM_DEVFREQ selected by default.

Fixes: f3617b449d0b ("drm/panfrost: Select devfreq")
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20190605150233.32722-1-narmstrong@baylibre.com
drivers/gpu/drm/panfrost/panfrost_devfreq.c

index 29fcffdf2d571dc93d39a3384ec67181394e75fd..db798532b0b6b0bc4d20011a9ab403bb0a333176 100644 (file)
@@ -140,7 +140,9 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev)
                return 0;
 
        ret = dev_pm_opp_of_add_table(&pfdev->pdev->dev);
-       if (ret)
+       if (ret == -ENODEV) /* Optional, continue without devfreq */
+               return 0;
+       else if (ret)
                return ret;
 
        panfrost_devfreq_reset(pfdev);
@@ -170,6 +172,9 @@ void panfrost_devfreq_resume(struct panfrost_device *pfdev)
 {
        int i;
 
+       if (!pfdev->devfreq.devfreq)
+               return;
+
        panfrost_devfreq_reset(pfdev);
        for (i = 0; i < NUM_JOB_SLOTS; i++)
                pfdev->devfreq.slot[i].busy = false;
@@ -179,6 +184,9 @@ void panfrost_devfreq_resume(struct panfrost_device *pfdev)
 
 void panfrost_devfreq_suspend(struct panfrost_device *pfdev)
 {
+       if (!pfdev->devfreq.devfreq)
+               return;
+
        devfreq_suspend_device(pfdev->devfreq.devfreq);
 }
 
@@ -188,6 +196,9 @@ static void panfrost_devfreq_update_utilization(struct panfrost_device *pfdev, i
        ktime_t now;
        ktime_t last;
 
+       if (!pfdev->devfreq.devfreq)
+               return;
+
        now = ktime_get();
        last = pfdev->devfreq.slot[slot].time_last_update;