mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 21:33:00 +00:00
4df9c29bf6
This was added with intial port where OMAP PM support wasn't existing and only simple WFI based hooks were used. This should have been cleaned up while adding the PM support but some how fall through cracks. So remove the cache flush code which is no longer needed now. Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
/*
|
|
* OMAP4 SMP cpu-hotplug support
|
|
*
|
|
* Copyright (C) 2010 Texas Instruments, Inc.
|
|
* Author:
|
|
* Santosh Shilimkar <santosh.shilimkar@ti.com>
|
|
*
|
|
* Platform file needed for the OMAP4 SMP. This file is based on arm
|
|
* realview smp platform.
|
|
* Copyright (c) 2002 ARM Limited.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/errno.h>
|
|
#include <linux/smp.h>
|
|
#include <linux/io.h>
|
|
|
|
#include "omap-wakeupgen.h"
|
|
#include "common.h"
|
|
#include "powerdomain.h"
|
|
|
|
/*
|
|
* platform-specific code to shutdown a CPU
|
|
* Called with IRQs disabled
|
|
*/
|
|
void __ref omap4_cpu_die(unsigned int cpu)
|
|
{
|
|
unsigned int boot_cpu = 0;
|
|
void __iomem *base = omap_get_wakeupgen_base();
|
|
|
|
/*
|
|
* we're ready for shutdown now, so do it
|
|
*/
|
|
if (omap_secure_apis_support()) {
|
|
if (omap_modify_auxcoreboot0(0x0, 0x200) != 0x0)
|
|
pr_err("Secure clear status failed\n");
|
|
} else {
|
|
__raw_writel(0, base + OMAP_AUX_CORE_BOOT_0);
|
|
}
|
|
|
|
|
|
for (;;) {
|
|
/*
|
|
* Enter into low power state
|
|
*/
|
|
omap4_hotplug_cpu(cpu, PWRDM_POWER_OFF);
|
|
|
|
if (omap_secure_apis_support())
|
|
boot_cpu = omap_read_auxcoreboot0();
|
|
else
|
|
boot_cpu =
|
|
__raw_readl(base + OMAP_AUX_CORE_BOOT_0) >> 5;
|
|
|
|
if (boot_cpu == smp_processor_id()) {
|
|
/*
|
|
* OK, proper wakeup, we're done
|
|
*/
|
|
break;
|
|
}
|
|
pr_debug("CPU%u: spurious wakeup call\n", cpu);
|
|
}
|
|
}
|