diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-19 16:36:28 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-19 16:36:28 -0700 |
commit | c9091f9e571386992c8c5badcec84d49753b9df1 (patch) | |
tree | df53ffae8b44ae0be843ffe4430bd36461248131 /arch | |
parent | cc2020e62dd607ef907bb44325ac95cbb5b76eb2 (diff) | |
parent | 13c501e69c3fba3ca0651abcc4aa7c9091fda70a (diff) |
Merge branch 'for-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx
* 'for-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx:
[POWERPC] 4xx: Workaround for CHIP_11 Errata
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/boot/4xx.c | 21 |
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 @@ #include "reg.h" #include "dcr.h" +static unsigned long chip_11_errata(unsigned long memsize) +{ + unsigned long pvr; + + pvr = mfpvr(); + + switch (pvr & 0xf0000ff0) { + case 0x40000850: + case 0x400008d0: + case 0x200008d0: + memsize -= 4096; + break; + default: + break; + } + + return memsize; +} + /* Read the 4xx SDRAM controller to get size of system memory. */ void ibm4xx_sdram_fixup_memsize(void) { @@ -34,6 +53,7 @@ void ibm4xx_sdram_fixup_memsize(void) memsize += SDRAM_CONFIG_BANK_SIZE(bank_config); } + memsize = chip_11_errata(memsize); dt_fixup_memory(0, memsize); } @@ -199,6 +219,7 @@ void ibm4xx_denali_fixup_memsize(void) bank = 4; /* 4 banks */ memsize = cs * (1 << (col+row)) * bank * dpath; + memsize = chip_11_errata(memsize); dt_fixup_memory(0, memsize); } |