root/arch/powerpc/platforms/44x/idle.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ppc44x_idle
  2. ppc44x_idle_init
  3. idle_param

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright 2008 IBM Corp. 
   4  *
   5  * Based on arch/powerpc/platforms/pasemi/idle.c: 
   6  * Copyright (C) 2006-2007 PA Semi, Inc
   7  *
   8  * Added by: Jerone Young <jyoung5@us.ibm.com>
   9  */
  10 
  11 #include <linux/of.h>
  12 #include <linux/kernel.h>
  13 #include <asm/machdep.h>
  14 
  15 static int mode_spin;
  16 
  17 static void ppc44x_idle(void)
  18 {
  19         unsigned long msr_save;
  20 
  21         msr_save = mfmsr();
  22         /* set wait state MSR */
  23         mtmsr(msr_save|MSR_WE|MSR_EE|MSR_CE|MSR_DE);
  24         isync();
  25         /* return to initial state */
  26         mtmsr(msr_save);
  27         isync();
  28 }
  29 
  30 int __init ppc44x_idle_init(void)
  31 {
  32         if (!mode_spin) {
  33                 /* If we are not setting spin mode 
  34                    then we set to wait mode */
  35                 ppc_md.power_save = &ppc44x_idle;
  36         }
  37 
  38         return 0;
  39 }
  40 
  41 arch_initcall(ppc44x_idle_init);
  42 
  43 static int __init idle_param(char *p)
  44 { 
  45 
  46         if (!strcmp("spin", p)) {
  47                 mode_spin = 1;
  48                 ppc_md.power_save = NULL;
  49         }
  50 
  51         return 0;
  52 }
  53 
  54 early_param("idle", idle_param);

/* [<][>][^][v][top][bottom][index][help] */