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
This commit is contained in:
Claudiu Beznea 2021-04-15 13:50:00 +03:00 коммит произвёл Nicolas Ferre
Родитель 28eb1d40fe
Коммит 475be50fc1
2 изменённых файлов: 30 добавлений и 0 удалений

Просмотреть файл

@ -13,6 +13,7 @@
#include <soc/at91/at91sam9_ddrsdr.h> #include <soc/at91/at91sam9_ddrsdr.h>
#include <soc/at91/at91sam9_sdramc.h> #include <soc/at91/at91sam9_sdramc.h>
#include <soc/at91/sama7-ddr.h> #include <soc/at91/sama7-ddr.h>
#include <soc/at91/sama7-sfrbu.h>
#define AT91_MEMCTRL_MC 0 #define AT91_MEMCTRL_MC 0
#define AT91_MEMCTRL_SDRAMC 1 #define AT91_MEMCTRL_SDRAMC 1

Просмотреть файл

@ -83,6 +83,29 @@ tmp3 .req r6
.endm .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 .text
.arm .arm
@ -906,6 +929,9 @@ save_mck:
at91_plla_disable at91_plla_disable
/* Enable low power mode for 2.5V regulator. */
at91_2_5V_reg_set_low_power 1
ldr tmp3, .pm_mode ldr tmp3, .pm_mode
cmp tmp3, #AT91_PM_ULP1 cmp tmp3, #AT91_PM_ULP1
beq ulp1_mode beq ulp1_mode
@ -918,6 +944,9 @@ ulp1_mode:
b ulp_exit b ulp_exit
ulp_exit: ulp_exit:
/* Disable low power mode for 2.5V regulator. */
at91_2_5V_reg_set_low_power 0
ldr pmc, .pmc_base ldr pmc, .pmc_base
at91_plla_enable at91_plla_enable