summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/nmf-cm/cm/engine/component/src/instantiater.c9
-rw-r--r--drivers/staging/nmf-cm/cm/engine/component/src/loader.c2
-rw-r--r--drivers/staging/nmf-cm/cm/engine/elf/inc/elfapi.h6
-rw-r--r--drivers/staging/nmf-cm/cm/engine/elf/src/elfload.c16
-rw-r--r--drivers/staging/nmf-cm/cm/engine/memory/inc/domain.h8
-rw-r--r--drivers/staging/nmf-cm/cm/engine/memory/inc/domain_type.h1
-rw-r--r--drivers/staging/nmf-cm/cm/engine/memory/inc/remote_allocator.h11
-rw-r--r--drivers/staging/nmf-cm/cm/engine/memory/src/domain.c21
-rw-r--r--drivers/staging/nmf-cm/cm/engine/memory/src/remote_allocator.c5
-rw-r--r--drivers/staging/nmf-cm/cm_debug.c5
-rw-r--r--drivers/staging/nmf-cm/cmld.c4
11 files changed, 73 insertions, 15 deletions
diff --git a/drivers/staging/nmf-cm/cm/engine/component/src/instantiater.c b/drivers/staging/nmf-cm/cm/engine/component/src/instantiater.c
index 2a61d4a7433..b7b42802cea 100644
--- a/drivers/staging/nmf-cm/cm/engine/component/src/instantiater.c
+++ b/drivers/staging/nmf-cm/cm/engine/component/src/instantiater.c
@@ -278,7 +278,7 @@ t_cm_error cm_instantiateComponent(const char* templateName,
LOG_INTERNAL(1, "\n##### Instantiate %s/%x (%s) component on %s at priority %d #####\n", component->pathname, component, template->name, cm_getDspName(coreId), priority, 0);
- if((error = cm_ELF_LoadInstance(domainId, elfhandle, template->memories, component->memories)) != CM_OK)
+ if((error = cm_ELF_LoadInstance(domainId, elfhandle, template->memories, component->memories, template->classe == SINGLETON)) != CM_OK)
{
cm_DestroyComponentMemory(component);
return error;
@@ -298,7 +298,6 @@ t_cm_error cm_instantiateComponent(const char* templateName,
/*
* Create a new component instance
*/
- component->domainId = domainId;
component->priority = priority;
component->thisAddress = 0xFFFFFFFF;
component->state = STATE_NONE;
@@ -314,6 +313,12 @@ t_cm_error cm_instantiateComponent(const char* templateName,
cl->numberOfInstance = 1;
template->singletonIfAvaliable = component;
+ if (cm_DM_GetDomainCoreId(domainId) == SVA_CORE_ID)
+ component->domainId = DEFAULT_SVA_DOMAIN;
+ else
+ component->domainId = DEFAULT_SIA_DOMAIN;
+ } else {
+ component->domainId = domainId;
}
if(component->memories[template->thisMemory->id] != INVALID_MEMORY_HANDLE)
diff --git a/drivers/staging/nmf-cm/cm/engine/component/src/loader.c b/drivers/staging/nmf-cm/cm/engine/component/src/loader.c
index ad6af00f5a5..a128b7aa8c7 100644
--- a/drivers/staging/nmf-cm/cm/engine/component/src/loader.c
+++ b/drivers/staging/nmf-cm/cm/engine/component/src/loader.c
@@ -226,7 +226,7 @@ t_cm_error cm_loadComponent(
* Load shared memory from file
*/
// START();
- if((error = cm_ELF_LoadTemplate(domainId, elfhandle, template->memories)) != CM_OK)
+ if((error = cm_ELF_LoadTemplate(domainId, elfhandle, template->memories, template->classe == SINGLETON)) != CM_OK)
goto out;
MMDSP_serializeMemories(elfhandle->instanceProperty, &template->codeMemory, &template->thisMemory);
// END("cm_ELF_LoadTemplate");
diff --git a/drivers/staging/nmf-cm/cm/engine/elf/inc/elfapi.h b/drivers/staging/nmf-cm/cm/engine/elf/inc/elfapi.h
index 564086db26c..cce6d158b4e 100644
--- a/drivers/staging/nmf-cm/cm/engine/elf/inc/elfapi.h
+++ b/drivers/staging/nmf-cm/cm/engine/elf/inc/elfapi.h
@@ -48,7 +48,8 @@ void cm_ELF_CloseFile(
t_cm_error cm_ELF_LoadTemplate(
t_cm_domain_id domainId,
t_elfdescription *elfhandle,
- t_memory_handle sharedMemories[NUMBER_OF_MMDSP_MEMORY]);
+ t_memory_handle sharedMemories[NUMBER_OF_MMDSP_MEMORY],
+ t_bool isSingleton);
/*!
* \internal
@@ -73,7 +74,8 @@ t_cm_error cm_ELF_LoadInstance(
t_cm_domain_id domainId,
t_elfdescription *elfhandle,
t_memory_handle sharedMemories[NUMBER_OF_MMDSP_MEMORY],
- t_memory_handle privateMemories[NUMBER_OF_MMDSP_MEMORY]);
+ t_memory_handle privateMemories[NUMBER_OF_MMDSP_MEMORY],
+ t_bool isSingleton);
void cm_ELF_FreeInstance(
t_nmf_core_id coreId,
diff --git a/drivers/staging/nmf-cm/cm/engine/elf/src/elfload.c b/drivers/staging/nmf-cm/cm/engine/elf/src/elfload.c
index 84f841ef443..7950cd99007 100644
--- a/drivers/staging/nmf-cm/cm/engine/elf/src/elfload.c
+++ b/drivers/staging/nmf-cm/cm/engine/elf/src/elfload.c
@@ -574,7 +574,8 @@ static t_cm_error allocSegment(
t_cm_domain_id domainId,
t_elfdescription *elfhandle,
t_memory_handle memories[NUMBER_OF_MMDSP_MEMORY],
- t_memory_property property) {
+ t_memory_property property,
+ t_bool isSingleton) {
t_memory_id memId;
const t_elfmemory *thisMemory; //!< Memory used to determine this
const t_elfmemory *codeMemory; //!< Memory used to determine code
@@ -610,6 +611,9 @@ static t_cm_error allocSegment(
cm_DSP_GetDspAddress(memories[memId], &elfhandle->segments[memId].mpcAddr);
+ if (isSingleton)
+ cm_DM_SetDefaultDomain(memories[memId], cm_DM_GetDomainCoreId(domainId));
+
// Log it
LOG_INTERNAL(1, "\t%s%s: 0x%x..+0x%x (0x%x)\n",
mapping->memoryName,
@@ -639,11 +643,12 @@ static t_cm_error allocSegment(
t_cm_error cm_ELF_LoadTemplate(
t_cm_domain_id domainId,
t_elfdescription *elfhandle,
- t_memory_handle sharedMemories[NUMBER_OF_MMDSP_MEMORY])
+ t_memory_handle sharedMemories[NUMBER_OF_MMDSP_MEMORY],
+ t_bool isSingleton)
{
t_cm_error error;
- if((error = allocSegment(domainId, elfhandle, sharedMemories, MEM_SHARABLE)) != CM_OK)
+ if((error = allocSegment(domainId, elfhandle, sharedMemories, MEM_SHARABLE, isSingleton)) != CM_OK)
return error;
// Load each readonly segment
@@ -657,7 +662,8 @@ t_cm_error cm_ELF_LoadInstance(
t_cm_domain_id domainId,
t_elfdescription *elfhandle,
t_memory_handle sharedMemories[NUMBER_OF_MMDSP_MEMORY],
- t_memory_handle privateMemories[NUMBER_OF_MMDSP_MEMORY])
+ t_memory_handle privateMemories[NUMBER_OF_MMDSP_MEMORY],
+ t_bool isSingleton)
{
t_memory_id memId;
t_cm_error error;
@@ -668,7 +674,7 @@ t_cm_error cm_ELF_LoadInstance(
privateMemories[memId] = sharedMemories[memId];
}
- if((error = allocSegment(domainId, elfhandle, privateMemories, MEM_PRIVATE)) != CM_OK)
+ if((error = allocSegment(domainId, elfhandle, privateMemories, MEM_PRIVATE, isSingleton)) != CM_OK)
return error;
// Load each writable memory
diff --git a/drivers/staging/nmf-cm/cm/engine/memory/inc/domain.h b/drivers/staging/nmf-cm/cm/engine/memory/inc/domain.h
index 07caee2d8c1..c9b39956c63 100644
--- a/drivers/staging/nmf-cm/cm/engine/memory/inc/domain.h
+++ b/drivers/staging/nmf-cm/cm/engine/memory/inc/domain.h
@@ -20,6 +20,10 @@
#include <cm/engine/memory/inc/memory.h>
#include <cm/engine/dsp/inc/dsp.h>
+/* These default domains are used for singleton only ! */
+#define DEFAULT_SVA_DOMAIN (t_cm_domain_id)1
+#define DEFAULT_SIA_DOMAIN (t_cm_domain_id)2
+
/*!
* \brief Domain type.
* \internal
@@ -152,4 +156,8 @@ PUBLIC t_cm_error cm_DM_GetAllocatorStatus(t_cm_domain_id domainId, t_dsp_memory
PUBLIC t_cm_error cm_DM_GetDomainAbsAdresses(t_cm_domain_id domainId, t_cm_domain_info *info);
+/*!
+ * \brief Change the domain for the given allocated chunk
+ */
+PUBLIC void cm_DM_SetDefaultDomain(t_memory_handle memHandle, t_nmf_core_id coreId);
#endif /* DOMAIN_H_ */
diff --git a/drivers/staging/nmf-cm/cm/engine/memory/inc/domain_type.h b/drivers/staging/nmf-cm/cm/engine/memory/inc/domain_type.h
index 712d077d894..7463f82eb89 100644
--- a/drivers/staging/nmf-cm/cm/engine/memory/inc/domain_type.h
+++ b/drivers/staging/nmf-cm/cm/engine/memory/inc/domain_type.h
@@ -33,7 +33,6 @@ typedef t_uint8 t_cm_domain_id;
* \ingroup CM_DOMAIN_API
*/
typedef t_uint32 t_nmf_client_id;
-// TO BE REMOVED LATER, I guess, when default domains will be removed (PP)
#define NMF_CORE_CLIENT (t_nmf_client_id)-1
#define NMF_CURRENT_CLIENT (t_nmf_client_id)0
diff --git a/drivers/staging/nmf-cm/cm/engine/memory/inc/remote_allocator.h b/drivers/staging/nmf-cm/cm/engine/memory/inc/remote_allocator.h
index f556c6f7056..36994f37daa 100644
--- a/drivers/staging/nmf-cm/cm/engine/memory/inc/remote_allocator.h
+++ b/drivers/staging/nmf-cm/cm/engine/memory/inc/remote_allocator.h
@@ -261,4 +261,15 @@ PUBLIC void cm_MM_GetMemoryHandleUserData(t_memory_handle memHandle, t_uint16 *p
*/
PUBLIC void cm_MM_DumpMemory(t_cm_allocator_desc* alloc, t_uint32 start, t_uint32 end);
+/*!
+ * \brief Change the domain for the given chunk of memory
+ *
+ * \param[in] memHandle The given chunk of memory
+ * \param[in] domainId The new domain id to set
+ *
+ * \retval void
+ *
+ * \ingroup MEMORY_INTERNAL
+ */
+PUBLIC void cm_MM_SetDefaultDomain(t_memory_handle memHandle, t_uint32 domainId);
#endif /* _REMOTE_ALLOCATOR_H_*/
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);
+}
diff --git a/drivers/staging/nmf-cm/cm/engine/memory/src/remote_allocator.c b/drivers/staging/nmf-cm/cm/engine/memory/src/remote_allocator.c
index ec23e28917c..0d000d37371 100644
--- a/drivers/staging/nmf-cm/cm/engine/memory/src/remote_allocator.c
+++ b/drivers/staging/nmf-cm/cm/engine/memory/src/remote_allocator.c
@@ -649,3 +649,8 @@ PUBLIC void cm_MM_DumpMemory(t_cm_allocator_desc* alloc, t_uint32 start, t_uint3
chunk = chunk->next;
}
}
+
+PUBLIC void cm_MM_SetDefaultDomain(t_memory_handle memHandle, t_uint32 domainId)
+{
+ ((t_cm_chunk *) memHandle)->domainId = domainId;
+}
diff --git a/drivers/staging/nmf-cm/cm_debug.c b/drivers/staging/nmf-cm/cm_debug.c
index bf3fa422208..78552c9ce67 100644
--- a/drivers/staging/nmf-cm/cm_debug.c
+++ b/drivers/staging/nmf-cm/cm_debug.c
@@ -194,8 +194,7 @@ static ssize_t domain_read(struct file *file, char __user *userbuf,
int ret=0;
OSAL_LOCK_API();
- if ((cm_DM_CheckDomain(id, DOMAIN_ANY) == CM_OK)
- && (domain->domain.coreId != -1)
+ if ((domain->domain.coreId != -1)
&& (domain->dbgCooky != NULL)) {
t_cm_allocator_status status;
t_uint32 dOffset;
@@ -822,8 +821,6 @@ void cm_debug_init(void)
debugfs_create_u8("requested_opp", S_IRUSR|S_IRGRP,
osalEnv.mpc[i].dir,
&osalEnv.mpc[i].opp_request);
-
-
}
}
osal_debug_ops.component_create = cm_debug_component_create;
diff --git a/drivers/staging/nmf-cm/cmld.c b/drivers/staging/nmf-cm/cmld.c
index f8fe0d41059..4c754c55b72 100644
--- a/drivers/staging/nmf-cm/cmld.c
+++ b/drivers/staging/nmf-cm/cmld.c
@@ -1163,6 +1163,10 @@ static int __init cmld_init_module(void)
#ifdef CONFIG_DEBUG_FS
cm_debug_init();
+ if (osal_debug_ops.domain_create) {
+ osal_debug_ops.domain_create(DEFAULT_SVA_DOMAIN);
+ osal_debug_ops.domain_create(DEFAULT_SIA_DOMAIN);
+ }
#endif
/* Configure MPC Cores */