ath25: switch default kernel to 5.15
[openwrt/staging/ldir.git] / target / linux / at91 / patches-5.10 / 210-ARM-at91-pm-add-support-for-2.5V-LDO-regulator-contr.patch
1 From b2073cc043612bf95b115bd94103cfb2936f05bf Mon Sep 17 00:00:00 2001
2 From: Claudiu Beznea <claudiu.beznea@microchip.com>
3 Date: Thu, 15 Apr 2021 13:50:00 +0300
4 Subject: [PATCH 210/247] ARM: at91: pm: add support for 2.5V LDO regulator
5 control
6
7 Add support to disable/enable 2.5V LDO regulator when entering/exiting
8 any ULP mode.
9
10 Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
11 Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
12 Link: https://lore.kernel.org/r/20210415105010.569620-15-claudiu.beznea@microchip.com
13 ---
14 arch/arm/mach-at91/pm.h | 1 +
15 arch/arm/mach-at91/pm_suspend.S | 29 +++++++++++++++++++++++++++++
16 2 files changed, 30 insertions(+)
17
18 --- a/arch/arm/mach-at91/pm.h
19 +++ b/arch/arm/mach-at91/pm.h
20 @@ -13,6 +13,7 @@
21 #include <soc/at91/at91sam9_ddrsdr.h>
22 #include <soc/at91/at91sam9_sdramc.h>
23 #include <soc/at91/sama7-ddr.h>
24 +#include <soc/at91/sama7-sfrbu.h>
25
26 #define AT91_MEMCTRL_MC 0
27 #define AT91_MEMCTRL_SDRAMC 1
28 --- a/arch/arm/mach-at91/pm_suspend.S
29 +++ b/arch/arm/mach-at91/pm_suspend.S
30 @@ -83,6 +83,29 @@ tmp3 .req r6
31
32 .endm
33
34 +/**
35 + * Set state for 2.5V low power regulator
36 + * @ena: 0 - disable regulator
37 + * 1 - enable regulator
38 + *
39 + * Side effects: overwrites r7, r8, r9, r10
40 + */
41 + .macro at91_2_5V_reg_set_low_power ena
42 +#ifdef CONFIG_SOC_SAMA7
43 + ldr r7, .sfrbu
44 + mov r8, #\ena
45 + ldr r9, [r7, #AT91_SFRBU_25LDOCR]
46 + orr r9, r9, #AT91_SFRBU_25LDOCR_LP
47 + cmp r8, #1
48 + beq lp_done_\ena
49 + bic r9, r9, #AT91_SFRBU_25LDOCR_LP
50 +lp_done_\ena:
51 + ldr r10, =AT91_SFRBU_25LDOCR_LDOANAKEY
52 + orr r9, r9, r10
53 + str r9, [r7, #AT91_SFRBU_25LDOCR]
54 +#endif
55 + .endm
56 +
57 .text
58
59 .arm
60 @@ -906,6 +929,9 @@ save_mck:
61
62 at91_plla_disable
63
64 + /* Enable low power mode for 2.5V regulator. */
65 + at91_2_5V_reg_set_low_power 1
66 +
67 ldr tmp3, .pm_mode
68 cmp tmp3, #AT91_PM_ULP1
69 beq ulp1_mode
70 @@ -918,6 +944,9 @@ ulp1_mode:
71 b ulp_exit
72
73 ulp_exit:
74 + /* Disable low power mode for 2.5V regulator. */
75 + at91_2_5V_reg_set_low_power 0
76 +
77 ldr pmc, .pmc_base
78
79 at91_plla_enable