Both functions are almost same structure except its flag passed to MEM_FlushCache(). Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@xxxxxxxxx> --- drivers/dsp/bridge/rmgr/proc.c | 82 ++++++++++++++++++--------------------- 1 files changed, 38 insertions(+), 44 deletions(-) diff --git a/drivers/dsp/bridge/rmgr/proc.c b/drivers/dsp/bridge/rmgr/proc.c index f6045bb..3a2879f 100644 --- a/drivers/dsp/bridge/rmgr/proc.c +++ b/drivers/dsp/bridge/rmgr/proc.c @@ -735,39 +735,51 @@ DSP_STATUS PROC_EnumNodes(DSP_HPROCESSOR hProcessor, OUT DSP_HNODE *aNodeTab, return status; } -/* - * ======== PROC_FlushMemory ======== - * Purpose: - * Flush cache - */ -DSP_STATUS PROC_FlushMemory(DSP_HPROCESSOR hProcessor, void *pMpuAddr, - u32 ulSize, u32 ulFlags) + +static DSP_STATUS proc_memory_sync(DSP_HPROCESSOR hProcessor, void *pMpuAddr, + u32 ulSize, u32 ulFlags, + enum DSP_FLUSHTYPE FlushMemType) { /* Keep STATUS here for future additions to this function */ DSP_STATUS status = DSP_SOK; - enum DSP_FLUSHTYPE FlushMemType = PROC_WRITEBACK_INVALIDATE_MEM; struct PROC_OBJECT *pProcObject = (struct PROC_OBJECT *)hProcessor; + DBC_Require(cRefs > 0); + GT_5trace(PROC_DebugMask, GT_ENTER, + "Entered %s, args:\n\t" + "hProcessor: 0x%x pMpuAddr: 0x%x ulSize 0x%x, ulFlags 0x%x\n", + __func__, hProcessor, pMpuAddr, ulSize, ulFlags); - GT_4trace(PROC_DebugMask, GT_ENTER, - "Entered PROC_FlushMemory, args:\n\t" - "hProcessor: 0x%x pMpuAddr: 0x%x ulSize 0x%x, ulFlags 0x%x\n", - hProcessor, pMpuAddr, ulSize, ulFlags); - if (MEM_IsValidHandle(pProcObject, PROC_SIGNATURE)) { - /* Critical section */ - (void)SYNC_EnterCS(hProcLock); - MEM_FlushCache(pMpuAddr, ulSize, FlushMemType); - (void)SYNC_LeaveCS(hProcLock); - } else { + if (!MEM_IsValidHandle(pProcObject, PROC_SIGNATURE)) { + GT_1trace(PROC_DebugMask, GT_7CLASS, + "%s: InValid Processor Handle\n", __func__); status = DSP_EHANDLE; - GT_0trace(PROC_DebugMask, GT_7CLASS, "PROC_FlushMemory: " - "InValid Processor Handle \n"); + goto err_out; } - GT_1trace(PROC_DebugMask, GT_ENTER, "Leaving PROC_FlushMemory [0x%x]", - status); + + (void)SYNC_EnterCS(hProcLock); + MEM_FlushCache(pMpuAddr, ulSize, FlushMemType); + (void)SYNC_LeaveCS(hProcLock); + +err_out: + GT_2trace(PROC_DebugMask, GT_ENTER, + "Leaving %s [0x%x]", __func__, status); + return status; } +/* + * ======== PROC_FlushMemory ======== + * Purpose: + * Flush cache + */ +DSP_STATUS PROC_FlushMemory(DSP_HPROCESSOR hProcessor, void *pMpuAddr, + u32 ulSize, u32 ulFlags) +{ + enum DSP_FLUSHTYPE mtype = PROC_WRITEBACK_INVALIDATE_MEM; + + return proc_memory_sync(hProcessor, pMpuAddr, ulSize, ulFlags, mtype); +} /* * ======== PROC_InvalidateMemory ======== @@ -775,29 +787,11 @@ DSP_STATUS PROC_FlushMemory(DSP_HPROCESSOR hProcessor, void *pMpuAddr, * Invalidates the memory specified */ DSP_STATUS PROC_InvalidateMemory(DSP_HPROCESSOR hProcessor, void *pMpuAddr, - u32 ulSize) + u32 ulSize) { - /* Keep STATUS here for future additions to this function */ - DSP_STATUS status = DSP_SOK; - enum DSP_FLUSHTYPE FlushMemType = PROC_INVALIDATE_MEM; - struct PROC_OBJECT *pProcObject = (struct PROC_OBJECT *)hProcessor; - DBC_Require(cRefs > 0); - GT_3trace(PROC_DebugMask, GT_ENTER, - "Entered PROC_InvalidateMemory, args:\n\t" - "hProcessor: 0x%x pMpuAddr: 0x%x ulSize 0x%x\n", hProcessor, - pMpuAddr, ulSize); - if (MEM_IsValidHandle(pProcObject, PROC_SIGNATURE)) { - (void)SYNC_EnterCS(hProcLock); - MEM_FlushCache(pMpuAddr, ulSize, FlushMemType); - (void)SYNC_LeaveCS(hProcLock); - } else { - status = DSP_EHANDLE; - GT_0trace(PROC_DebugMask, GT_7CLASS, "PROC_InvalidateMemory: " - "InValid Processor Handle \n"); - } - GT_1trace(PROC_DebugMask, GT_ENTER, - "Leaving PROC_InvalidateMemory [0x%x]", status); - return status; + enum DSP_FLUSHTYPE mtype = PROC_INVALIDATE_MEM; + + return proc_memory_sync(hProcessor, pMpuAddr, ulSize, 0, mtype); } /* -- 1.6.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html