Merge "[msm8660]: Enable support for 1G memory by dynamic detection."
diff --git a/platform/msm8x60/include/platform/iomap.h b/platform/msm8x60/include/platform/iomap.h
index 2c267e7..82d5eb2 100755
--- a/platform/msm8x60/include/platform/iomap.h
+++ b/platform/msm8x60/include/platform/iomap.h
@@ -50,11 +50,7 @@
#define MSM_SDC1_BASE 0x12400000
#define MMC_BOOT_MCI_BASE MSM_SDC1_BASE
-#if defined(PLATFORM_MSM8X60)
-#define MSM_SHARED_BASE 0x00000000
-#else
-#define MSM_SHARED_BASE 0x01F00000
-#endif
+#define MSM_SHARED_BASE 0x40000000
#define SURF_DEBUG_LED_ADDR 0x1D000202
diff --git a/target/msm8660_surf/atags.c b/target/msm8660_surf/atags.c
index 66e6231..ebbf203 100755
--- a/target/msm8660_surf/atags.c
+++ b/target/msm8660_surf/atags.c
@@ -30,14 +30,16 @@
#include <debug.h>
#include <smem.h>
-#define EBI1_SIZE1 0x02D00000 // 45M
-#define EBI1_ADDR1 0x40200000
+#define SIZE_45M 0x02D00000 // 45M
+#define EBI1_ADDR_1026M 0x40200000
-#define EBI1_SIZE2 0x08000000 // 128M
-#define EBI1_ADDR2 0x48000000
+#define SIZE_128M 0x08000000 // 128M
+#define EBI1_ADDR_1152M 0x48000000
-#define EBI1_SIZE3 0x10000000 // 256M
-#define EBI1_ADDR3 0x50000000
+#define SIZE_256M 0x10000000 // 256M
+#define EBI1_ADDR_1280M 0x50000000
+
+#define SIZE_768M 0x30000000 // 256M + 512M
#define EBI1_CS1_ADDR_BASE 0x00A40024
@@ -48,22 +50,32 @@
/* ATAG_MEM */
*ptr++ = 4;
*ptr++ = 0x54410002;
- *ptr++ = EBI1_SIZE1;
- *ptr++ = EBI1_ADDR1;
+ *ptr++ = SIZE_45M;
+ *ptr++ = EBI1_ADDR_1026M;
*ptr++ = 4;
*ptr++ = 0x54410002;
- *ptr++ = EBI1_SIZE2;
- *ptr++ = EBI1_ADDR2;
+ *ptr++ = SIZE_128M;
+ *ptr++ = EBI1_ADDR_1152M;
- /* For 512MB RAM*/
value = readl(EBI1_CS1_ADDR_BASE);
- if (((value >> 8) & 0xFF) == 0x50)
+ value = (value >> 8) & 0xFF;
+
+ if (value == 0x50)
{
+ /* For 512MB RAM*/
*ptr++ = 4;
*ptr++ = 0x54410002;
- *ptr++ = EBI1_SIZE3;
- *ptr++ = EBI1_ADDR3;
+ *ptr++ = SIZE_256M;
+ *ptr++ = EBI1_ADDR_1280M;
+ }
+ else if (value == 0x60)
+ {
+ /* For 1GB RAM*/
+ *ptr++ = 4;
+ *ptr++ = 0x54410002;
+ *ptr++ = SIZE_768M;
+ *ptr++ = EBI1_ADDR_1280M;
}
return ptr;