[target/msm7630]: Add support for smem version 4.
Add platform_version variable to the new SOC v4 structure.
Add additional variable for alignment.
Change-Id: I6e677b04b704d3887c703061644b4e636e9c0f4a
diff --git a/platform/msm_shared/smem.c b/platform/msm_shared/smem.c
index 3edc986..1d05597 100644
--- a/platform/msm_shared/smem.c
+++ b/platform/msm_shared/smem.c
@@ -63,3 +63,27 @@
return 0;
}
+
+unsigned smem_read_alloc_entry_offset(smem_mem_type_t type, void *buf, int len, int offset)
+{
+ struct smem_alloc_info *ainfo;
+ unsigned *dest = buf;
+ unsigned src;
+ unsigned size = len;
+
+ if (((len & 0x3) != 0) || (((unsigned)buf & 0x3) != 0))
+ return 1;
+
+ if (type < SMEM_FIRST_VALID_TYPE || type > SMEM_LAST_VALID_TYPE)
+ return 1;
+
+ ainfo = &smem->alloc_info[type];
+ if (readl(&ainfo->allocated) == 0)
+ return 1;
+
+ src = MSM_SHARED_BASE + readl(&ainfo->offset) + offset;
+ for (; size > 0; src += 4, size -= 4)
+ *(dest++) = readl(src);
+
+ return 0;
+}
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index 8300b55..085fa9e 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -64,7 +64,7 @@
struct smem_alloc_info alloc_info[128];
};
-struct smem_board_info
+struct smem_board_info_v3
{
unsigned format;
unsigned msm_id;
@@ -75,6 +75,13 @@
unsigned hw_platform;
};
+struct smem_board_info_v4
+{
+ struct smem_board_info_v3 board_info_v3;
+ unsigned platform_version;
+ unsigned buffer_align; //Need for 8 bytes alignment while reading from shared memory.
+};
+
typedef enum {
SMEM_SPINLOCK_ARRAY = 7,