mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 16:31:13 +00:00
80 lines
2.0 KiB
Diff
80 lines
2.0 KiB
Diff
|
From b2073cc043612bf95b115bd94103cfb2936f05bf Mon Sep 17 00:00:00 2001
|
||
|
From: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||
|
Date: Thu, 15 Apr 2021 13:50:00 +0300
|
||
|
Subject: [PATCH 210/247] ARM: at91: pm: add support for 2.5V LDO regulator
|
||
|
control
|
||
|
|
||
|
Add support to disable/enable 2.5V LDO regulator when entering/exiting
|
||
|
any ULP mode.
|
||
|
|
||
|
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||
|
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
|
||
|
Link: https://lore.kernel.org/r/20210415105010.569620-15-claudiu.beznea@microchip.com
|
||
|
---
|
||
|
arch/arm/mach-at91/pm.h | 1 +
|
||
|
arch/arm/mach-at91/pm_suspend.S | 29 +++++++++++++++++++++++++++++
|
||
|
2 files changed, 30 insertions(+)
|
||
|
|
||
|
--- a/arch/arm/mach-at91/pm.h
|
||
|
+++ b/arch/arm/mach-at91/pm.h
|
||
|
@@ -13,6 +13,7 @@
|
||
|
#include <soc/at91/at91sam9_ddrsdr.h>
|
||
|
#include <soc/at91/at91sam9_sdramc.h>
|
||
|
#include <soc/at91/sama7-ddr.h>
|
||
|
+#include <soc/at91/sama7-sfrbu.h>
|
||
|
|
||
|
#define AT91_MEMCTRL_MC 0
|
||
|
#define AT91_MEMCTRL_SDRAMC 1
|
||
|
--- a/arch/arm/mach-at91/pm_suspend.S
|
||
|
+++ b/arch/arm/mach-at91/pm_suspend.S
|
||
|
@@ -83,6 +83,29 @@ tmp3 .req r6
|
||
|
|
||
|
.endm
|
||
|
|
||
|
+/**
|
||
|
+ * Set state for 2.5V low power regulator
|
||
|
+ * @ena: 0 - disable regulator
|
||
|
+ * 1 - enable regulator
|
||
|
+ *
|
||
|
+ * Side effects: overwrites r7, r8, r9, r10
|
||
|
+ */
|
||
|
+ .macro at91_2_5V_reg_set_low_power ena
|
||
|
+#ifdef CONFIG_SOC_SAMA7
|
||
|
+ ldr r7, .sfrbu
|
||
|
+ mov r8, #\ena
|
||
|
+ ldr r9, [r7, #AT91_SFRBU_25LDOCR]
|
||
|
+ orr r9, r9, #AT91_SFRBU_25LDOCR_LP
|
||
|
+ cmp r8, #1
|
||
|
+ beq lp_done_\ena
|
||
|
+ bic r9, r9, #AT91_SFRBU_25LDOCR_LP
|
||
|
+lp_done_\ena:
|
||
|
+ ldr r10, =AT91_SFRBU_25LDOCR_LDOANAKEY
|
||
|
+ orr r9, r9, r10
|
||
|
+ str r9, [r7, #AT91_SFRBU_25LDOCR]
|
||
|
+#endif
|
||
|
+ .endm
|
||
|
+
|
||
|
.text
|
||
|
|
||
|
.arm
|
||
|
@@ -906,6 +929,9 @@ save_mck:
|
||
|
|
||
|
at91_plla_disable
|
||
|
|
||
|
+ /* Enable low power mode for 2.5V regulator. */
|
||
|
+ at91_2_5V_reg_set_low_power 1
|
||
|
+
|
||
|
ldr tmp3, .pm_mode
|
||
|
cmp tmp3, #AT91_PM_ULP1
|
||
|
beq ulp1_mode
|
||
|
@@ -918,6 +944,9 @@ ulp1_mode:
|
||
|
b ulp_exit
|
||
|
|
||
|
ulp_exit:
|
||
|
+ /* Disable low power mode for 2.5V regulator. */
|
||
|
+ at91_2_5V_reg_set_low_power 0
|
||
|
+
|
||
|
ldr pmc, .pmc_base
|
||
|
|
||
|
at91_plla_enable
|