diff options
author | Hal Feng <hal.feng@starfivetech.com> | 2023-01-13 11:35:54 +0300 |
---|---|---|
committer | Hal Feng <hal.feng@starfivetech.com> | 2023-01-13 11:35:54 +0300 |
commit | 52f8f570343a9380672719171044560d6514d74a (patch) | |
tree | 322a5242ce0d016bb5af52acd42f707c41dbcfe5 | |
parent | 14341fbc54c2f333c8ec4eabad6de9335cd39926 (diff) | |
download | linux-52f8f570343a9380672719171044560d6514d74a.tar.xz |
pinctrl: starfive: Save all register values when suspending and restore them when resuming
Restore the other registers besides irq registers when resuming.
Signed-off-by: Hal Feng <hal.feng@starfivetech.com>
-rwxr-xr-x | drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c | 26 | ||||
-rw-r--r-- | drivers/pinctrl/starfive/pinctrl-starfive.h | 8 |
2 files changed, 18 insertions, 16 deletions
diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c index 091f36649512..06a8e21075af 100755 --- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c @@ -1668,13 +1668,15 @@ static int __maybe_unused starfive_pinctrl_suspend(struct device *dev) struct starfive_pinctrl *pctl = dev_get_drvdata(dev); u8 i; - for (i = 0 ; i < SYS_IRQ_REG_SUSPENDED_NUM ; i++) - pctl->sys_irq_reg_suspended[i] = - readl_relaxed(pctl->padctl_base + GPIO_EN + OFFSET_PER_REG * i); + for (i = 0 ; i < SYS_REG_SUSPENDED_NUM ; i++) + pctl->sys_reg_suspended[i] = readl_relaxed(pctl->padctl_base + + SYS_GPO_DOEN_CFG_BASE_REG + + OFFSET_PER_REG * i); - for (i = 0 ; i < AON_IRQ_REG_SUSPENDED_NUM ; i++) - pctl->aon_irq_reg_suspended[i] = - readl_relaxed(pctl->padctl_base + AON_GPIO_EN_REG + OFFSET_PER_REG * i); + for (i = 0 ; i < AON_REG_SUSPENDED_NUM ; i++) + pctl->aon_reg_suspended[i] = readl_relaxed(pctl->padctl_base + + AON_GPO_DOEN_CFG_BASE_REG + + OFFSET_PER_REG * i); return pinctrl_force_sleep(pctl->pctl_dev); } @@ -1684,13 +1686,13 @@ static int __maybe_unused starfive_pinctrl_resume(struct device *dev) struct starfive_pinctrl *pctl = dev_get_drvdata(dev); u8 i; - for (i = 0 ; i < SYS_IRQ_REG_SUSPENDED_NUM ; i++) - writel_relaxed(pctl->sys_irq_reg_suspended[i], - pctl->padctl_base + GPIO_EN + OFFSET_PER_REG * i); + for (i = 0 ; i < SYS_REG_SUSPENDED_NUM ; i++) + writel_relaxed(pctl->sys_reg_suspended[i], + pctl->padctl_base + SYS_GPO_DOEN_CFG_BASE_REG + OFFSET_PER_REG * i); - for (i = 0 ; i < AON_IRQ_REG_SUSPENDED_NUM ; i++) - writel_relaxed(pctl->aon_irq_reg_suspended[i], - pctl->padctl_base + AON_GPIO_EN_REG + OFFSET_PER_REG * i); + for (i = 0 ; i < AON_REG_SUSPENDED_NUM ; i++) + writel_relaxed(pctl->aon_reg_suspended[i], + pctl->padctl_base + AON_GPO_DOEN_CFG_BASE_REG + OFFSET_PER_REG * i); return pinctrl_force_default(pctl->pctl_dev); } diff --git a/drivers/pinctrl/starfive/pinctrl-starfive.h b/drivers/pinctrl/starfive/pinctrl-starfive.h index ed79d72aaea3..19539b814128 100644 --- a/drivers/pinctrl/starfive/pinctrl-starfive.h +++ b/drivers/pinctrl/starfive/pinctrl-starfive.h @@ -17,8 +17,8 @@ #define STARFIVE_USE_SCU BIT(0) -#define SYS_IRQ_REG_SUSPENDED_NUM 11 -#define AON_IRQ_REG_SUSPENDED_NUM 6 +#define SYS_REG_SUSPENDED_NUM 174 +#define AON_REG_SUSPENDED_NUM 37 struct platform_device; @@ -78,8 +78,8 @@ struct starfive_pinctrl { unsigned long enabled; unsigned int trigger[MAX_GPIO]; - u32 sys_irq_reg_suspended[SYS_IRQ_REG_SUSPENDED_NUM]; - u32 aon_irq_reg_suspended[AON_IRQ_REG_SUSPENDED_NUM]; + u32 sys_reg_suspended[SYS_REG_SUSPENDED_NUM]; + u32 aon_reg_suspended[AON_REG_SUSPENDED_NUM]; }; struct starfive_pinctrl_soc_info { |