summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2010-01-12 11:42:43 -0600
committerKumar Gala <galak@kernel.crashing.org>2010-01-26 23:17:49 -0600
commit4194b3668a93eee18dd1f7eb1309ca7b05003aa7 (patch)
tree72e0ef1c6a8e895139f530b6c34888f37cf6a4eb
parent797312a15edc9dfb433e6903a75189030e7aaaaa (diff)
downloadu-boot-4194b3668a93eee18dd1f7eb1309ca7b05003aa7.tar.gz
u-boot-4194b3668a93eee18dd1f7eb1309ca7b05003aa7.tar.xz
u-boot-4194b3668a93eee18dd1f7eb1309ca7b05003aa7.zip
Add support to disable cpu's in multicore processors
Add a disable sub-command to the cpu command that allows for disabling cores in multicore processors. This can be useful for systems that are using multicore chips but aren't utilizing all the cores as a way to reduce power and possibly improve performance. Also updated an added missing copyright. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
-rw-r--r--common/cmd_mp.c3
-rw-r--r--cpu/mpc85xx/mp.c8
-rw-r--r--cpu/mpc86xx/mp.c28
-rw-r--r--include/common.h1
4 files changed, 39 insertions, 1 deletions
diff --git a/common/cmd_mp.c b/common/cmd_mp.c
index 71e430362f..d78c20951e 100644
--- a/common/cmd_mp.c
+++ b/common/cmd_mp.c
@@ -46,6 +46,8 @@ cpu_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
cpu_reset(cpuid);
} else if (strncmp(argv[2], "status", 6) == 0) {
cpu_status(cpuid);
+ } else if (strncmp(argv[2], "disable", 7) == 0) {
+ return cpu_disable(cpuid);
} else {
cmd_usage(cmdtp);
return 1;
@@ -86,6 +88,7 @@ U_BOOT_CMD(
"Multiprocessor CPU boot manipulation and release",
"<num> reset - Reset cpu <num>\n"
"cpu <num> status - Status of cpu <num>\n"
+ "cpu <num> disable - Disable cpu <num>\n"
"cpu <num> release <addr> [args] - Release cpu <num> at <addr> with [args]"
#ifdef CPU_ARCH_HELP
"\n"
diff --git a/cpu/mpc85xx/mp.c b/cpu/mpc85xx/mp.c
index 6530cb176b..6ae7f0a72c 100644
--- a/cpu/mpc85xx/mp.c
+++ b/cpu/mpc85xx/mp.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-2009 Freescale Semiconductor, Inc.
+ * Copyright 2008-2010 Freescale Semiconductor, Inc.
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -68,6 +68,12 @@ int cpu_status(int nr)
return 0;
}
+int cpu_disable(int nr)
+{
+ /* dummy function so common/cmd_mp.c will build */
+ return 1;
+}
+
static u8 boot_entry_map[4] = {
0,
BOOT_ENTRY_PIR,
diff --git a/cpu/mpc86xx/mp.c b/cpu/mpc86xx/mp.c
index 2940673c7c..ecdf2fb389 100644
--- a/cpu/mpc86xx/mp.c
+++ b/cpu/mpc86xx/mp.c
@@ -1,3 +1,25 @@
+/*
+ * Copyright 2008-2010 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
#include <common.h>
#include <asm/processor.h>
#include <asm/mmu.h>
@@ -24,6 +46,12 @@ int cpu_status(int nr)
return 0;
}
+int cpu_disable(int nr)
+{
+ /* dummy function so common/cmd_mp.c will build */
+ return 1;
+}
+
int cpu_release(int nr, int argc, char *argv[])
{
/* dummy function so common/cmd_mp.c will build
diff --git a/include/common.h b/include/common.h
index 391790a411..81f2b59dea 100644
--- a/include/common.h
+++ b/include/common.h
@@ -712,6 +712,7 @@ void show_boot_progress(int val);
#ifdef CONFIG_MP
int cpu_status(int nr);
int cpu_reset(int nr);
+int cpu_disable(int nr);
int cpu_release(int nr, int argc, char *argv[]);
#endif