[U-Boot] [PATCH] armv7: ls102xa: not power down OCRAM1

Biwen Li biwen.li at nxp.com
Mon Sep 23 10:09:32 UTC 2019


- Not power down OCRAM1 for FlexTimer to wakeup
  system with FlexTimer in deep sleep.

- Add errata ID A-008646 for workaround.

Signed-off-by: Biwen Li <biwen.li at nxp.com>
---
 arch/arm/cpu/armv7/ls102xa/ls102xa_psci.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/arm/cpu/armv7/ls102xa/ls102xa_psci.c b/arch/arm/cpu/armv7/ls102xa/ls102xa_psci.c
index bb169aaaf4..acd74c3ba4 100644
--- a/arch/arm/cpu/armv7/ls102xa/ls102xa_psci.c
+++ b/arch/arm/cpu/armv7/ls102xa/ls102xa_psci.c
@@ -68,12 +68,11 @@ static void __secure ls1_deepsleep_irq_cfg(void)
 
 	ippdexpcr0 = in_be32(&rcpm->ippdexpcr0);
 	/*
-	 * Workaround: There is bug of register ippdexpcr1, when read it always
+	 * Workaround of errata A-008646: There is bug of register ippdexpcr1, when read it always
 	 * returns zero, so its value is saved to a scrachpad register to be
 	 * read, that is why we don't read it from register ippdexpcr1 itself.
 	 */
 	ippdexpcr1 = in_le32(&scfg->sparecr[7]);
-	out_be32(&rcpm->ippdexpcr1, ippdexpcr1);
 
 	if (ippdexpcr0 & RCPM_IPPDEXPCR0_ETSEC)
 		pmcintecr |= SCFG_PMCINTECR_ETSECRXG0 |
@@ -87,8 +86,11 @@ static void __secure ls1_deepsleep_irq_cfg(void)
 	if (ippdexpcr1 & RCPM_IPPDEXPCR1_LPUART)
 		pmcintecr |= SCFG_PMCINTECR_LPUART;
 
-	if (ippdexpcr1 & RCPM_IPPDEXPCR1_FLEXTIMER)
+	if (ippdexpcr1 & RCPM_IPPDEXPCR1_FLEXTIMER) {
 		pmcintecr |= SCFG_PMCINTECR_FTM;
+		/* Not power down OCRAM1 */
+		out_be32(&rcpm->ippdexpcr1, ippdexpcr1 | RCPM_IPPDEXPCR1_OCRAM1);
+	}
 
 	/* Always set external IRQ pins as wakeup source */
 	pmcintecr |= SCFG_PMCINTECR_IRQ0 | SCFG_PMCINTECR_IRQ1;
-- 
2.17.1



More information about the U-Boot mailing list