* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
@ 2009-07-21 10:47 Poonam Aggrwal
2009-07-21 11:52 ` Wolfgang Denk
2009-07-28 21:08 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Scott Wood
0 siblings, 2 replies; 10+ messages in thread
From: Poonam Aggrwal @ 2009-07-21 10:47 UTC (permalink / raw)
To: u-boot
The number of CPUs are getting detected dynamically by checking the processor SVR value.
Also removed CONFIG_NUM_CPUS references from all the platforms with 85xx/86xx processors.
This can help to use the same u-boot image across the platforms.
Also revamped and corrected few Freescale Copyright messages.
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
---
common/cmd_mp.c | 6 +-
cpu/mpc85xx/cpu.c | 111 ++++++++++++++++++++++++++---------------
cpu/mpc85xx/mp.c | 6 +-
cpu/mpc85xx/release.S | 25 +++++++++-
cpu/mpc85xx/speed.c | 4 +-
cpu/mpc86xx/cpu.c | 44 ++++++++++++++--
cpu/mpc86xx/cpu_init.c | 2 +-
include/asm-ppc/config.h | 41 +++++++++++++++
include/asm-ppc/global_data.h | 4 ++
include/asm-ppc/processor.h | 5 +-
include/common.h | 2 +
include/configs/MPC8572DS.h | 1 -
include/configs/MPC8610HPCD.h | 1 -
include/configs/MPC8641HPCN.h | 1 -
include/configs/P2020DS.h | 1 -
include/configs/XPEDITE5170.h | 1 -
include/configs/XPEDITE5370.h | 1 -
include/configs/sbc8641d.h | 1 -
include/e500.h | 6 +--
lib_ppc/board.c | 4 ++
lib_ppc/bootm.c | 2 +-
21 files changed, 197 insertions(+), 72 deletions(-)
diff --git a/common/cmd_mp.c b/common/cmd_mp.c
index faa8700..4f2c639 100644
--- a/common/cmd_mp.c
+++ b/common/cmd_mp.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Freescale Semiconductor, Inc.
+ * Copyright (C) 2008-2009 Freescale Semiconductor, Inc. All rights reserved.
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -34,9 +34,9 @@ cpu_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
}
cpuid = simple_strtoul(argv[1], NULL, 10);
- if (cpuid >= CONFIG_NUM_CPUS) {
+ if (cpuid >= cpu_numcores()) {
printf ("Core num: %lu is out of range[0..%d]\n",
- cpuid, CONFIG_NUM_CPUS - 1);
+ cpuid, cpu_numcores() - 1);
return 1;
}
diff --git a/cpu/mpc85xx/cpu.c b/cpu/mpc85xx/cpu.c
index 28c6119..ff7bff1 100644
--- a/cpu/mpc85xx/cpu.c
+++ b/cpu/mpc85xx/cpu.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2004,2007,2008 Freescale Semiconductor, Inc.
+ * Copyright(C) 2004,2007-2009 Freescale Semiconductor, Inc. All rights reserved.
* (C) Copyright 2002, 2003 Motorola Inc.
* Xianghua Xiao (X.Xiao at motorola.com)
*
@@ -38,37 +38,37 @@
DECLARE_GLOBAL_DATA_PTR;
struct cpu_type cpu_type_list [] = {
- CPU_TYPE_ENTRY(8533, 8533),
- CPU_TYPE_ENTRY(8533, 8533_E),
- CPU_TYPE_ENTRY(8535, 8535),
- CPU_TYPE_ENTRY(8535, 8535_E),
- CPU_TYPE_ENTRY(8536, 8536),
- CPU_TYPE_ENTRY(8536, 8536_E),
- CPU_TYPE_ENTRY(8540, 8540),
- CPU_TYPE_ENTRY(8541, 8541),
- CPU_TYPE_ENTRY(8541, 8541_E),
- CPU_TYPE_ENTRY(8543, 8543),
- CPU_TYPE_ENTRY(8543, 8543_E),
- CPU_TYPE_ENTRY(8544, 8544),
- CPU_TYPE_ENTRY(8544, 8544_E),
- CPU_TYPE_ENTRY(8545, 8545),
- CPU_TYPE_ENTRY(8545, 8545_E),
- CPU_TYPE_ENTRY(8547, 8547_E),
- CPU_TYPE_ENTRY(8548, 8548),
- CPU_TYPE_ENTRY(8548, 8548_E),
- CPU_TYPE_ENTRY(8555, 8555),
- CPU_TYPE_ENTRY(8555, 8555_E),
- CPU_TYPE_ENTRY(8560, 8560),
- CPU_TYPE_ENTRY(8567, 8567),
- CPU_TYPE_ENTRY(8567, 8567_E),
- CPU_TYPE_ENTRY(8568, 8568),
- CPU_TYPE_ENTRY(8568, 8568_E),
- CPU_TYPE_ENTRY(8569, 8569),
- CPU_TYPE_ENTRY(8569, 8569_E),
- CPU_TYPE_ENTRY(8572, 8572),
- CPU_TYPE_ENTRY(8572, 8572_E),
- CPU_TYPE_ENTRY(P2020, P2020),
- CPU_TYPE_ENTRY(P2020, P2020_E),
+ CPU_TYPE_ENTRY(8533, 8533, 1),
+ CPU_TYPE_ENTRY(8533, 8533_E, 1),
+ CPU_TYPE_ENTRY(8535, 8535, 1),
+ CPU_TYPE_ENTRY(8535, 8535_E, 1),
+ CPU_TYPE_ENTRY(8536, 8536, 1),
+ CPU_TYPE_ENTRY(8536, 8536_E, 1),
+ CPU_TYPE_ENTRY(8540, 8540, 1),
+ CPU_TYPE_ENTRY(8541, 8541, 1),
+ CPU_TYPE_ENTRY(8541, 8541_E, 1),
+ CPU_TYPE_ENTRY(8543, 8543, 1),
+ CPU_TYPE_ENTRY(8543, 8543_E, 1),
+ CPU_TYPE_ENTRY(8544, 8544, 1),
+ CPU_TYPE_ENTRY(8544, 8544_E, 1),
+ CPU_TYPE_ENTRY(8545, 8545, 1),
+ CPU_TYPE_ENTRY(8545, 8545_E, 1),
+ CPU_TYPE_ENTRY(8547, 8547_E, 1),
+ CPU_TYPE_ENTRY(8548, 8548, 1),
+ CPU_TYPE_ENTRY(8548, 8548_E, 1),
+ CPU_TYPE_ENTRY(8555, 8555, 1),
+ CPU_TYPE_ENTRY(8555, 8555_E, 1),
+ CPU_TYPE_ENTRY(8560, 8560, 1),
+ CPU_TYPE_ENTRY(8567, 8567, 1),
+ CPU_TYPE_ENTRY(8567, 8567_E, 1),
+ CPU_TYPE_ENTRY(8568, 8568, 1),
+ CPU_TYPE_ENTRY(8568, 8568_E, 1),
+ CPU_TYPE_ENTRY(8569, 8569, 1),
+ CPU_TYPE_ENTRY(8569, 8569_E, 1),
+ CPU_TYPE_ENTRY(8572, 8572, 2),
+ CPU_TYPE_ENTRY(8572, 8572_E, 2),
+ CPU_TYPE_ENTRY(P2020, P2020, 2),
+ CPU_TYPE_ENTRY(P2020, P2020_E, 2),
};
struct cpu_type *identify_cpu(u32 ver)
@@ -81,6 +81,26 @@ struct cpu_type *identify_cpu(u32 ver)
return NULL;
}
+int cpu_numcores() {
+ struct cpu_type *cpu;
+ cpu = gd->cpu;
+ return cpu->num_cores;
+}
+
+
+int probecpu (void)
+{
+ uint svr;
+ uint ver;
+
+ svr = get_svr();
+ ver = SVR_SOC_VER(svr);
+
+ gd->cpu = identify_cpu(ver);
+
+ return 0;
+}
+
int checkcpu (void)
{
sys_info_t sysinfo;
@@ -100,22 +120,31 @@ int checkcpu (void)
int i;
svr = get_svr();
- ver = SVR_SOC_VER(svr);
major = SVR_MAJ(svr);
#ifdef CONFIG_MPC8536
major &= 0x7; /* the msb of this nibble is a mfg code */
#endif
minor = SVR_MIN(svr);
-#if (CONFIG_NUM_CPUS > 1)
- volatile ccsr_pic_t *pic = (void *)(CONFIG_SYS_MPC85xx_PIC_ADDR);
- printf("CPU%d: ", pic->whoami);
-#else
- puts("CPU: ");
+#ifndef CONFIG_MP
+ if (cpu_numcores() > 1)
+ puts("#############################################\n"
+ "The system is detected to be MULTICORE,\n"
+ "but u-boot is built with UNI-CORE\n"
+ "To enable mutlticore Build set CONFIG_MP\n"
+ "#############################################\n\n");
#endif
- cpu = identify_cpu(ver);
- if (cpu) {
+ if (cpu_numcores() > 1) {
+ volatile ccsr_pic_t *pic = (void *)(CONFIG_SYS_MPC85xx_PIC_ADDR);
+ printf("CPU%d: ", pic->whoami);
+ }
+ else
+ puts("CPU: ");
+
+ cpu = gd->cpu;
+
+ if (cpu->name) {
puts(cpu->name);
if (IS_E_PROCESSOR(svr))
@@ -150,7 +179,7 @@ int checkcpu (void)
get_sys_info(&sysinfo);
puts("Clock Configuration:");
- for (i = 0; i < CONFIG_NUM_CPUS; i++) {
+ for (i = 0; i < cpu_numcores(); i++) {
if (!(i & 3))
printf ("\n ");
printf("CPU%d:%-4s MHz, ",
diff --git a/cpu/mpc85xx/mp.c b/cpu/mpc85xx/mp.c
index 76f02a4..9f1f9d7 100644
--- a/cpu/mpc85xx/mp.c
+++ b/cpu/mpc85xx/mp.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Freescale Semiconductor.
+ * Copyright (C) 2008-2009 Freescale Semiconductor, Inc. All rights reserved.
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -157,7 +157,7 @@ static void pq3_mp_up(unsigned long bootpg)
out_be32(&gur->devdisr, devdisr);
/* release the hounds */
- up = ((1 << CONFIG_NUM_CPUS) - 1);
+ up = ((1 << cpu_numcores()) - 1);
bpcr = in_be32(&ecm->eebpcr);
bpcr |= (up << 24);
out_be32(&ecm->eebpcr, bpcr);
@@ -167,7 +167,7 @@ static void pq3_mp_up(unsigned long bootpg)
/* wait for everyone */
while (timeout) {
int i;
- for (i = 0; i < CONFIG_NUM_CPUS; i++) {
+ for (i = 0; i < cpu_numcores(); i++) {
if (table[i * NUM_BOOT_ENTRY + BOOT_ENTRY_ADDR_LOWER])
cpu_up_mask |= (1 << i);
};
diff --git a/cpu/mpc85xx/release.S b/cpu/mpc85xx/release.S
index fbefc2c..e553079 100644
--- a/cpu/mpc85xx/release.S
+++ b/cpu/mpc85xx/release.S
@@ -1,3 +1,26 @@
+/*
+ * Copyright (C) 2008-2009 Freescale Semiconductor, Inc. All rights reserved.
+ * Kumar Gala <kumar.gala@freescale.com>
+ *
+ * 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 <config.h>
#include <mpc85xx.h>
#include <version.h>
@@ -203,7 +226,7 @@ __secondary_start_page:
.align L1_CACHE_SHIFT
.globl __spin_table
__spin_table:
- .space CONFIG_NUM_CPUS*ENTRY_SIZE
+ .space CONFIG_MAX_CPUS*ENTRY_SIZE
/* Fill in the empty space. The actual reset vector is
* the last word of the page */
diff --git a/cpu/mpc85xx/speed.c b/cpu/mpc85xx/speed.c
index 286b6b2..ea7afad 100644
--- a/cpu/mpc85xx/speed.c
+++ b/cpu/mpc85xx/speed.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2004, 2007-2009 Freescale Semiconductor Inc.
+ * Copyright (C) 2004, 2007-2009 Freescale Semiconductor, Inc. All rights reserved.
* (C) Copyright 2003 Motorola Inc.
* Xianghua Xiao, (X.Xiao at motorola.com)
*
@@ -51,7 +51,7 @@ void get_sys_info (sys_info_t * sysInfo)
/* Divide before multiply to avoid integer
* overflow for processor speeds above 2GHz */
half_freqSystemBus = sysInfo->freqSystemBus/2;
- for (i = 0; i < CONFIG_NUM_CPUS; i++) {
+ for (i = 0; i < cpu_numcores(); i++) {
e500_ratio = ((gur->porpllsr) >> (i * 8 + 16)) & 0x3f;
sysInfo->freqProcessor[i] = e500_ratio * half_freqSystemBus;
}
diff --git a/cpu/mpc86xx/cpu.c b/cpu/mpc86xx/cpu.c
index bc64286..37fbd3d 100644
--- a/cpu/mpc86xx/cpu.c
+++ b/cpu/mpc86xx/cpu.c
@@ -1,4 +1,5 @@
/*
+ * Copyright(C) 2009 Freescale Semiconductor, Inc.
* Copyright 2006 Freescale Semiconductor
* Jeff Brown
* Srikanth Srinivasan (srikanth.srinivasan at freescale.com)
@@ -31,10 +32,12 @@
#include <tsec.h>
#include <asm/fsl_law.h>
+DECLARE_GLOBAL_DATA_PTR;
+
struct cpu_type cpu_type_list [] = {
- CPU_TYPE_ENTRY(8610, 8610),
- CPU_TYPE_ENTRY(8641, 8641),
- CPU_TYPE_ENTRY(8641D, 8641D),
+ CPU_TYPE_ENTRY(8610, 8610, 1),
+ CPU_TYPE_ENTRY(8641, 8641, 2),
+ CPU_TYPE_ENTRY(8641D, 8641D, 2),
};
struct cpu_type *identify_cpu(u32 ver)
@@ -47,6 +50,25 @@ struct cpu_type *identify_cpu(u32 ver)
return NULL;
}
+int probecpu (void)
+{
+ uint svr;
+ uint ver;
+
+ svr = get_svr();
+ ver = SVR_SOC_VER(svr);
+
+ gd->cpu = identify_cpu(ver);
+
+ return 0;
+}
+
+int cpu_numcores() {
+ struct cpu_type *cpu;
+ cpu = gd->cpu;
+ return cpu->num_cores;
+}
+
/*
* Default board reset function
*/
@@ -66,9 +88,9 @@ checkcpu(void)
uint ver;
uint major, minor;
char buf1[32], buf2[32];
+ struct cpu_type *cpu;
volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
volatile ccsr_gur_t *gur = &immap->im_gur;
- struct cpu_type *cpu;
uint msscr0 = mfspr(MSSCR0);
svr = get_svr();
@@ -76,10 +98,20 @@ checkcpu(void)
major = SVR_MAJ(svr);
minor = SVR_MIN(svr);
+#ifndef CONFIG_MP
+ if (cpu_numcores() > 1)
+ puts("#############################################\n"
+ "The system is detected to be MULTICORE,\n"
+ "but u-boot is built with UNI-CORE\n"
+ "To enable mutlticore Build set CONFIG_MP\n"
+ "#############################################\n\n");
+#endif
+
puts("CPU: ");
- cpu = identify_cpu(ver);
- if (cpu) {
+ cpu = gd->cpu;
+
+ if (cpu->name) {
puts(cpu->name);
} else {
puts("Unknown");
diff --git a/cpu/mpc86xx/cpu_init.c b/cpu/mpc86xx/cpu_init.c
index 341e815..c8b499c 100644
--- a/cpu/mpc86xx/cpu_init.c
+++ b/cpu/mpc86xx/cpu_init.c
@@ -129,7 +129,7 @@ void cpu_init_f(void)
*/
int cpu_init_r(void)
{
-#if (CONFIG_NUM_CPUS > 1)
+#if defined(CONFIG_MP)
setup_mp();
#endif
return 0;
diff --git a/include/asm-ppc/config.h b/include/asm-ppc/config.h
index ca143c7..b799a22 100644
--- a/include/asm-ppc/config.h
+++ b/include/asm-ppc/config.h
@@ -37,4 +37,45 @@
#endif
#endif
+#if defined(CONFIG_MPC8533)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8535)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8536)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8540)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8541)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8543)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8544)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8545)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8547)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8548)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8555)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8560)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8567)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8568)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8569)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8572)
+#define CONFIG_MAX_CPUS 2
+#elif defined(CONFIG_P2020)
+#define CONFIG_MAX_CPUS 2
+
+#elif defined(CONFIG_MPC8610)
+#define CONFIG_MAX_CPUS 1
+#elif defined(CONFIG_MPC8641)
+#define CONFIG_MAX_CPUS 2
+#endif
+
#endif /* _ASM_CONFIG_H_ */
diff --git a/include/asm-ppc/global_data.h b/include/asm-ppc/global_data.h
index 244c161..aa531b9 100644
--- a/include/asm-ppc/global_data.h
+++ b/include/asm-ppc/global_data.h
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2009 Freescale Semiconductor, Inc. All rights reserved.
* (C) Copyright 2002
* Wolfgang Denk, DENX Software Engineering, wd at denx.de.
*
@@ -92,6 +93,9 @@ typedef struct global_data {
#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
u32 lbc_clk;
#endif /* CONFIG_MPC85xx || CONFIG_MPC86xx */
+#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
+ void *cpu;
+#endif
#if defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
u32 i2c1_clk;
u32 i2c2_clk;
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index 65546ad..a060697 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -1017,13 +1017,14 @@ n:
struct cpu_type {
char name[15];
u32 soc_ver;
+ u32 num_cores;
};
struct cpu_type *identify_cpu(u32 ver);
#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
-#define CPU_TYPE_ENTRY(n, v) \
- { .name = #n, .soc_ver = SVR_##v, }
+#define CPU_TYPE_ENTRY(n, v, nc) \
+ { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), }
#else
#if defined(CONFIG_MPC83xx)
#define CPU_TYPE_ENTRY(x) {#x, SPR_##x}
diff --git a/include/common.h b/include/common.h
index 6284b8a..ab5b4f8 100644
--- a/include/common.h
+++ b/include/common.h
@@ -439,6 +439,8 @@ void ppcDWstore(unsigned int *addr, unsigned int *value);
#endif
/* $(CPU)/cpu.c */
+int cpu_numcores (void);
+int probecpu (void);
int checkcpu (void);
int checkicache (void);
int checkdcache (void);
diff --git a/include/configs/MPC8572DS.h b/include/configs/MPC8572DS.h
index 6f1b1a4..d542510 100644
--- a/include/configs/MPC8572DS.h
+++ b/include/configs/MPC8572DS.h
@@ -34,7 +34,6 @@
#define CONFIG_MPC8572 1
#define CONFIG_MPC8572DS 1
#define CONFIG_MP 1 /* support multiple processors */
-#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
#define CONFIG_FSL_ELBC 1 /* Has Enhanced localbus controller */
#define CONFIG_PCI 1 /* Enable PCI/PCIE */
diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h
index 1091043..45932ef 100644
--- a/include/configs/MPC8610HPCD.h
+++ b/include/configs/MPC8610HPCD.h
@@ -17,7 +17,6 @@
#define CONFIG_MPC86xx 1 /* MPC86xx */
#define CONFIG_MPC8610 1 /* MPC8610 specific */
#define CONFIG_MPC8610HPCD 1 /* MPC8610HPCD board specific */
-#define CONFIG_NUM_CPUS 1 /* Number of CPUs in the system */
#define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
#define CONFIG_FSL_DIU_FB 1 /* FSL DIU */
diff --git a/include/configs/MPC8641HPCN.h b/include/configs/MPC8641HPCN.h
index 035874b..a878850 100644
--- a/include/configs/MPC8641HPCN.h
+++ b/include/configs/MPC8641HPCN.h
@@ -37,7 +37,6 @@
#define CONFIG_MPC8641 1 /* MPC8641 specific */
#define CONFIG_MPC8641HPCN 1 /* MPC8641HPCN board specific */
#define CONFIG_MP 1 /* support multiple processors */
-#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
#define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
/*#define CONFIG_PHYS_64BIT 1*/ /* Place devices in 36-bit space */
#define CONFIG_ADDR_MAP 1 /* Use addr map */
diff --git a/include/configs/P2020DS.h b/include/configs/P2020DS.h
index 9306860..0d2475a 100644
--- a/include/configs/P2020DS.h
+++ b/include/configs/P2020DS.h
@@ -34,7 +34,6 @@
#define CONFIG_P2020 1
#define CONFIG_P2020DS 1
#define CONFIG_MP 1 /* support multiple processors */
-#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
#define CONFIG_FSL_ELBC 1 /* Has Enhanced localbus controller */
#define CONFIG_PCI 1 /* Enable PCI/PCIE */
diff --git a/include/configs/XPEDITE5170.h b/include/configs/XPEDITE5170.h
index 2553293..a572fd0 100644
--- a/include/configs/XPEDITE5170.h
+++ b/include/configs/XPEDITE5170.h
@@ -34,7 +34,6 @@
#define CONFIG_MPC8641 1 /* MPC8641 specific */
#define CONFIG_XPEDITE5140 1 /* MPC8641HPCN board specific */
#define CONFIG_SYS_BOARD_NAME "XPedite5170"
-#define CONFIG_NUM_CPUS 1 /* Number of CPUs in the system */
#define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
#define CONFIG_BOARD_EARLY_INIT_R /* Call board_pre_init */
#define CONFIG_RELOC_FIXUP_WORKS /* Fully relocate to SDRAM */
diff --git a/include/configs/XPEDITE5370.h b/include/configs/XPEDITE5370.h
index 536e063..422dab3 100644
--- a/include/configs/XPEDITE5370.h
+++ b/include/configs/XPEDITE5370.h
@@ -36,7 +36,6 @@
#define CONFIG_MPC8572 1
#define CONFIG_XPEDITE5370 1
#define CONFIG_SYS_BOARD_NAME "XPedite5370"
-#define CONFIG_NUM_CPUS 2 /* 2 Cores */
#define CONFIG_BOARD_EARLY_INIT_R /* Call board_pre_init */
#define CONFIG_RELOC_FIXUP_WORKS /* Fully relocate to SDRAM */
diff --git a/include/configs/sbc8641d.h b/include/configs/sbc8641d.h
index ef0f627..5376e4a 100644
--- a/include/configs/sbc8641d.h
+++ b/include/configs/sbc8641d.h
@@ -41,7 +41,6 @@
#define CONFIG_MPC8641 1 /* MPC8641 specific */
#define CONFIG_SBC8641D 1 /* SBC8641D board specific */
#define CONFIG_MP 1 /* support multiple processors */
-#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
#define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
#ifdef RUN_DIAG
diff --git a/include/e500.h b/include/e500.h
index 84b580d..f8c8266 100644
--- a/include/e500.h
+++ b/include/e500.h
@@ -8,13 +8,9 @@
#ifndef __ASSEMBLY__
-#ifndef CONFIG_NUM_CPUS
-#define CONFIG_NUM_CPUS 1
-#endif
-
typedef struct
{
- unsigned long freqProcessor[CONFIG_NUM_CPUS];
+ unsigned long freqProcessor[CONFIG_MAX_CPUS];
unsigned long freqSystemBus;
unsigned long freqDDRBus;
unsigned long freqLocalBus;
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 155171d..70dfe95 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -291,6 +291,10 @@ init_fnc_t *init_sequence[] = {
board_early_init_f,
#endif
+#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
+ probecpu,
+#endif
+
#if !defined(CONFIG_8xx_CPUCLK_DEFAULT)
get_clocks, /* get CPU and bus clocks (etc.) */
#if defined(CONFIG_TQM8xxL) && !defined(CONFIG_TQM866M) \
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c
index 0d702bf..dd1fcf1 100644
--- a/lib_ppc/bootm.c
+++ b/lib_ppc/bootm.c
@@ -170,7 +170,7 @@ void arch_lmb_reserve(struct lmb *lmb)
static void boot_prep_linux(void)
{
-#if (CONFIG_NUM_CPUS > 1)
+#ifdef CONFIG_MP
/* if we are MP make sure to flush the dcache() to any changes are made
* visibile to all other cores */
flush_dcache();
--
1.5.6.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
2009-07-21 10:47 [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Poonam Aggrwal
@ 2009-07-21 11:52 ` Wolfgang Denk
2009-07-21 14:13 ` Kumar Gala
2009-07-22 10:14 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Aggrwal Poonam-B10812
2009-07-28 21:08 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Scott Wood
1 sibling, 2 replies; 10+ messages in thread
From: Wolfgang Denk @ 2009-07-21 11:52 UTC (permalink / raw)
To: u-boot
Dear Poonam Aggrwal,
In message <1248173263-30516-1-git-send-email-poonam.aggrwal@freescale.com> you wrote:
> The number of CPUs are getting detected dynamically by checking the processor SVR value.
> Also removed CONFIG_NUM_CPUS references from all the platforms with 85xx/86xx processors.
Please restrict your line length to 70 characters or less.
...
> +#ifndef CONFIG_MP
> + if (cpu_numcores() > 1)
> + puts("#############################################\n"
> + "The system is detected to be MULTICORE,\n"
> + "but u-boot is built with UNI-CORE\n"
> + "To enable mutlticore Build set CONFIG_MP\n"
> + "#############################################\n\n");
> #endif
Please use terse error messages. We don't print prose here.
> - cpu = identify_cpu(ver);
> - if (cpu) {
> + if (cpu_numcores() > 1) {
> + volatile ccsr_pic_t *pic = (void *)(CONFIG_SYS_MPC85xx_PIC_ADDR);
> + printf("CPU%d: ", pic->whoami);
> + }
> + else
Incorrect brace style.
> --- a/cpu/mpc85xx/speed.c
> +++ b/cpu/mpc85xx/speed.c
...
> @@ -51,7 +51,7 @@ void get_sys_info (sys_info_t * sysInfo)
> /* Divide before multiply to avoid integer
> * overflow for processor speeds above 2GHz */
> half_freqSystemBus = sysInfo->freqSystemBus/2;
> - for (i = 0; i < CONFIG_NUM_CPUS; i++) {
> + for (i = 0; i < cpu_numcores(); i++) {
Only one space before the '<', please.
...
> --- a/cpu/mpc86xx/cpu.c
> +++ b/cpu/mpc86xx/cpu.c
...
> +int probecpu (void)
> +{
> + uint svr;
> + uint ver;
> +
> + svr = get_svr();
> + ver = SVR_SOC_VER(svr);
> +
> + gd->cpu = identify_cpu(ver);
> +
> + return 0;
> +}
> +
> +int cpu_numcores() {
> + struct cpu_type *cpu;
> + cpu = gd->cpu;
> + return cpu->num_cores;
> +}
> +
This seems to be identically repeated code. Please factor out into
common code.
> * Default board reset function
> */
> @@ -66,9 +88,9 @@ checkcpu(void)
> uint ver;
> uint major, minor;
> char buf1[32], buf2[32];
> + struct cpu_type *cpu;
> volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
> volatile ccsr_gur_t *gur = &immap->im_gur;
> - struct cpu_type *cpu;
> uint msscr0 = mfspr(MSSCR0);
>
> svr = get_svr();
> @@ -76,10 +98,20 @@ checkcpu(void)
> major = SVR_MAJ(svr);
> minor = SVR_MIN(svr);
>
> +#ifndef CONFIG_MP
> + if (cpu_numcores() > 1)
> + puts("#############################################\n"
> + "The system is detected to be MULTICORE,\n"
> + "but u-boot is built with UNI-CORE\n"
> + "To enable mutlticore Build set CONFIG_MP\n"
> + "#############################################\n\n");
> +#endif
Ditto.
> puts("CPU: ");
>
> - cpu = identify_cpu(ver);
> - if (cpu) {
> + cpu = gd->cpu;
> +
> + if (cpu->name) {
> puts(cpu->name);
> } else {
No braces for one-line statements, please.
> diff --git a/include/asm-ppc/config.h b/include/asm-ppc/config.h
> index ca143c7..b799a22 100644
> --- a/include/asm-ppc/config.h
> +++ b/include/asm-ppc/config.h
> @@ -37,4 +37,45 @@
> #endif
> #endif
>
> +#if defined(CONFIG_MPC8533)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8535)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8536)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8540)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8541)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8543)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8544)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8545)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8547)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8548)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8555)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8560)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8567)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8568)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8569)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8572)
> +#define CONFIG_MAX_CPUS 2
> +#elif defined(CONFIG_P2020)
> +#define CONFIG_MAX_CPUS 2
> +
> +#elif defined(CONFIG_MPC8610)
> +#define CONFIG_MAX_CPUS 1
> +#elif defined(CONFIG_MPC8641)
> +#define CONFIG_MAX_CPUS 2
> +#endif
Sorry, but this does not scale. Please find a better solution.
> diff --git a/include/asm-ppc/global_data.h b/include/asm-ppc/global_data.h
> index 244c161..aa531b9 100644
> --- a/include/asm-ppc/global_data.h
> +++ b/include/asm-ppc/global_data.h
> @@ -1,4 +1,5 @@
> /*
> + * Copyright (C) 2009 Freescale Semiconductor, Inc. All rights reserved.
On which base to you make such a claim?
> * (C) Copyright 2002
> * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> *
> @@ -92,6 +93,9 @@ typedef struct global_data {
> #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
> u32 lbc_clk;
> #endif /* CONFIG_MPC85xx || CONFIG_MPC86xx */
> +#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
> + void *cpu;
> +#endif
Because you added a sinle variable declaration? Come on, be
reasonable...
> diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
> index 65546ad..a060697 100644
> --- a/include/asm-ppc/processor.h
> +++ b/include/asm-ppc/processor.h
> @@ -1017,13 +1017,14 @@ n:
> struct cpu_type {
> char name[15];
> u32 soc_ver;
> + u32 num_cores;
> };
>
> struct cpu_type *identify_cpu(u32 ver);
>
> #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
> -#define CPU_TYPE_ENTRY(n, v) \
> - { .name = #n, .soc_ver = SVR_##v, }
> +#define CPU_TYPE_ENTRY(n, v, nc) \
> + { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), }
> #else
> #if defined(CONFIG_MPC83xx)
> #define CPU_TYPE_ENTRY(x) {#x, SPR_##x}
> diff --git a/include/common.h b/include/common.h
> index 6284b8a..ab5b4f8 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -439,6 +439,8 @@ void ppcDWstore(unsigned int *addr, unsigned int *value);
> #endif
>
> /* $(CPU)/cpu.c */
> +int cpu_numcores (void);
> +int probecpu (void);
> int checkcpu (void);
> int checkicache (void);
> int checkdcache (void);
> diff --git a/include/configs/MPC8572DS.h b/include/configs/MPC8572DS.h
> index 6f1b1a4..d542510 100644
> --- a/include/configs/MPC8572DS.h
> +++ b/include/configs/MPC8572DS.h
> @@ -34,7 +34,6 @@
> #define CONFIG_MPC8572 1
> #define CONFIG_MPC8572DS 1
> #define CONFIG_MP 1 /* support multiple processors */
> -#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
>
> #define CONFIG_FSL_ELBC 1 /* Has Enhanced localbus controller */
> #define CONFIG_PCI 1 /* Enable PCI/PCIE */
> diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h
> index 1091043..45932ef 100644
> --- a/include/configs/MPC8610HPCD.h
> +++ b/include/configs/MPC8610HPCD.h
> @@ -17,7 +17,6 @@
> #define CONFIG_MPC86xx 1 /* MPC86xx */
> #define CONFIG_MPC8610 1 /* MPC8610 specific */
> #define CONFIG_MPC8610HPCD 1 /* MPC8610HPCD board specific */
> -#define CONFIG_NUM_CPUS 1 /* Number of CPUs in the system */
> #define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
>
> #define CONFIG_FSL_DIU_FB 1 /* FSL DIU */
> diff --git a/include/configs/MPC8641HPCN.h b/include/configs/MPC8641HPCN.h
> index 035874b..a878850 100644
> --- a/include/configs/MPC8641HPCN.h
> +++ b/include/configs/MPC8641HPCN.h
> @@ -37,7 +37,6 @@
> #define CONFIG_MPC8641 1 /* MPC8641 specific */
> #define CONFIG_MPC8641HPCN 1 /* MPC8641HPCN board specific */
> #define CONFIG_MP 1 /* support multiple processors */
> -#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
> #define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
> /*#define CONFIG_PHYS_64BIT 1*/ /* Place devices in 36-bit space */
> #define CONFIG_ADDR_MAP 1 /* Use addr map */
> diff --git a/include/configs/P2020DS.h b/include/configs/P2020DS.h
> index 9306860..0d2475a 100644
> --- a/include/configs/P2020DS.h
> +++ b/include/configs/P2020DS.h
> @@ -34,7 +34,6 @@
> #define CONFIG_P2020 1
> #define CONFIG_P2020DS 1
> #define CONFIG_MP 1 /* support multiple processors */
> -#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
>
> #define CONFIG_FSL_ELBC 1 /* Has Enhanced localbus controller */
> #define CONFIG_PCI 1 /* Enable PCI/PCIE */
> diff --git a/include/configs/XPEDITE5170.h b/include/configs/XPEDITE5170.h
> index 2553293..a572fd0 100644
> --- a/include/configs/XPEDITE5170.h
> +++ b/include/configs/XPEDITE5170.h
> @@ -34,7 +34,6 @@
> #define CONFIG_MPC8641 1 /* MPC8641 specific */
> #define CONFIG_XPEDITE5140 1 /* MPC8641HPCN board specific */
> #define CONFIG_SYS_BOARD_NAME "XPedite5170"
> -#define CONFIG_NUM_CPUS 1 /* Number of CPUs in the system */
> #define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
> #define CONFIG_BOARD_EARLY_INIT_R /* Call board_pre_init */
> #define CONFIG_RELOC_FIXUP_WORKS /* Fully relocate to SDRAM */
> diff --git a/include/configs/XPEDITE5370.h b/include/configs/XPEDITE5370.h
> index 536e063..422dab3 100644
> --- a/include/configs/XPEDITE5370.h
> +++ b/include/configs/XPEDITE5370.h
> @@ -36,7 +36,6 @@
> #define CONFIG_MPC8572 1
> #define CONFIG_XPEDITE5370 1
> #define CONFIG_SYS_BOARD_NAME "XPedite5370"
> -#define CONFIG_NUM_CPUS 2 /* 2 Cores */
> #define CONFIG_BOARD_EARLY_INIT_R /* Call board_pre_init */
> #define CONFIG_RELOC_FIXUP_WORKS /* Fully relocate to SDRAM */
>
> diff --git a/include/configs/sbc8641d.h b/include/configs/sbc8641d.h
> index ef0f627..5376e4a 100644
> --- a/include/configs/sbc8641d.h
> +++ b/include/configs/sbc8641d.h
> @@ -41,7 +41,6 @@
> #define CONFIG_MPC8641 1 /* MPC8641 specific */
> #define CONFIG_SBC8641D 1 /* SBC8641D board specific */
> #define CONFIG_MP 1 /* support multiple processors */
> -#define CONFIG_NUM_CPUS 2 /* Number of CPUs in the system */
> #define CONFIG_LINUX_RESET_VEC 0x100 /* Reset vector used by Linux */
>
> #ifdef RUN_DIAG
> diff --git a/include/e500.h b/include/e500.h
> index 84b580d..f8c8266 100644
> --- a/include/e500.h
> +++ b/include/e500.h
> @@ -8,13 +8,9 @@
>
> #ifndef __ASSEMBLY__
>
> -#ifndef CONFIG_NUM_CPUS
> -#define CONFIG_NUM_CPUS 1
> -#endif
> -
> typedef struct
> {
> - unsigned long freqProcessor[CONFIG_NUM_CPUS];
> + unsigned long freqProcessor[CONFIG_MAX_CPUS];
> unsigned long freqSystemBus;
> unsigned long freqDDRBus;
> unsigned long freqLocalBus;
> diff --git a/lib_ppc/board.c b/lib_ppc/board.c
> index 155171d..70dfe95 100644
> --- a/lib_ppc/board.c
> +++ b/lib_ppc/board.c
> @@ -291,6 +291,10 @@ init_fnc_t *init_sequence[] = {
> board_early_init_f,
> #endif
>
> +#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
> + probecpu,
> +#endif
> +
No empty line here, please.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You can only live once, but if you do it right, once is enough.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
2009-07-21 11:52 ` Wolfgang Denk
@ 2009-07-21 14:13 ` Kumar Gala
2009-07-21 15:02 ` Wolfgang Denk
2009-07-22 10:14 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Aggrwal Poonam-B10812
1 sibling, 1 reply; 10+ messages in thread
From: Kumar Gala @ 2009-07-21 14:13 UTC (permalink / raw)
To: u-boot
On Jul 21, 2009, at 6:52 AM, Wolfgang Denk wrote:
>> diff --git a/include/asm-ppc/config.h b/include/asm-ppc/config.h
>> index ca143c7..b799a22 100644
>> --- a/include/asm-ppc/config.h
>> +++ b/include/asm-ppc/config.h
>> @@ -37,4 +37,45 @@
>> #endif
>> #endif
>>
>> +#if defined(CONFIG_MPC8533)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8535)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8536)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8540)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8541)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8543)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8544)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8545)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8547)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8548)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8555)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8560)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8567)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8568)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8569)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8572)
>> +#define CONFIG_MAX_CPUS 2
>> +#elif defined(CONFIG_P2020)
>> +#define CONFIG_MAX_CPUS 2
>> +
>> +#elif defined(CONFIG_MPC8610)
>> +#define CONFIG_MAX_CPUS 1
>> +#elif defined(CONFIG_MPC8641)
>> +#define CONFIG_MAX_CPUS 2
>> +#endif
>
> Sorry, but this does not scale. Please find a better solution.
is there a better solution? We effectively do things like this in the
board CONFIG.h and its just duplicated for every board. Here its just
isolated. Just wondering if you had any suggestions (I agree its ugly
and if/when we get Kconfig its something that could be put there).
- k
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
2009-07-21 14:13 ` Kumar Gala
@ 2009-07-21 15:02 ` Wolfgang Denk
0 siblings, 0 replies; 10+ messages in thread
From: Wolfgang Denk @ 2009-07-21 15:02 UTC (permalink / raw)
To: u-boot
Dear Kumar Gala,
In message <D46E33D8-E298-4C7F-BF99-1B0269148AB8@kernel.crashing.org> you wrote:
>
> > Sorry, but this does not scale. Please find a better solution.
>
> is there a better solution? We effectively do things like this in the
> board CONFIG.h and its just duplicated for every board. Here its just
> isolated. Just wondering if you had any suggestions (I agree its ugly
> and if/when we get Kconfig its something that could be put there).
Well, no, sorry, I don't have any clever suggestion.
It would at least be a bit shorter if you used
#if defined(..) || defined(..) || defined(..) ...
#define CONFIG_MAX_CPUS 1
#elif defined(..) || defined(..) || defined(..) ...
#define CONFIG_MAX_CPUS 2
#else
#error
#endif
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Today's robots are very primitive, capable of understanding only a
few simple instructions such as 'go left', 'go right', and 'build
car'." - John Sladek
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors.
2009-07-21 11:52 ` Wolfgang Denk
2009-07-21 14:13 ` Kumar Gala
@ 2009-07-22 10:14 ` Aggrwal Poonam-B10812
2009-07-22 11:30 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and86xxFreescale processors Aggrwal Poonam-B10812
2009-07-22 15:06 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Kumar Gala
1 sibling, 2 replies; 10+ messages in thread
From: Aggrwal Poonam-B10812 @ 2009-07-22 10:14 UTC (permalink / raw)
To: u-boot
>
> ...
> > +#ifndef CONFIG_MP
> > + if (cpu_numcores() > 1)
> > + puts("#############################################\n"
> > + "The system is detected to be MULTICORE,\n"
> > + "but u-boot is built with UNI-CORE\n"
> > + "To enable mutlticore Build set CONFIG_MP\n"
> > +
> "#############################################\n\n");
> > #endif
>
> Please use terse error messages. We don't print prose here.
>
> > - cpu = identify_cpu(ver);
> > - if (cpu) {
> > + if (cpu_numcores() > 1) {
> > + volatile ccsr_pic_t *pic = (void
> *)(CONFIG_SYS_MPC85xx_PIC_ADDR);
> > + printf("CPU%d: ", pic->whoami);
> > + }
> > + else
>
> Incorrect brace style.
>
> > --- a/cpu/mpc85xx/speed.c
> > +++ b/cpu/mpc85xx/speed.c
> ...
> > @@ -51,7 +51,7 @@ void get_sys_info (sys_info_t * sysInfo)
> > /* Divide before multiply to avoid integer
> > * overflow for processor speeds above 2GHz */
> > half_freqSystemBus = sysInfo->freqSystemBus/2;
> > - for (i = 0; i < CONFIG_NUM_CPUS; i++) {
> > + for (i = 0; i < cpu_numcores(); i++) {
>
> Only one space before the '<', please.
>
> ...
> > --- a/cpu/mpc86xx/cpu.c
> > +++ b/cpu/mpc86xx/cpu.c
> ...
> > +int probecpu (void)
> > +{
> > + uint svr;
> > + uint ver;
> > +
> > + svr = get_svr();
> > + ver = SVR_SOC_VER(svr);
> > +
> > + gd->cpu = identify_cpu(ver);
> > +
> > + return 0;
> > +}
> > +
> > +int cpu_numcores() {
> > + struct cpu_type *cpu;
> > + cpu = gd->cpu;
> > + return cpu->num_cores;
> > +}
> > +
>
> This seems to be identically repeated code. Please factor out
> into common code.
Actually the files cpu/mpc86xx/cpu.c cpu/mpc85xx/cpu.c are quite
identical.
Kumar, Please suggest how should this be taken care.
Probably a single file to take care of 85xx and 86xx don't know?
>
> > * Default board reset function
> > */
> > @@ -66,9 +88,9 @@ checkcpu(void)
> > uint ver;
> > uint major, minor;
> > char buf1[32], buf2[32];
> > + struct cpu_type *cpu;
> > volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
> > volatile ccsr_gur_t *gur = &immap->im_gur;
> > - struct cpu_type *cpu;
> > uint msscr0 = mfspr(MSSCR0);
> >
> > svr = get_svr();
> > @@ -76,10 +98,20 @@ checkcpu(void)
> > major = SVR_MAJ(svr);
> > minor = SVR_MIN(svr);
> >
> > +#ifndef CONFIG_MP
> > + if (cpu_numcores() > 1)
> > + puts("#############################################\n"
> > + "The system is detected to be MULTICORE,\n"
> > + "but u-boot is built with UNI-CORE\n"
> > + "To enable mutlticore Build set CONFIG_MP\n"
> > +
> "#############################################\n\n");
> > +#endif
>
> Ditto.
>
> > puts("CPU: ");
> >
> > - cpu = identify_cpu(ver);
> > - if (cpu) {
> > + cpu = gd->cpu;
> > +
> > + if (cpu->name) {
> > puts(cpu->name);
> > } else {
>
> No braces for one-line statements, please.
>
> > diff --git a/include/asm-ppc/config.h
> b/include/asm-ppc/config.h index
> > ca143c7..b799a22 100644
> > --- a/include/asm-ppc/config.h
> > +++ b/include/asm-ppc/config.h
> > @@ -37,4 +37,45 @@
> > #endif
> > #endif
> >
> > +#if defined(CONFIG_MPC8533)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8535)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8536)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8540)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8541)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8543)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8544)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8545)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8547)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8548)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8555)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8560)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8567)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8568)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8569)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8572)
> > +#define CONFIG_MAX_CPUS 2
> > +#elif defined(CONFIG_P2020)
> > +#define CONFIG_MAX_CPUS 2
> > +
> > +#elif defined(CONFIG_MPC8610)
> > +#define CONFIG_MAX_CPUS 1
> > +#elif defined(CONFIG_MPC8641)
> > +#define CONFIG_MAX_CPUS 2
> > +#endif
>
> Sorry, but this does not scale. Please find a better solution.
>
> > diff --git a/include/asm-ppc/global_data.h
> > b/include/asm-ppc/global_data.h index 244c161..aa531b9 100644
> > --- a/include/asm-ppc/global_data.h
> > +++ b/include/asm-ppc/global_data.h
> > @@ -1,4 +1,5 @@
> > /*
> > + * Copyright (C) 2009 Freescale Semiconductor, Inc. All
> rights reserved.
>
>
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email:
> wd at denx.de You can only live once, but if you do it right,
> once is enough.
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and86xxFreescale processors.
2009-07-22 10:14 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Aggrwal Poonam-B10812
@ 2009-07-22 11:30 ` Aggrwal Poonam-B10812
2009-07-22 15:06 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Kumar Gala
1 sibling, 0 replies; 10+ messages in thread
From: Aggrwal Poonam-B10812 @ 2009-07-22 11:30 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: u-boot-bounces at lists.denx.de
> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Aggrwal
> Poonam-B10812
> Sent: Wednesday, July 22, 2009 3:45 PM
> To: Wolfgang Denk; Gala Kumar-B11780
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for
> 85xx and86xxFreescale processors.
>
>
>
>
>
> >
> > ...
> > > +#ifndef CONFIG_MP
> > > + if (cpu_numcores() > 1)
> > > + puts("#############################################\n"
> > > + "The system is detected to be MULTICORE,\n"
> > > + "but u-boot is built with UNI-CORE\n"
> > > + "To enable mutlticore Build set CONFIG_MP\n"
> > > +
> > "#############################################\n\n");
> > > #endif
> >
> > Please use terse error messages. We don't print prose here.
> >
> > > - cpu = identify_cpu(ver);
> > > - if (cpu) {
> > > + if (cpu_numcores() > 1) {
> > > + volatile ccsr_pic_t *pic = (void
> > *)(CONFIG_SYS_MPC85xx_PIC_ADDR);
> > > + printf("CPU%d: ", pic->whoami);
> > > + }
> > > + else
> >
> > Incorrect brace style.
> >
> > > --- a/cpu/mpc85xx/speed.c
> > > +++ b/cpu/mpc85xx/speed.c
> > ...
> > > @@ -51,7 +51,7 @@ void get_sys_info (sys_info_t * sysInfo)
> > > /* Divide before multiply to avoid integer
> > > * overflow for processor speeds above 2GHz */
> > > half_freqSystemBus = sysInfo->freqSystemBus/2;
> > > - for (i = 0; i < CONFIG_NUM_CPUS; i++) {
> > > + for (i = 0; i < cpu_numcores(); i++) {
> >
> > Only one space before the '<', please.
> >
> > ...
> > > --- a/cpu/mpc86xx/cpu.c
> > > +++ b/cpu/mpc86xx/cpu.c
> > ...
> > > +int probecpu (void)
> > > +{
> > > + uint svr;
> > > + uint ver;
> > > +
> > > + svr = get_svr();
> > > + ver = SVR_SOC_VER(svr);
> > > +
> > > + gd->cpu = identify_cpu(ver);
> > > +
> > > + return 0;
> > > +}
> > > +
> > > +int cpu_numcores() {
> > > + struct cpu_type *cpu;
> > > + cpu = gd->cpu;
> > > + return cpu->num_cores;
> > > +}
> > > +
> >
> > This seems to be identically repeated code. Please factor out into
> > common code.
> Actually the files cpu/mpc86xx/cpu.c cpu/mpc85xx/cpu.c are
> quite identical.
> Kumar, Please suggest how should this be taken care.
> Probably a single file to take care of 85xx and 86xx don't know?
Just a request , I would like to close this as we need to push P2020RDB
support quickly.
Otherwise should I just go ahead with 85xx for now? Please suggest.
Regards
Poonam
> > Best regards,
> >
> > Wolfgang Denk
> >
> > --
> > DENX Software Engineering GmbH, MD: Wolfgang Denk &
> Detlev Zundel
> > HRB 165235 Munich, Office: Kirchenstr.5, D-82194
> Groebenzell, Germany
> > Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email:
> > wd at denx.de You can only live once, but if you do it right, once is
> > enough.
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot
> >
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors.
2009-07-22 10:14 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Aggrwal Poonam-B10812
2009-07-22 11:30 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and86xxFreescale processors Aggrwal Poonam-B10812
@ 2009-07-22 15:06 ` Kumar Gala
1 sibling, 0 replies; 10+ messages in thread
From: Kumar Gala @ 2009-07-22 15:06 UTC (permalink / raw)
To: u-boot
On Jul 22, 2009, at 5:14 AM, Aggrwal Poonam-B10812 wrote:
>>
>> ...
>>> --- a/cpu/mpc86xx/cpu.c
>>> +++ b/cpu/mpc86xx/cpu.c
>> ...
>>> +int probecpu (void)
>>> +{
>>> + uint svr;
>>> + uint ver;
>>> +
>>> + svr = get_svr();
>>> + ver = SVR_SOC_VER(svr);
>>> +
>>> + gd->cpu = identify_cpu(ver);
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +int cpu_numcores() {
>>> + struct cpu_type *cpu;
>>> + cpu = gd->cpu;
>>> + return cpu->num_cores;
>>> +}
>>> +
>>
>> This seems to be identically repeated code. Please factor out
>> into common code.
> Actually the files cpu/mpc86xx/cpu.c cpu/mpc85xx/cpu.c are quite
> identical.
> Kumar, Please suggest how should this be taken care.
> Probably a single file to take care of 85xx and 86xx don't know?
We can move the code into cpu/mpc8xxx/cpu.c
- k
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
2009-07-21 10:47 [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Poonam Aggrwal
2009-07-21 11:52 ` Wolfgang Denk
@ 2009-07-28 21:08 ` Scott Wood
2009-07-28 21:45 ` Aggrwal Poonam-B10812
1 sibling, 1 reply; 10+ messages in thread
From: Scott Wood @ 2009-07-28 21:08 UTC (permalink / raw)
To: u-boot
On Tue, Jul 21, 2009 at 04:17:43PM +0530, Poonam Aggrwal wrote:
> +int cpu_numcores() {
> + struct cpu_type *cpu;
> + cpu = gd->cpu;
> + return cpu->num_cores;
> +}
Shouldn't this check CONFIG_MP and return 1 if not set? Otherwise you
get a weird mix of MP and UP.
The checks to warn the user of a UP u-boot on an MP chip would have to
reference cpu->num_cores directly, or we could add a hard_cpu_numcores(),
or similar.
-Scott
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
2009-07-28 21:08 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Scott Wood
@ 2009-07-28 21:45 ` Aggrwal Poonam-B10812
2009-07-28 21:47 ` Scott Wood
0 siblings, 1 reply; 10+ messages in thread
From: Aggrwal Poonam-B10812 @ 2009-07-28 21:45 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Wednesday, July 29, 2009 2:39 AM
> To: Aggrwal Poonam-B10812
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for
> 85xx and 86xx Freescale processors.
>
> On Tue, Jul 21, 2009 at 04:17:43PM +0530, Poonam Aggrwal wrote:
> > +int cpu_numcores() {
> > + struct cpu_type *cpu;
> > + cpu = gd->cpu;
> > + return cpu->num_cores;
> > +}
>
> Shouldn't this check CONFIG_MP and return 1 if not set?
> Otherwise you get a weird mix of MP and UP.
>
> The checks to warn the user of a UP u-boot on an MP chip
> would have to reference cpu->num_cores directly, or we could
> add a hard_cpu_numcores(), or similar.
This function's intent is to just return the number of cores that the
system has.
This is more of kind of probong the actual hardware.
The CONFIG_MP flag will take care of all the multicore stuff in u-boot.
>
> -Scott
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors.
2009-07-28 21:45 ` Aggrwal Poonam-B10812
@ 2009-07-28 21:47 ` Scott Wood
0 siblings, 0 replies; 10+ messages in thread
From: Scott Wood @ 2009-07-28 21:47 UTC (permalink / raw)
To: u-boot
Aggrwal Poonam-B10812 wrote:
>
>
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Wednesday, July 29, 2009 2:39 AM
>> To: Aggrwal Poonam-B10812
>> Cc: u-boot at lists.denx.de
>> Subject: Re: [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for
>> 85xx and 86xx Freescale processors.
>>
>> On Tue, Jul 21, 2009 at 04:17:43PM +0530, Poonam Aggrwal wrote:
>>> +int cpu_numcores() {
>>> + struct cpu_type *cpu;
>>> + cpu = gd->cpu;
>>> + return cpu->num_cores;
>>> +}
>> Shouldn't this check CONFIG_MP and return 1 if not set?
>> Otherwise you get a weird mix of MP and UP.
>>
>> The checks to warn the user of a UP u-boot on an MP chip
>> would have to reference cpu->num_cores directly, or we could
>> add a hard_cpu_numcores(), or similar.
> This function's intent is to just return the number of cores that the
> system has.
> This is more of kind of probong the actual hardware.
> The CONFIG_MP flag will take care of all the multicore stuff in u-boot.
>> -Scott
But you have places that call cpu_numcores() and do per-core stuff that
don't check CONFIG_MP, as far as I can tell.
-Scott
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-07-28 21:47 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-21 10:47 [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Poonam Aggrwal
2009-07-21 11:52 ` Wolfgang Denk
2009-07-21 14:13 ` Kumar Gala
2009-07-21 15:02 ` Wolfgang Denk
2009-07-22 10:14 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Aggrwal Poonam-B10812
2009-07-22 11:30 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and86xxFreescale processors Aggrwal Poonam-B10812
2009-07-22 15:06 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xxFreescale processors Kumar Gala
2009-07-28 21:08 ` [U-Boot] [PATCH 1/2] Removed CONFIG_NUM_CPUS for 85xx and 86xx Freescale processors Scott Wood
2009-07-28 21:45 ` Aggrwal Poonam-B10812
2009-07-28 21:47 ` Scott Wood
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox