[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,