powerpc/microwatt: Define an idle power-save function
authorPaul Mackerras <paulus@ozlabs.org>
Fri, 31 Jan 2025 06:28:39 +0000 (17:28 +1100)
committerMadhavan Srinivasan <maddy@linux.ibm.com>
Wed, 26 Feb 2025 15:46:48 +0000 (21:16 +0530)
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
arch/powerpc/platforms/microwatt/setup.c

index 5e1c0997170dc2a3abd90ff84c64377bf266481d..a942c446aeab858da7e65cb3a6eb4989332e83fc 100644 (file)
@@ -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,
 };