Hi @Anonymous,
Now can narrow down suspend stuck issue is related with GPIO19, so at my side I can use below patch as workaround for suspend/resume flow:
diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c
index 6e3c143..ed2dbfe 100644
--- a/drivers/gpio/gpio-pl061.c
+++ b/drivers/gpio/gpio-pl061.c
@@ -379,6 +379,8 @@ static int pl061_suspend(struct device *dev)
struct pl061_gpio *chip = dev_get_drvdata(dev);
int offset;
+ return 0;
+
chip->csave_regs.gpio_data = 0;
chip->csave_regs.gpio_dir = readb(chip->base + GPIODIR);
chip->csave_regs.gpio_is = readb(chip->base + GPIOIS);
@@ -400,6 +402,8 @@ static int pl061_resume(struct device *dev)
struct pl061_gpio *chip = dev_get_drvdata(dev);
int offset;
+ return 0;
+
for (offset = 0; offset < PL061_GPIO_NR; offset++) {
if (chip->csave_regs.gpio_dir & (BIT(offset)))
pl061_direction_output(&chip->gc, offset,
I checked the clock setting for GPIO19, the clock has been enabled properly. So this means except this clock setting, there have other configurations we are missing so cannot access GPIO19 registers properly. I have updated bug tracking: https://bugs.96boards.org/show_bug.cgi?id=611 for following up investigation.