aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/at91/patches-5.10/210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/at91/patches-5.10/210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch')
-rw-r--r--target/linux/at91/patches-5.10/210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch86
1 files changed, 86 insertions, 0 deletions
diff --git a/target/linux/at91/patches-5.10/210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch b/target/linux/at91/patches-5.10/210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch
new file mode 100644
index 0000000000..48638fa75e
--- /dev/null
+++ b/target/linux/at91/patches-5.10/210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch
@@ -0,0 +1,86 @@
+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(+)
+
+diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h
+index 666474088d55..53bdc9000e44 100644
+--- 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
+diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
+index 8b0b8619ee8a..9c9e08fd8300 100644
+--- 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
+--
+2.32.0
+