Skip to content

Commit 69b8115

Browse files
loki666stevenprice-arm
authored andcommitted
drm/panfrost: reorder pd/clk/rst sequence
According to Mali manuals, the powerup sequence should be enable pd, asserting the reset then enabling the clock and the reverse for powerdown. Reviewed-by: Steven Price <steven.price@arm.com> Tested-by: John Williams <porschemad911@gmail.com> Signed-off-by: Philippe Simons <simons.philippe@gmail.com> Signed-off-by: Steven Price <steven.price@arm.com> Link: https://lore.kernel.org/r/20250403055210.54486-4-simons.philippe@gmail.com
1 parent 95bdaa8 commit 69b8115

1 file changed

Lines changed: 19 additions & 19 deletions

File tree

drivers/gpu/drm/panfrost/panfrost_device.c

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,20 @@ int panfrost_device_init(struct panfrost_device *pfdev)
209209

210210
spin_lock_init(&pfdev->cycle_counter.lock);
211211

212+
err = panfrost_pm_domain_init(pfdev);
213+
if (err)
214+
return err;
215+
216+
err = panfrost_reset_init(pfdev);
217+
if (err) {
218+
dev_err(pfdev->dev, "reset init failed %d\n", err);
219+
goto out_pm_domain;
220+
}
221+
212222
err = panfrost_clk_init(pfdev);
213223
if (err) {
214224
dev_err(pfdev->dev, "clk init failed %d\n", err);
215-
return err;
225+
goto out_reset;
216226
}
217227

218228
err = panfrost_devfreq_init(pfdev);
@@ -229,25 +239,15 @@ int panfrost_device_init(struct panfrost_device *pfdev)
229239
goto out_devfreq;
230240
}
231241

232-
err = panfrost_reset_init(pfdev);
233-
if (err) {
234-
dev_err(pfdev->dev, "reset init failed %d\n", err);
235-
goto out_regulator;
236-
}
237-
238-
err = panfrost_pm_domain_init(pfdev);
239-
if (err)
240-
goto out_reset;
241-
242242
pfdev->iomem = devm_platform_ioremap_resource(pfdev->pdev, 0);
243243
if (IS_ERR(pfdev->iomem)) {
244244
err = PTR_ERR(pfdev->iomem);
245-
goto out_pm_domain;
245+
goto out_regulator;
246246
}
247247

248248
err = panfrost_gpu_init(pfdev);
249249
if (err)
250-
goto out_pm_domain;
250+
goto out_regulator;
251251

252252
err = panfrost_mmu_init(pfdev);
253253
if (err)
@@ -268,16 +268,16 @@ int panfrost_device_init(struct panfrost_device *pfdev)
268268
panfrost_mmu_fini(pfdev);
269269
out_gpu:
270270
panfrost_gpu_fini(pfdev);
271-
out_pm_domain:
272-
panfrost_pm_domain_fini(pfdev);
273-
out_reset:
274-
panfrost_reset_fini(pfdev);
275271
out_regulator:
276272
panfrost_regulator_fini(pfdev);
277273
out_devfreq:
278274
panfrost_devfreq_fini(pfdev);
279275
out_clk:
280276
panfrost_clk_fini(pfdev);
277+
out_reset:
278+
panfrost_reset_fini(pfdev);
279+
out_pm_domain:
280+
panfrost_pm_domain_fini(pfdev);
281281
return err;
282282
}
283283

@@ -287,11 +287,11 @@ void panfrost_device_fini(struct panfrost_device *pfdev)
287287
panfrost_job_fini(pfdev);
288288
panfrost_mmu_fini(pfdev);
289289
panfrost_gpu_fini(pfdev);
290-
panfrost_pm_domain_fini(pfdev);
291-
panfrost_reset_fini(pfdev);
292290
panfrost_devfreq_fini(pfdev);
293291
panfrost_regulator_fini(pfdev);
294292
panfrost_clk_fini(pfdev);
293+
panfrost_reset_fini(pfdev);
294+
panfrost_pm_domain_fini(pfdev);
295295
}
296296

297297
#define PANFROST_EXCEPTION(id) \

0 commit comments

Comments
 (0)