Commit 7954c88a authored by Suman Anna's avatar Suman Anna Committed by Hari Kanigeri

SYSLINK: ipc - Enable SWDMM memory region in SysMgr

This is a patch for near-term to enable MM to validate non-Tiler buffers.
This patch  maps the SW DMM region at 0x80000000 and of size 4MB into
the kernel space and also adds a new shared region for it in
platform_setup function. platform_override_config function is updated
to configure the messageq module with 3 heaps.
Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
parent 644a3fe2
...@@ -140,6 +140,14 @@ ...@@ -140,6 +140,14 @@
#define BOOTLOADPAGE_SLV_VRT_BASEADDR_APPM3 0x980FF000 #define BOOTLOADPAGE_SLV_VRT_BASEADDR_APPM3 0x980FF000
#define BOOTLOADPAGE_SLV_VRT_BASESIZE_APPM3 0x00001000 #define BOOTLOADPAGE_SLV_VRT_BASESIZE_APPM3 0x00001000
/*! @brief Start of shared memory */
#define SHAREDMEMORY_SWDMM_PHY_BASEADDR 0x87C00000
#define SHAREDMEMORY_SWDMM_PHY_BASESIZE 0x00400000
/*! @brief Start of SHM SW DMMfor Ducati */
#define SHAREDMEMORY_SWDMM_SLV_VRT_BASEADDR 0x80000000
#define SHAREDMEMORY_SWDMM_SLV_VRT_BASESIZE 0x00400000
/*! /*!
* @brief Size of the shared memory heap, this heap is used for providing * @brief Size of the shared memory heap, this heap is used for providing
* shared memory to drivers/instances. Should not be used for any other purpose. * shared memory to drivers/instances. Should not be used for any other purpose.
...@@ -161,6 +169,10 @@ ...@@ -161,6 +169,10 @@
*/ */
#define SMHEAP_SRINDEX_APPM3 1 #define SMHEAP_SRINDEX_APPM3 1
/*!
* @brief Shared region index for Shared memory SW DMM section.
*/
#define SMHEAP_SRINDEX_SWDMM 2
/*! /*!
* @brief Shared region index for SysM3 boot load page * @brief Shared region index for SysM3 boot load page
...@@ -296,7 +308,7 @@ struct platform_proc_config_params { ...@@ -296,7 +308,7 @@ struct platform_proc_config_params {
/*! /*!
* @brief Number of slave memory entries for OMAP4430. * @brief Number of slave memory entries for OMAP4430.
*/ */
#define NUM_MEM_ENTRIES 2 #define NUM_MEM_ENTRIES 3
/*! /*!
* @brief Number of slave memory entries for OMAP4430 SYSM3. * @brief Number of slave memory entries for OMAP4430 SYSM3.
...@@ -308,14 +320,12 @@ struct platform_proc_config_params { ...@@ -308,14 +320,12 @@ struct platform_proc_config_params {
*/ */
#define NUM_MEM_ENTRIES_APPM3 1 #define NUM_MEM_ENTRIES_APPM3 1
/*! /*!
* @brief Position of reset vector memory region in the memEntries array. * @brief Position of reset vector memory region in the memEntries array.
*/ */
#define RESET_VECTOR_ENTRY_ID 0 #define RESET_VECTOR_ENTRY_ID 0
#define DUCATI_SHM_VA 0x98000000
#define DUCATI_SHM_1_VA 0x98080000
/** ============================================================================ /** ============================================================================
* Globals * Globals
* ============================================================================ * ============================================================================
...@@ -347,6 +357,18 @@ static struct proc4430_mem_entry mem_entries[NUM_MEM_ENTRIES] = { ...@@ -347,6 +357,18 @@ static struct proc4430_mem_entry mem_entries[NUM_MEM_ENTRIES] = {
SHAREDMEMORY_SLV_VRT_BASESIZE_APPM3, SHAREDMEMORY_SLV_VRT_BASESIZE_APPM3,
/* SIZE : Size of the memory region */ /* SIZE : Size of the memory region */
true, /* SHARE : Shared access memory? */ true, /* SHARE : Shared access memory? */
},
{
"DUCATI_SHM_SWDMM", /* NAME : Name of the memory region */
SHAREDMEMORY_SWDMM_PHY_BASEADDR,
/* PHYSADDR : Physical address */
SHAREDMEMORY_SWDMM_SLV_VRT_BASEADDR,
/* SLAVEVIRTADDR : Slave virtual address */
(u32) -1u,
/* MASTERVIRTADDR : Master virtual address (if known) */
SHAREDMEMORY_SWDMM_SLV_VRT_BASESIZE,
/* SIZE : Size of the memory region */
true, /* SHARE : Shared access memory? */
} }
}; };
...@@ -485,6 +507,19 @@ s32 platform_setup(struct sysmgr_config *config) ...@@ -485,6 +507,19 @@ s32 platform_setup(struct sysmgr_config *config)
0, 0,
SHAREDMEMORY_PHY_BASESIZE_APPM3); SHAREDMEMORY_PHY_BASESIZE_APPM3);
/* Map the static region */
info.src = SHAREDMEMORY_SWDMM_PHY_BASEADDR;
info.size = SHAREDMEMORY_SWDMM_PHY_BASESIZE;
info.is_cached = false;
status = platform_mem_map(&info);
if (status < 0)
goto mem_map_fail;
/* Create the shared region entry for the SW DMM heap */
sharedregion_add(SMHEAP_SRINDEX_SWDMM,
(void *)info.dst,
info.size);
proc4430_get_config(&proc_config); proc4430_get_config(&proc_config);
status = proc4430_setup(&proc_config); status = proc4430_setup(&proc_config);
if (status < 0) if (status < 0)
...@@ -755,13 +790,27 @@ void platform_load_callback(void *arg) ...@@ -755,13 +790,27 @@ void platform_load_callback(void *arg)
sysmemmgr_xltflag_kvirt2phys); sysmemmgr_xltflag_kvirt2phys);
info.base = (void *) SHAREDMEMORY_SLV_VRT_BASEADDR_APPM3; info.base = (void *) SHAREDMEMORY_SLV_VRT_BASEADDR_APPM3;
/* Write info the boot load page */ /* Write info into the boot load page */
nwrite = sysmgr_put_object_config(proc_id, nwrite = sysmgr_put_object_config(proc_id,
(void *) &info, (void *) &info,
SYSMGR_CMD_SHAREDREGION_ENTRY_START + SYSMGR_CMD_SHAREDREGION_ENTRY_START +
SMHEAP_SRINDEX_APPM3, SMHEAP_SRINDEX_APPM3,
sizeof(struct sharedregion_info)); sizeof(struct sharedregion_info));
WARN_ON(nwrite != sizeof(struct sharedregion_info)); WARN_ON(nwrite != sizeof(struct sharedregion_info));
/* For SW DMM region */
sharedregion_get_table_info(SMHEAP_SRINDEX_SWDMM,
local_id,
&info);
info.base = (void *) SHAREDMEMORY_SWDMM_SLV_VRT_BASEADDR;
/* Write info into the boot load page */
nwrite = sysmgr_put_object_config(proc_id,
(void *) &info,
SYSMGR_CMD_SHAREDREGION_ENTRY_START +
SMHEAP_SRINDEX_SWDMM,
sizeof(struct sharedregion_info));
WARN_ON(nwrite != sizeof(struct sharedregion_info));
goto exit; goto exit;
proc_mgr_translate_addr_fail: proc_mgr_translate_addr_fail:
......
...@@ -64,8 +64,9 @@ int platform_override_config(struct sysmgr_config *config) ...@@ -64,8 +64,9 @@ int platform_override_config(struct sysmgr_config *config)
/* Override the messageq default config */ /* Override the messageq default config */
/* We use 2 heaps, 1 for APPM3 and 1 for SYSM3 */ /* We use 2 heaps, 1 for APPM3 and 1 for SYSM3 */
if (config->messageq_cfg.num_heaps < 2) /* FIXME: Temporary Fix - Add one more for the SW DMM heap */
config->messageq_cfg.num_heaps = 2; if (config->messageq_cfg.num_heaps < 3)
config->messageq_cfg.num_heaps = 3;
/* Override the notify default config */ /* Override the notify default config */
config->notify_cfg.maxDrivers = 2; config->notify_cfg.maxDrivers = 2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment