platform: Add new api to get MSM_SHARED_BASE
Add a new api to get MSM_SHARED_BASE address from platform.
MSM_SHARED_BASE address is dependent on platform subtype and
hence is different for some platform variants.
Change-Id: I307d2110984e788aeeac2bcaa9f185ce2e2c92f4
diff --git a/platform/msm_shared/smem.c b/platform/msm_shared/smem.c
index 00a1872..dc1b141 100644
--- a/platform/msm_shared/smem.c
+++ b/platform/msm_shared/smem.c
@@ -2,6 +2,8 @@
* Copyright (c) 2009, Google Inc.
* All rights reserved.
*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -33,7 +35,7 @@
#include "smem.h"
-static struct smem *smem = (void *)(MSM_SHARED_BASE);
+static struct smem *smem;
/* buf MUST be 4byte aligned, and len MUST be a multiple of 8. */
unsigned smem_read_alloc_entry(smem_mem_type_t type, void *buf, int len)
@@ -42,6 +44,11 @@
unsigned *dest = buf;
unsigned src;
unsigned size;
+ uint32_t smem_addr = 0;
+
+ smem_addr = platform_get_smem_base_addr();
+
+ smem = (struct smem *)smem_addr;
if (((len & 0x3) != 0) || (((unsigned)buf & 0x3) != 0))
return 1;
@@ -59,7 +66,7 @@
if (size != (unsigned)((len + 7) & ~0x00000007))
return 1;
- src = MSM_SHARED_BASE + readl(&ainfo->offset);
+ src = smem_addr + readl(&ainfo->offset);
for (; len > 0; src += 4, len -= 4)
*(dest++) = readl(src);
@@ -74,6 +81,11 @@
unsigned *dest = buf;
unsigned src;
unsigned size = len;
+ uint32_t smem_addr = 0;
+
+ smem_addr = platform_get_smem_base_addr();
+
+ smem = (struct smem *)smem_addr;
if (((len & 0x3) != 0) || (((unsigned)buf & 0x3) != 0))
return 1;
@@ -85,7 +97,7 @@
if (readl(&ainfo->allocated) == 0)
return 1;
- src = MSM_SHARED_BASE + readl(&ainfo->offset) + offset;
+ src = smem_addr + readl(&ainfo->offset) + offset;
for (; size > 0; src += 4, size -= 4)
*(dest++) = readl(src);
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index 1e533f9..15874f0 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -45,6 +45,8 @@
#define _SMEM_RAM_PTABLE_MAGIC_1 0x9DA5E0A8
#define _SMEM_RAM_PTABLE_MAGIC_2 0xAF9EC4E2
+#define SMEM_TARGET_INFO_IDENTIFIER 0x49494953
+
enum smem_ram_ptable_version
{
SMEM_RAM_PTABLE_VERSION_0,