提交 e482cad2 编写于 作者: R Robin Getz 提交者: Bryan Wu

Blackfin arch: print out error/warning if you are running on the incorrect CPU type

Signed-off-by: NRobin Getz <rgetz@blackfin.uclinux.org>
Signed-off-by: NBryan Wu <cooloney@kernel.org>
上级 6d0b8c99
...@@ -134,6 +134,12 @@ static inline uint32_t __pure bfin_revid(void) ...@@ -134,6 +134,12 @@ static inline uint32_t __pure bfin_revid(void)
return revid; return revid;
} }
static inline uint16_t __pure bfin_cpuid(void)
{
return (bfin_read_CHIPID() & CHIPID_FAMILY) >> 12;
}
static inline uint32_t __pure bfin_compiled_revid(void) static inline uint32_t __pure bfin_compiled_revid(void)
{ {
#if defined(CONFIG_BF_REV_0_0) #if defined(CONFIG_BF_REV_0_0)
......
...@@ -813,17 +813,23 @@ void __init setup_arch(char **cmdline_p) ...@@ -813,17 +813,23 @@ void __init setup_arch(char **cmdline_p)
printk(KERN_INFO "Compiled for ADSP-%s Rev none\n", CPU); printk(KERN_INFO "Compiled for ADSP-%s Rev none\n", CPU);
else else
printk(KERN_INFO "Compiled for ADSP-%s Rev 0.%d\n", CPU, bfin_compiled_revid()); printk(KERN_INFO "Compiled for ADSP-%s Rev 0.%d\n", CPU, bfin_compiled_revid());
if (bfin_revid() != bfin_compiled_revid()) {
if (bfin_compiled_revid() == -1) if (unlikely(CPUID != bfin_cpuid()))
printk(KERN_ERR "Warning: Compiled for Rev none, but running on Rev %d\n", printk(KERN_ERR "ERROR: Not running on ADSP-%s: unknown CPUID 0x%04x Rev 0.%d\n",
bfin_revid()); CPU, bfin_cpuid(), bfin_revid());
else if (bfin_compiled_revid() != 0xffff) else {
printk(KERN_ERR "Warning: Compiled for Rev %d, but running on Rev %d\n", if (bfin_revid() != bfin_compiled_revid()) {
bfin_compiled_revid(), bfin_revid()); if (bfin_compiled_revid() == -1)
printk(KERN_ERR "Warning: Compiled for Rev none, but running on Rev %d\n",
bfin_revid());
else if (bfin_compiled_revid() != 0xffff)
printk(KERN_ERR "Warning: Compiled for Rev %d, but running on Rev %d\n",
bfin_compiled_revid(), bfin_revid());
}
if (bfin_revid() <= CONFIG_BF_REV_MIN || bfin_revid() > CONFIG_BF_REV_MAX)
printk(KERN_ERR "Warning: Unsupported Chip Revision ADSP-%s Rev 0.%d detected\n",
CPU, bfin_revid());
} }
if (bfin_revid() <= CONFIG_BF_REV_MIN || bfin_revid() > CONFIG_BF_REV_MAX)
printk(KERN_ERR "Warning: Unsupported Chip Revision ADSP-%s Rev 0.%d detected\n",
CPU, bfin_revid());
printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n"); printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n");
...@@ -997,13 +1003,18 @@ static int show_cpuinfo(struct seq_file *m, void *v) ...@@ -997,13 +1003,18 @@ static int show_cpuinfo(struct seq_file *m, void *v)
} }
seq_printf(m, "processor\t: %d\n" seq_printf(m, "processor\t: %d\n"
"vendor_id\t: %s\n" "vendor_id\t: %s\n",
"cpu family\t: 0x%x\n"
"model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK) (%s)\n"
"stepping\t: %d\n",
*(unsigned int *)v, *(unsigned int *)v,
vendor, vendor);
(bfin_read_CHIPID() & CHIPID_FAMILY),
if (CPUID == bfin_cpuid())
seq_printf(m, "cpu family\t: 0x%04x\n", CPUID);
else
seq_printf(m, "cpu family\t: Compiled for:0x%04x, running on:0x%04x\n",
CPUID, bfin_cpuid());
seq_printf(m, "model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK) (%s)\n"
"stepping\t: %d\n",
cpu, cclk/1000000, sclk/1000000, cpu, cclk/1000000, sclk/1000000,
#ifdef CONFIG_MPU #ifdef CONFIG_MPU
"mpu on", "mpu on",
......
...@@ -110,16 +110,31 @@ ...@@ -110,16 +110,31 @@
#ifdef CONFIG_BF527 #ifdef CONFIG_BF527
#define CPU "BF527" #define CPU "BF527"
#define CPUID 0x27e4
#endif
#ifdef CONFIG_BF526
#define CPU "BF526"
#define CPUID 0x27e4
#endif #endif
#ifdef CONFIG_BF525 #ifdef CONFIG_BF525
#define CPU "BF525" #define CPU "BF525"
#define CPUID 0x27e4
#endif
#ifdef CONFIG_BF524
#define CPU "BF524"
#define CPUID 0x27e4
#endif
#ifdef CONFIG_BF523
#define CPU "BF523"
#define CPUID 0x27e4
#endif #endif
#ifdef CONFIG_BF522 #ifdef CONFIG_BF522
#define CPU "BF522" #define CPU "BF522"
#define CPUID 0x27e4
#endif #endif
#ifndef CPU #ifndef CPU
#define CPU "UNKNOWN" #error Unknown CPU type - This kernel doesn't seem to be configured properly
#define CPUID 0x0
#endif #endif
#endif /* __MACH_BF527_H__ */ #endif /* __MACH_BF527_H__ */
...@@ -141,19 +141,19 @@ ...@@ -141,19 +141,19 @@
#ifdef CONFIG_BF533 #ifdef CONFIG_BF533
#define CPU "BF533" #define CPU "BF533"
#define CPUID 0x027a5000 #define CPUID 0x27a5
#endif #endif
#ifdef CONFIG_BF532 #ifdef CONFIG_BF532
#define CPU "BF532" #define CPU "BF532"
#define CPUID 0x0275A000 #define CPUID 0x275A
#endif #endif
#ifdef CONFIG_BF531 #ifdef CONFIG_BF531
#define CPU "BF531" #define CPU "BF531"
#define CPUID 0x027a5000 #define CPUID 0x27a5
#endif #endif
#ifndef CPU #ifndef CPU
#define CPU "UNKNOWN" #error Unknown CPU type - This kernel doesn't seem to be configured properly
#define CPUID 0x0
#endif #endif
#endif /* __MACH_BF533_H__ */ #endif /* __MACH_BF533_H__ */
...@@ -121,19 +121,19 @@ ...@@ -121,19 +121,19 @@
#ifdef CONFIG_BF537 #ifdef CONFIG_BF537
#define CPU "BF537" #define CPU "BF537"
#define CPUID 0x027c8000 #define CPUID 0x27c8
#endif #endif
#ifdef CONFIG_BF536 #ifdef CONFIG_BF536
#define CPU "BF536" #define CPU "BF536"
#define CPUID 0x027c8000 #define CPUID 0x27c8
#endif #endif
#ifdef CONFIG_BF534 #ifdef CONFIG_BF534
#define CPU "BF534" #define CPU "BF534"
#define CPUID 0x027c6000 #define CPUID 0x27c6
#endif #endif
#ifndef CPU #ifndef CPU
#define CPU "UNKNOWN" #error Unknown CPU type - This kernel doesn't seem to be configured properly
#define CPUID 0x0
#endif #endif
#endif /* __MACH_BF537_H__ */ #endif /* __MACH_BF537_H__ */
...@@ -106,20 +106,23 @@ ...@@ -106,20 +106,23 @@
#if defined(CONFIG_BF542) #if defined(CONFIG_BF542)
# define CPU "BF542" # define CPU "BF542"
# define CPUID 0x027c8000 # define CPUID 0x27de
#elif defined(CONFIG_BF544) #elif defined(CONFIG_BF544)
# define CPU "BF544" # define CPU "BF544"
# define CPUID 0x027c8000 # define CPUID 0x27de
#elif defined(CONFIG_BF547) #elif defined(CONFIG_BF547)
# define CPU "BF547" # define CPU "BF547"
# define CPUID 0x27de
#elif defined(CONFIG_BF548) #elif defined(CONFIG_BF548)
# define CPU "BF548" # define CPU "BF548"
# define CPUID 0x027c6000 # define CPUID 0x27de
#elif defined(CONFIG_BF549) #elif defined(CONFIG_BF549)
# define CPU "BF549" # define CPU "BF549"
#else # define CPUID 0x27de
# define CPU "UNKNOWN" #endif
# define CPUID 0x0
#ifndef CPU
#error Unknown CPU type - This kernel doesn't seem to be configured properly
#endif #endif
#endif /* __MACH_BF48_H__ */ #endif /* __MACH_BF48_H__ */
...@@ -211,11 +211,11 @@ ...@@ -211,11 +211,11 @@
#ifdef CONFIG_BF561 #ifdef CONFIG_BF561
#define CPU "BF561" #define CPU "BF561"
#define CPUID 0x027bb000 #define CPUID 0x27bb
#endif #endif
#ifndef CPU #ifndef CPU
#define CPU "UNKNOWN" #error Unknown CPU type - This kernel doesn't seem to be configured properly
#define CPUID 0x0
#endif #endif
#endif /* __MACH_BF561_H__ */ #endif /* __MACH_BF561_H__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册