platform: msm_shared: Add smem changes for SMD
Add smem macro and api to read smem entry.
Change-Id: I1aa951d6f427fcaa49a444f0196ed5a18789e817
diff --git a/platform/msm_shared/smem.c b/platform/msm_shared/smem.c
index 4bf9fda..948a256 100644
--- a/platform/msm_shared/smem.c
+++ b/platform/msm_shared/smem.c
@@ -97,6 +97,45 @@
return 0;
}
+/* Return a pointer to smem_item with size */
+void* smem_get_alloc_entry(smem_mem_type_t type, uint32_t* size)
+{
+ struct smem_alloc_info *ainfo = NULL;
+ uint32_t smem_addr = 0;
+ uint32_t base_ext = 0;
+ uint32_t offset = 0;
+ void *ret = 0;
+
+#if DYNAMIC_SMEM
+ smem_addr = smem_get_base_addr();
+#else
+ smem_addr = platform_get_smem_base_addr();
+#endif
+ smem = (struct smem *)smem_addr;
+
+ 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;
+
+ *size = readl(&ainfo->size);
+ base_ext = readl(&ainfo->base_ext);
+ offset = readl(&ainfo->offset);
+
+ if(base_ext)
+ {
+ ret = base_ext + offset;
+ }
+ else
+ {
+ ret = (void*) smem_addr + offset;
+ }
+
+ return ret;
+}
+
unsigned
smem_read_alloc_entry_offset(smem_mem_type_t type, void *buf, int len,
int offset)
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index c637024..1d68c66 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -47,6 +47,8 @@
#define SMEM_TARGET_INFO_IDENTIFIER 0x49494953
+#define SMEM_NUM_SMD_STREAM_CHANNELS 64
+
enum smem_ram_ptable_version
{
SMEM_RAM_PTABLE_VERSION_0,
@@ -71,7 +73,7 @@
unsigned allocated;
unsigned offset;
unsigned size;
- unsigned reserved;
+ unsigned base_ext;
};
struct smem_board_info_v2 {
@@ -415,13 +417,16 @@
typedef enum {
SMEM_SPINLOCK_ARRAY = 7,
-
SMEM_AARM_PARTITION_TABLE = 9,
+ SMEM_CHANNEL_ALLOC_TBL = 13,
+ SMEM_SMD_BASE_ID = 14,
SMEM_APPS_BOOT_MODE = 106,
SMEM_BOARD_INFO_LOCATION = 137,
+ SMEM_SMD_FIFO_BASE_ID = 338,
+
SMEM_USABLE_RAM_PARTITION_TABLE = 402,
SMEM_POWER_ON_STATUS_INFO = 403,
@@ -571,4 +576,5 @@
void smem_get_ram_ptable_entry(ram_partition*, uint32_t entry);
uint32_t smem_get_ram_ptable_version(void);
uint32_t smem_get_ram_ptable_len(void);
+void* smem_get_alloc_entry(smem_mem_type_t type, uint32_t* size);
#endif /* __PLATFORM_MSM_SHARED_SMEM_H */