aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/boot/4xx.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-06-25 06:32:01 -0400
committerIngo Molnar <mingo@elte.hu>2008-06-25 06:32:01 -0400
commitda7878d75b8520c9ae00d27dfbbce546a7bfdfbb (patch)
tree547fd497a80818a60ac36831377d5df97868173c /arch/powerpc/boot/4xx.c
parent0e50a4c6ab94ffe7e5515b86b5df9e5abc8c6b13 (diff)
parent543cf4cb3fe6f6cae3651ba918b9c56200b257d0 (diff)
Merge branch 'linus' into x86/pebs
Diffstat (limited to 'arch/powerpc/boot/4xx.c')
-rw-r--r--arch/powerpc/boot/4xx.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/powerpc/boot/4xx.c b/arch/powerpc/boot/4xx.c
index 758edf1c5815..5c878436f348 100644
--- a/arch/powerpc/boot/4xx.c
+++ b/arch/powerpc/boot/4xx.c
@@ -21,6 +21,25 @@
21#include "reg.h" 21#include "reg.h"
22#include "dcr.h" 22#include "dcr.h"
23 23
24static unsigned long chip_11_errata(unsigned long memsize)
25{
26 unsigned long pvr;
27
28 pvr = mfpvr();
29
30 switch (pvr & 0xf0000ff0) {
31 case 0x40000850:
32 case 0x400008d0:
33 case 0x200008d0:
34 memsize -= 4096;
35 break;
36 default:
37 break;
38 }
39
40 return memsize;
41}
42
24/* Read the 4xx SDRAM controller to get size of system memory. */ 43/* Read the 4xx SDRAM controller to get size of system memory. */
25void ibm4xx_sdram_fixup_memsize(void) 44void ibm4xx_sdram_fixup_memsize(void)
26{ 45{
@@ -34,6 +53,7 @@ void ibm4xx_sdram_fixup_memsize(void)
34 memsize += SDRAM_CONFIG_BANK_SIZE(bank_config); 53 memsize += SDRAM_CONFIG_BANK_SIZE(bank_config);
35 } 54 }
36 55
56 memsize = chip_11_errata(memsize);
37 dt_fixup_memory(0, memsize); 57 dt_fixup_memory(0, memsize);
38} 58}
39 59
@@ -199,6 +219,7 @@ void ibm4xx_denali_fixup_memsize(void)
199 bank = 4; /* 4 banks */ 219 bank = 4; /* 4 banks */
200 220
201 memsize = cs * (1 << (col+row)) * bank * dpath; 221 memsize = cs * (1 << (col+row)) * bank * dpath;
222 memsize = chip_11_errata(memsize);
202 dt_fixup_memory(0, memsize); 223 dt_fixup_memory(0, memsize);
203} 224}
204 225