From: Hal Feng Date: Fri, 13 Jan 2023 08:35:54 +0000 (+0800) Subject: pinctrl: starfive: Save all register values when suspending and restore them when... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=52f8f570343a9380672719171044560d6514d74a;p=platform%2Fkernel%2Flinux-starfive.git 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 --- 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 {