diff options
author | Pierre Peiffer <pierre.peiffer@stericsson.com> | 2011-08-24 16:00:42 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@linaro.org> | 2012-03-19 09:02:20 +0100 |
commit | 148c1aac70d59a4d6531cc18905dfd640a762ba5 (patch) | |
tree | 6014a2f62bdac89d50a4701af7526ec0d5c6eb38 /drivers/staging/nmf-cm/cm/engine/memory/src/domain.c | |
parent | 925581cbdd18f28078d471e7dd6f7780ed378d5b (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.c | 21 |
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); +} |