]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ARM: at91: pm: fix MCKx restore routine
authorNicolas Ferre <nicolas.ferre@microchip.com>
Wed, 27 Aug 2025 14:54:26 +0000 (16:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2025 09:56:27 +0000 (11:56 +0200)
[ Upstream commit 296302d3d81360e09fa956e9be9edc8223b69a12 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/arm/mach-at91/pm_suspend.S

index e4904faf17532ee524fe222ad2c182962db741a4..0af2598899fc5e61f24e035651879a65bdb923fd 100644 (file)
@@ -868,7 +868,7 @@ e_done:
 /**
  * at91_mckx_ps_restore: restore MCK1..4 settings
  *
- * Side effects: overwrites tmp1, tmp2
+ * Side effects: overwrites tmp1, tmp2 and tmp3
  */
 .macro at91_mckx_ps_restore
 #ifdef CONFIG_SOC_SAMA7
@@ -912,7 +912,7 @@ r_ps:
        bic     tmp3, tmp3, #AT91_PMC_MCR_V2_ID_MSK
        orr     tmp3, tmp3, tmp1
        orr     tmp3, tmp3, #AT91_PMC_MCR_V2_CMD
-       str     tmp2, [pmc, #AT91_PMC_MCR_V2]
+       str     tmp3, [pmc, #AT91_PMC_MCR_V2]
 
        wait_mckrdy tmp1