[PATCH 0/2] soc: imx: gpc: Power off PU domain in suspend/resume on 6qp

From: Leonard Crestez
Date: Mon Jul 02 2018 - 07:53:04 EST


Tested by doing `rtcwake -s 5 -m mem` while running glxgears on etnaviv.

The first patch is required because otherwise it is not easy to reach pgc
domains from the gpc itself when using new-style bindings. It's also
easier to understand.

The use of dynamic allocation in this driver is strange. Since there is
only one GPC physically present in each soc my impulse would be to make
most things global and delete imx_gpc_driver.remove entirely.

With current code (even without my patches) attempting to dynamically
remove/probe the GPC fils since since the per-pgc platform_device
instances are not removed. I'm trying something like this:

echo 130000.gpu > /sys/bus/platform/drivers/etnaviv-gpu/unbind
echo 134000.gpu > /sys/bus/platform/drivers/etnaviv-gpu/unbind
echo 20dc000.gpc > /sys/bus/platform/drivers/imx-gpc/unbind
echo 20dc000.gpc > /sys/bus/platform/drivers/imx-gpc/bind

But is there any usecase for dynamically removing the GPC? Instead of
trying to fix it I'd rather delete imx_gpc_driver.remove, just like
for gpcv2. Would anyone object to a patch doing this?

This series is not very pretty, constructive suggestions is welcome.
NXP internal tree has quite a lot of changes in gpc code and this causes
a lot of trouble when doing upgrades so I am trying to push some of the
internal features upstream.

Maybe instead of direct calls from mach-imx the gpc could implement
SLEEP_PM_OPS instead? It would still need a way to access the pgc
devices directly.

Leonard Crestez (2):
soc: imx: gpc: Use static platform_device instances
soc: imx: gpc: Power off PU domain in suspend/resume on 6qp

arch/arm/mach-imx/gpc.c | 10 +++++
drivers/soc/imx/gpc.c | 93 ++++++++++++++++++++++++++---------------
2 files changed, 70 insertions(+), 33 deletions(-)

--
2.17.1