Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / ppc / boot / simple / misc-mv64x60.c
index 7e88fc6..71ff20f 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * arch/ppc/boot/simple/misc-mv64x60.c
- *
  * Relocate bridge's register base and call board specific routine.
  *
  * Author: Mark A. Greer <source@mvista.com>
 extern struct bi_record *decompress_kernel(unsigned long load_addr,
        int num_words, unsigned long cksum);
 
+
+u32 size_reg[MV64x60_CPU2MEM_WINDOWS] = {
+       MV64x60_CPU2MEM_0_SIZE, MV64x60_CPU2MEM_1_SIZE,
+       MV64x60_CPU2MEM_2_SIZE, MV64x60_CPU2MEM_3_SIZE
+};
+
+/* Read mem ctlr to get the amount of mem in system */
+unsigned long
+mv64360_get_mem_size(void)
+{
+       u32     enables, i, v;
+       u32     mem = 0;
+
+       enables = in_le32((void __iomem *)CONFIG_MV64X60_NEW_BASE +
+               MV64360_CPU_BAR_ENABLE) & 0xf;
+
+       for (i=0; i<MV64x60_CPU2MEM_WINDOWS; i++)
+               if (!(enables & (1<<i))) {
+                       v = in_le32((void __iomem *)CONFIG_MV64X60_NEW_BASE
+                               + size_reg[i]) & 0xffff;
+                       v = (v + 1) << 16;
+                       mem += v;
+               }
+
+       return mem;
+}
+
 void
 mv64x60_move_base(void __iomem *old_base, void __iomem *new_base)
 {