Changes in v2: - Added hard reset GPU recovery - Tightened polling time for soft reset and power on - New execution time measurements after poweroff fix (see [1]) [1]: https://lore.kernel.org/all/20231102141507.73481-1-angelogioacchino.delregno@xxxxxxxxxxxxx/ At least MediaTek platforms are able to get the GPU clocks and regulators completely off during system suspend, allowing to save a bit of power. Panfrost is used on more than just MediaTek SoCs and the benefits of this can be variable across different SoC models and/or different SoCs from different manufacturers: this means that just adding this ability for all could result in unexpected issues and breakages on untested SoCs. For the aforemenetioned reasons, turning off the clocks and/or regulators was implemented inside of a capabilities barrier that shall be enabled on a per-SoC basis (in the panfrost_compatible platform data) after testing of both benefits and feasibility. In this series, I am adding the ability to switch on/off clocks and regulators and enabling that on all MediaTek platforms, as I was able to successfully test that on multiple Chromebooks featuring different MediaTek SoCs; specifically, I've manually tested on MT8186, MT8192 and MT8195, while MT8183 got tested only by KernelCI. Cheers! AngeloGioacchino Del Regno (6): drm/panfrost: Perform hard reset to recover GPU if soft reset fails drm/panfrost: Tighten polling for soft reset and power on drm/panfrost: Implement ability to turn on/off GPU clocks in suspend drm/panfrost: Set clocks on/off during system sleep on MediaTek SoCs drm/panfrost: Implement ability to turn on/off regulators in suspend drm/panfrost: Set regulators on/off during system sleep on MediaTek SoCs drivers/gpu/drm/panfrost/panfrost_device.c | 78 ++++++++++++++++++++-- drivers/gpu/drm/panfrost/panfrost_device.h | 13 ++++ drivers/gpu/drm/panfrost/panfrost_drv.c | 3 + drivers/gpu/drm/panfrost/panfrost_gpu.c | 22 +++--- drivers/gpu/drm/panfrost/panfrost_regs.h | 1 + 5 files changed, 105 insertions(+), 12 deletions(-) -- 2.42.0