diff options
author | Sonic Zhang <sonic.zhang@analog.com> | 2009-05-07 06:04:19 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-06-12 06:11:35 -0400 |
commit | 7f3aee3c187641ec7c7e260d9cabb71ac4ac9f7c (patch) | |
tree | f4c43c51e75bf5c74bf73da44e3d2d0789d7e340 /arch | |
parent | d8804adf52f5991388fa9af77428e4cc7768059d (diff) |
Blackfin: detect anomaly 05000274
Detect and reject operating conditions for anomaly 05000274 since the
problem cannot be worked around in software.
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/blackfin/kernel/setup.c | 9 | ||||
-rw-r--r-- | arch/blackfin/mach-common/cpufreq.c | 3 |
2 files changed, 4 insertions, 8 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 5a4a03670085..dc30e0aa54cd 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -801,10 +801,8 @@ void __init setup_arch(char **cmdline_p) | |||
801 | cclk = get_cclk(); | 801 | cclk = get_cclk(); |
802 | sclk = get_sclk(); | 802 | sclk = get_sclk(); |
803 | 803 | ||
804 | #if !defined(CONFIG_BFIN_KERNEL_CLOCK) | 804 | if ((ANOMALY_05000273 || ANOMALY_05000274) && (cclk >> 1) < sclk) |
805 | if (ANOMALY_05000273 && cclk == sclk) | 805 | panic("ANOMALY 05000273 or 05000274: CCLK must be >= 2*SCLK"); |
806 | panic("ANOMALY 05000273, SCLK can not be same as CCLK"); | ||
807 | #endif | ||
808 | 806 | ||
809 | #ifdef BF561_FAMILY | 807 | #ifdef BF561_FAMILY |
810 | if (ANOMALY_05000266) { | 808 | if (ANOMALY_05000266) { |
@@ -903,9 +901,6 @@ void __init setup_arch(char **cmdline_p) | |||
903 | printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n", | 901 | printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n", |
904 | cclk / 1000000, sclk / 1000000); | 902 | cclk / 1000000, sclk / 1000000); |
905 | 903 | ||
906 | if (ANOMALY_05000273 && (cclk >> 1) <= sclk) | ||
907 | printk("\n\n\nANOMALY_05000273: CCLK must be >= 2*SCLK !!!\n\n\n"); | ||
908 | |||
909 | setup_bootmem_allocator(); | 904 | setup_bootmem_allocator(); |
910 | 905 | ||
911 | paging_init(); | 906 | paging_init(); |
diff --git a/arch/blackfin/mach-common/cpufreq.c b/arch/blackfin/mach-common/cpufreq.c index 72e16605ca09..70e3411f558c 100644 --- a/arch/blackfin/mach-common/cpufreq.c +++ b/arch/blackfin/mach-common/cpufreq.c | |||
@@ -140,7 +140,8 @@ static int __init __bfin_cpu_init(struct cpufreq_policy *policy) | |||
140 | cclk = get_cclk() / 1000; | 140 | cclk = get_cclk() / 1000; |
141 | sclk = get_sclk() / 1000; | 141 | sclk = get_sclk() / 1000; |
142 | 142 | ||
143 | #if ANOMALY_05000273 || (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_DCACHE)) | 143 | #if ANOMALY_05000273 || ANOMALY_05000274 || \ |
144 | (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_DCACHE)) | ||
144 | min_cclk = sclk * 2; | 145 | min_cclk = sclk * 2; |
145 | #else | 146 | #else |
146 | min_cclk = sclk; | 147 | min_cclk = sclk; |