mdm9x15: Add support to identify the presence of DSP3 image
The extra memory from DSP3 is used by APPS is DSP3 is not
enabled.
Change-Id: Ib0609cf1d64360f228469b466c5c1c4de85a5777
diff --git a/target/mdm9615/atags.c b/target/mdm9615/atags.c
old mode 100644
new mode 100755
index e3ccef7..96a82d9
--- a/target/mdm9615/atags.c
+++ b/target/mdm9615/atags.c
@@ -30,10 +30,12 @@
#include <debug.h>
#include <smem.h>
#include <stdint.h>
+#include <lib/ptable.h>
#define SIZE_1M (1024 * 1024)
#define SIZE_8M (8 * SIZE_1M)
#define SIZE_15M (15 * SIZE_1M)
+#define SIZE_17M (17 * SIZE_1M)
#define SIZE_23M (23 * SIZE_1M)
#define SIZE_88M (11 * SIZE_8M)
@@ -41,6 +43,9 @@
{
struct smem_ram_ptable ram_ptable;
uint8_t i = 0;
+ struct ptable *nand_ptable;
+ struct ptentry *dsp3_ptn;
+ unsigned int size;
if (smem_ram_ptable_init(&ram_ptable)) {
for (i = 0; i < ram_ptable.len; i++) {
@@ -58,6 +63,24 @@
*ptr++ = 0x54410002;
*ptr++ = SIZE_23M;
*ptr++ = ram_ptable.parts[i].start + SIZE_88M;
+
+ nand_ptable = flash_get_ptable();
+ dsp3_ptn = ptable_find(nand_ptable, "dsp3");
+
+ /* Check for DSP3 partition and its size */
+ if(dsp3_ptn != NULL){
+ size = dsp3_ptn->start;
+ size += dsp3_ptn->length;
+ if(size != dsp3_ptn->start)
+ continue;
+ }
+
+ /*Add additional atag to pass DSP3 memory to kernel*/
+ *ptr++ = 4;
+ *ptr++ = 0x54410002;
+ *ptr++ = SIZE_17M;
+ *ptr++ = ram_ptable.parts[i].start + SIZE_88M + SIZE_23M;
+
}
}
} else {