root/arch/arm/mach-omap2/omap-hotplug.c

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

DEFINITIONS

This source file includes following definitions.
  1. omap4_cpu_die
  2. omap4_cpu_kill

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * OMAP4 SMP cpu-hotplug support
   4  *
   5  * Copyright (C) 2010 Texas Instruments, Inc.
   6  * Author:
   7  *      Santosh Shilimkar <santosh.shilimkar@ti.com>
   8  *
   9  * Platform file needed for the OMAP4 SMP. This file is based on arm
  10  * realview smp platform.
  11  * Copyright (c) 2002 ARM Limited.
  12  */
  13 
  14 #include <linux/kernel.h>
  15 #include <linux/errno.h>
  16 #include <linux/smp.h>
  17 #include <linux/io.h>
  18 
  19 #include "omap-wakeupgen.h"
  20 #include "common.h"
  21 #include "powerdomain.h"
  22 
  23 /*
  24  * platform-specific code to shutdown a CPU
  25  * Called with IRQs disabled
  26  */
  27 void omap4_cpu_die(unsigned int cpu)
  28 {
  29         unsigned int boot_cpu = 0;
  30         void __iomem *base = omap_get_wakeupgen_base();
  31 
  32         /*
  33          * we're ready for shutdown now, so do it
  34          */
  35         if (omap_secure_apis_support()) {
  36                 if (omap_modify_auxcoreboot0(0x0, 0x200) != 0x0)
  37                         pr_err("Secure clear status failed\n");
  38         } else {
  39                 writel_relaxed(0, base + OMAP_AUX_CORE_BOOT_0);
  40         }
  41 
  42 
  43         for (;;) {
  44                 /*
  45                  * Enter into low power state
  46                  */
  47                 omap4_hotplug_cpu(cpu, PWRDM_POWER_OFF);
  48 
  49                 if (omap_secure_apis_support())
  50                         boot_cpu = omap_read_auxcoreboot0() >> 9;
  51                 else
  52                         boot_cpu =
  53                                 readl_relaxed(base + OMAP_AUX_CORE_BOOT_0) >> 5;
  54 
  55                 if (boot_cpu == smp_processor_id()) {
  56                         /*
  57                          * OK, proper wakeup, we're done
  58                          */
  59                         break;
  60                 }
  61                 pr_debug("CPU%u: spurious wakeup call\n", cpu);
  62         }
  63 }
  64 
  65 /* Needed by kexec and platform_can_cpu_hotplug() */
  66 int omap4_cpu_kill(unsigned int cpu)
  67 {
  68         return 1;
  69 }

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