Devfreq runtime usage was made mandatory, thus making panfrost fail to probe on Amlogic S912 SoCs missin the "operating-points-v2" property. Make it optional again, leaving PM_DEVFREQ is selected by default.
Fixes: f3617b449d ("drm/panfrost: Select devfreq") Signed-off-by: Neil Armstrong narmstrong@baylibre.com --- drivers/gpu/drm/panfrost/panfrost_devfreq.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c index 29fcffdf2d57..dc75f99ad53b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -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 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;
On Fri, 2019-05-31 at 14:37 +0200, Neil Armstrong wrote:
Devfreq runtime usage was made mandatory, thus making panfrost fail to probe on Amlogic S912 SoCs missin the "operating-points-v2" property. Make it optional again, leaving PM_DEVFREQ is selected by default.
Fixes: f3617b449d ("drm/panfrost: Select devfreq") Signed-off-by: Neil Armstrong narmstrong@baylibre.com
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c index 29fcffdf2d57..dc75f99ad53b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -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 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;
This patch should also fix RK3288 platforms, which at the moment are broken as well by my patch.
I will test and confirm next week.
Thanks for the fix, Ezequiel
On Fri, 2019-05-31 at 14:37 +0200, Neil Armstrong wrote:
Devfreq runtime usage was made mandatory, thus making panfrost fail to probe on Amlogic S912 SoCs missin the "operating-points-v2" property. Make it optional again, leaving PM_DEVFREQ is selected by default.
Fixes: f3617b449d ("drm/panfrost: Select devfreq") Signed-off-by: Neil Armstrong narmstrong@baylibre.com
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c index 29fcffdf2d57..dc75f99ad53b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -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 return ret;
This looks incorrect, should be:
else if (ret) return ret;
Otherwise, if ret == 0, we are bailing out.
Thanks, Eze
On 03/06/2019 21:54, Ezequiel Garcia wrote:
On Fri, 2019-05-31 at 14:37 +0200, Neil Armstrong wrote:
Devfreq runtime usage was made mandatory, thus making panfrost fail to probe on Amlogic S912 SoCs missin the "operating-points-v2" property. Make it optional again, leaving PM_DEVFREQ is selected by default.
Fixes: f3617b449d ("drm/panfrost: Select devfreq") Signed-off-by: Neil Armstrong narmstrong@baylibre.com
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c index 29fcffdf2d57..dc75f99ad53b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -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 return ret;
This looks incorrect, should be:
else if (ret) return ret;
Otherwise, if ret == 0, we are bailing out.
Indeed, thanks for spotting this...
Will resend.
Neil
Thanks, Eze
dri-devel@lists.freedesktop.org