summaryrefslogtreecommitdiff
path: root/drivers/staging/nmf-cm/cm/engine/memory/src/domain.c
diff options
context:
space:
mode:
authorPierre Peiffer <pierre.peiffer@stericsson.com>2011-08-24 16:00:42 +0200
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 09:02:20 +0100
commit148c1aac70d59a4d6531cc18905dfd640a762ba5 (patch)
tree6014a2f62bdac89d50a4701af7526ec0d5c6eb38 /drivers/staging/nmf-cm/cm/engine/memory/src/domain.c
parent925581cbdd18f28078d471e7dd6f7780ed378d5b (diff)
U8500 CM: instantiate singleton in default domain
Singleton components are components used as shared lib on MMDSP and are allocated in the memory domain given at first instantiation. That domain will thus be seen as busy until all users have released their reference to this singleton component, preventing this domain to be released by its creator, even if it has released his reference. This patch assigns these singletons to a default domain once they are created to avoid this issue. ST-Ericsson ID: 356938 ST-Ericsson Linux next: - ST-Ericsson FOSS-OUT ID: Trivial Signed-off-by: Pierre Peiffer <pierre.peiffer@stericsson.com> Change-Id: Ie5590147624d3cb399469600bbc35359ef741295
Diffstat (limited to 'drivers/staging/nmf-cm/cm/engine/memory/src/domain.c')
-rw-r--r--drivers/staging/nmf-cm/cm/engine/memory/src/domain.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/staging/nmf-cm/cm/engine/memory/src/domain.c b/drivers/staging/nmf-cm/cm/engine/memory/src/domain.c
index 8524183ce19..a605cc475a9 100644
--- a/drivers/staging/nmf-cm/cm/engine/memory/src/domain.c
+++ b/drivers/staging/nmf-cm/cm/engine/memory/src/domain.c
@@ -122,6 +122,20 @@ PUBLIC t_cm_error cm_DM_Init(void)
domainDesc[2].client = NMF_CORE_CLIENT;
domainDesc[3].client = NMF_CORE_CLIENT;
+ /* We use domain 1 and 2 for the singleton, only used for components structure */
+ domainDesc[DEFAULT_SVA_DOMAIN].type = DOMAIN_NORMAL;
+ domainDesc[DEFAULT_SVA_DOMAIN].domain.coreId= SVA_CORE_ID;
+ domainDesc[DEFAULT_SVA_DOMAIN].domain.esramCode.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SVA_DOMAIN].domain.esramData.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SVA_DOMAIN].domain.sdramCode.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SVA_DOMAIN].domain.sdramData.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SIA_DOMAIN].type = DOMAIN_NORMAL;
+ domainDesc[DEFAULT_SIA_DOMAIN].domain.coreId= SIA_CORE_ID;
+ domainDesc[DEFAULT_SIA_DOMAIN].domain.esramCode.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SIA_DOMAIN].domain.esramData.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SIA_DOMAIN].domain.sdramCode.size = (t_uint32)-1;
+ domainDesc[DEFAULT_SIA_DOMAIN].domain.sdramData.size = (t_uint32)-1;
+
for(i = 0; i < MAX_SCRATCH_DOMAIN_NB; i++) {
domainScratchDesc[i].domainId = 0;
domainScratchDesc[i].parentId = 0;
@@ -585,3 +599,10 @@ static void cm_DM_DomainError(const t_cm_domain_id parentId, const t_nmf_client_
domainDesc[parentId].domain.esramData.offset + domainDesc[parentId].domain.esramData.size);
}
+PUBLIC void cm_DM_SetDefaultDomain(t_memory_handle memHandle, t_nmf_core_id coreId)
+{
+ if (coreId == SVA_CORE_ID)
+ cm_MM_SetDefaultDomain(memHandle, DEFAULT_SVA_DOMAIN);
+ else if (coreId == SIA_CORE_ID)
+ cm_MM_SetDefaultDomain(memHandle, DEFAULT_SIA_DOMAIN);
+}