aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2008-11-13 15:55:39 +0000
committerGabor Juhos <juhosg@openwrt.org>2008-11-13 15:55:39 +0000
commit5a6e7ec7517d3a05cbaaf10366d2ca25f49a2f52 (patch)
tree9dd12ae37c3710b086b5ee396256f0be143cc88a /target/linux/ar71xx/files
parent155b55f42a7381bbcfaf123e2ce031f552e8df4d (diff)
downloadupstream-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.c28
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);
}