diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2008-11-13 15:55:39 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2008-11-13 15:55:39 +0000 |
commit | 5a6e7ec7517d3a05cbaaf10366d2ca25f49a2f52 (patch) | |
tree | 9dd12ae37c3710b086b5ee396256f0be143cc88a /target/linux/ar71xx/files | |
parent | 155b55f42a7381bbcfaf123e2ce031f552e8df4d (diff) | |
download | upstream-5a6e7ec7517d3a05cbaaf10366d2ca25f49a2f52.tar.gz upstream-5a6e7ec7517d3a05cbaaf10366d2ca25f49a2f52.tar.bz2 upstream-5a6e7ec7517d3a05cbaaf10366d2ca25f49a2f52.zip |
[ar71xx] rewrite memory size detection
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13198 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/files')
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/setup.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c b/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c index 855497c7d4..fc8652098d 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/setup.c @@ -85,28 +85,14 @@ int __init ar71xx_pci_init(unsigned nr_irqs, struct ar71xx_pci_irq *map) static void __init ar71xx_detect_mem_size(void) { - volatile u8 *p; - u8 memsave; - u32 size; - - p = (volatile u8 *) KSEG1ADDR(0); - memsave = *p; - for (size = AR71XX_MEM_SIZE_MIN; - size <= (AR71XX_MEM_SIZE_MAX >> 1); size <<= 1) { - volatile u8 *r; - - r = (p + size); - *p = 0x55; - if (*r == 0x55) { - /* Mirrored data found, try another pattern */ - *p = 0xAA; - if (*r == 0xAA) { - /* Mirrored data found again, stop detection */ - break; - } - } + unsigned long size; + + for (size = AR71XX_MEM_SIZE_MIN; size < AR71XX_MEM_SIZE_MAX; + size <<= 1 ) { + if (!memcmp(ar71xx_detect_mem_size, + ar71xx_detect_mem_size + size, 1024)) + break; } - *p = memsave; add_memory_region(0, size, BOOT_MEM_RAM); } |