Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: at91: pm: fix MCKx restore routine

The at91_mckx_ps_restore() assembly function is responsible for setting
back MCKx system bus clocks after exiting low power modes.

Fix a typo and use tmp3 variable instead of tmp2 to correctly set MCKx
to previously saved state.
Tmp2 was used without the needed changes in CSS and DIV. Moreover the
required bit 7, telling that MCR register's content is to be changed
(CMD/write), was not set.

Fix function comment to match tmp variables actually used.

Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Fixes: 28eb1d40fe57 ("ARM: at91: pm: add support for MCK1..4 save/restore for ulp modes")
Link: https://lore.kernel.org/r/20250827145427.46819-3-nicolas.ferre@microchip.com
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
[claudiu.beznea: s/sate/state in commit description]
Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>

authored by

Nicolas Ferre and committed by
Claudiu Beznea
296302d3 6a3f8901

+2 -2
+2 -2
arch/arm/mach-at91/pm_suspend.S
··· 904 904 /** 905 905 * at91_mckx_ps_restore: restore MCKx settings 906 906 * 907 - * Side effects: overwrites tmp1, tmp2 907 + * Side effects: overwrites tmp1, tmp2 and tmp3 908 908 */ 909 909 .macro at91_mckx_ps_restore 910 910 #ifdef CONFIG_SOC_SAMA7 ··· 980 980 bic tmp3, tmp3, #AT91_PMC_MCR_V2_ID_MSK 981 981 orr tmp3, tmp3, tmp1 982 982 orr tmp3, tmp3, #AT91_PMC_MCR_V2_CMD 983 - str tmp2, [pmc, #AT91_PMC_MCR_V2] 983 + str tmp3, [pmc, #AT91_PMC_MCR_V2] 984 984 985 985 wait_mckrdy tmp1 986 986