summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@ozlabs.org>2025-01-31 09:28:39 +0300
committerMadhavan Srinivasan <maddy@linux.ibm.com>2025-02-26 18:46:48 +0300
commit2b0a438d5380c32817e1b2c883bd0494461e9f4f (patch)
treec1f7914006c1046af47e6b418d0bcbd42f365750
parent78099fe1e3b5b72d4627f360b59a3470b1547bad (diff)
downloadlinux-2b0a438d5380c32817e1b2c883bd0494461e9f4f.tar.xz
powerpc/microwatt: Define an idle power-save function
This uses the 'wait' instruction to pause instruction execution when idle until an interrupt occurs. Signed-off-by: Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/Z5xtl1m_Gqc-HLjY@thinks.paulus.ozlabs.org
-rw-r--r--arch/powerpc/platforms/microwatt/setup.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/microwatt/setup.c b/arch/powerpc/platforms/microwatt/setup.c
index 5e1c0997170d..a942c446aeab 100644
--- a/arch/powerpc/platforms/microwatt/setup.c
+++ b/arch/powerpc/platforms/microwatt/setup.c
@@ -34,10 +34,19 @@ static void __init microwatt_setup_arch(void)
microwatt_rng_init();
}
+static void microwatt_idle(void)
+{
+ if (!prep_irq_for_idle_irqsoff())
+ return;
+
+ __asm__ __volatile__ ("wait");
+}
+
define_machine(microwatt) {
.name = "microwatt",
.compatible = "microwatt-soc",
.init_IRQ = microwatt_init_IRQ,
.setup_arch = microwatt_setup_arch,
.progress = udbg_progress,
+ .power_save = microwatt_idle,
};