]> 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)
committerClaudiu Beznea <claudiu.beznea@tuxon.dev>
Sat, 30 Aug 2025 08:38:55 +0000 (11:38 +0300)
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>
arch/arm/mach-at91/pm_suspend.S

index e23b868340965634d7b7d2fc549be1c6abd61ae9..7e6c94f8edeef912ee2c49f91c820ec1c0d0c699 100644 (file)
@@ -904,7 +904,7 @@ e_done:
 /**
  * at91_mckx_ps_restore: restore MCKx settings
  *
- * Side effects: overwrites tmp1, tmp2
+ * Side effects: overwrites tmp1, tmp2 and tmp3
  */
 .macro at91_mckx_ps_restore
 #ifdef CONFIG_SOC_SAMA7
@@ -980,7 +980,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