From: Hari Kanigeri <[email protected]>

Physical address is not needed anymore since Mapping migration
to open source API, this patch removes the physical table entry.

Signed-off-by: Hari Kanigeri <[email protected]>
Signed-off-by: Fernando Guzman Lugo <[email protected]>
---
 arch/arm/plat-omap/include/dspbridge/dmm.h |    1 -
 drivers/dsp/bridge/pmgr/dmm.c              |   35 ------------------
 drivers/dsp/bridge/wmd/tiomap3430.c        |   55 +++++++++++++++++-----------
 3 files changed, 34 insertions(+), 57 deletions(-)

diff --git a/arch/arm/plat-omap/include/dspbridge/dmm.h 
b/arch/arm/plat-omap/include/dspbridge/dmm.h
index ef37668..335edf8 100644
--- a/arch/arm/plat-omap/include/dspbridge/dmm.h
+++ b/arch/arm/plat-omap/include/dspbridge/dmm.h
@@ -81,5 +81,4 @@
 
        extern DSP_STATUS DMM_CreateTables(struct DMM_OBJECT *hDmmMgr,
                                                u32 addr, u32 size);
-       extern u32 *DMM_GetPhysicalAddrTable(void);
 #endif                         /* DMM_ */
diff --git a/drivers/dsp/bridge/pmgr/dmm.c b/drivers/dsp/bridge/pmgr/dmm.c
index 803de93..f4fc6ec 100644
--- a/drivers/dsp/bridge/pmgr/dmm.c
+++ b/drivers/dsp/bridge/pmgr/dmm.c
@@ -113,7 +113,6 @@ struct MapPage {
 static struct MapPage *pVirtualMappingTable;
 static u32  iFreeRegion;       /* The index of free region */
 static u32  iFreeSize;
-static u32  *pPhysicalAddrTable;       /* Physical address of MPU buffer */
 static u32  dynMemMapBeg;      /* The Beginning of dynamic memory mapping */
 static u32  TableSize;/* The size of virtual and physical pages tables */
 
@@ -151,28 +150,11 @@ DSP_STATUS DMM_CreateTables(struct DMM_OBJECT *hDmmMgr, 
u32 addr, u32 size)
                if (pVirtualMappingTable == NULL)
                        status = DSP_EMEMORY;
                else {
-                       /* This table will be used
-                       * to store the virtual to physical
-                       * address translations
-                       */
-                       pPhysicalAddrTable = (u32 *)MEM_Calloc
-                               (TableSize*sizeof(u32), MEM_NONPAGED);
-                       GT_1trace(DMM_debugMask, GT_4CLASS,
-                       "DMM_CreateTables: Allocate"
-                       "memory for pPhysicalAddrTable=%d entries\n",
-                       TableSize);
-                       if (pPhysicalAddrTable == NULL) {
-                               status = DSP_EMEMORY;
-                               GT_0trace(DMM_debugMask, GT_7CLASS,
-                                   "DMM_CreateTables: Memory allocation for "
-                                   "pPhysicalAddrTable failed\n");
-                       } else {
                        /* On successful allocation,
                        * all entries are zero ('free') */
                        iFreeRegion = 0;
                        iFreeSize = TableSize*PG_SIZE_4K;
                        pVirtualMappingTable[0].RegionSize = TableSize;
-                       }
                }
                SYNC_LeaveCS(pDmmObj->hDmmLock);
        } else
@@ -275,9 +257,6 @@ DSP_STATUS DMM_DeleteTables(struct DMM_OBJECT *hDmmMgr)
                if (pVirtualMappingTable != NULL)
                        MEM_Free(pVirtualMappingTable);
 
-               if (pPhysicalAddrTable != NULL)
-                       MEM_Free(pPhysicalAddrTable);
-
                SYNC_LeaveCS(pDmmObj->hDmmLock);
        } else
                status = DSP_EHANDLE;
@@ -361,7 +340,6 @@ bool DMM_Init(void)
        DBC_Ensure((fRetval && (cRefs > 0)) || (!fRetval && (cRefs >= 0)));
 
        pVirtualMappingTable = NULL ;
-       pPhysicalAddrTable = NULL ;
        TableSize = 0;
 
        return fRetval;
@@ -635,19 +613,6 @@ static struct MapPage *GetMappedRegion(u32 aAddr)
        return currRegion;
 }
 
-/*
- *  ======== DMM_GetPhysicalAddrTable ========
- *  Purpose:
- *  Returns the physical table address
- */
-u32 *DMM_GetPhysicalAddrTable(void)
-{
-       GT_1trace(DMM_debugMask, GT_ENTER, "Entered "
-                       "DMM_GetPhysicalAddrTable()- pPhysicalAddrTable 0x%x\n",
-                       pPhysicalAddrTable);
-       return pPhysicalAddrTable;
-}
-
 #ifdef DSP_DMM_DEBUG
 u32 DMM_MemMapDump(struct DMM_OBJECT *hDmmMgr)
 {
diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c 
b/drivers/dsp/bridge/wmd/tiomap3430.c
index b317015..449de01 100644
--- a/drivers/dsp/bridge/wmd/tiomap3430.c
+++ b/drivers/dsp/bridge/wmd/tiomap3430.c
@@ -1592,16 +1592,12 @@ static DSP_STATUS WMD_BRD_MemUnMap(struct 
WMD_DEV_CONTEXT *hDevContext,
        DSP_STATUS status = DSP_SOK;
        struct WMD_DEV_CONTEXT *pDevContext = hDevContext;
        struct PgTableAttrs *pt = pDevContext->pPtAttrs;
-       u32 pacount = 0;
-       u32 *pPhysAddrPageTbl = NULL;
        u32 temp;
-       u32 patemp = 0;
        u32 pAddr;
        u32 numof4KPages = 0;
 
        DBG_Trace(DBG_ENTER, "> WMD_BRD_MemUnMap hDevContext %x, va %x, "
                  "NumBytes %x\n", hDevContext, ulVirtAddr, ulNumBytes);
-       pPhysAddrPageTbl = DMM_GetPhysicalAddrTable();
        vaCurr = ulVirtAddr;
        remBytes = ulNumBytes;
        remBytesL2 = 0;
@@ -1664,8 +1660,25 @@ static DSP_STATUS WMD_BRD_MemUnMap(struct 
WMD_DEV_CONTEXT *hDevContext,
                                                numof4KPages = 1;
                                        temp = 0;
                                        while (temp++ < numof4KPages) {
-                                               pPhysAddrPageTbl[pacount++] =
-                                                                       pAddr;
+                                               if (!pfn_valid(__phys_to_pfn(
+                                                               pAddr))) {
+                                                       pAddr +=
+                                                           HW_PAGE_SIZE_4KB;
+                                                       continue;
+                                               }
+                                               pg = phys_to_page(pAddr);
+                                               if (page_count(pg) < 1) {
+                                                       pr_info("DSPBRIDGE:"
+                                                           "UNMAP function: "
+                                                           "COUNT 0 FOR PA "
+                                                           "0x%x, size = "
+                                                           "0x%x\n", pAddr,
+                                                           ulNumBytes);
+                                                       bad_page_dump(pAddr,
+                                                                       pg);
+                                               }
+                                               SetPageDirty(pg);
+                                               page_cache_release(pg);
                                                pAddr += HW_PAGE_SIZE_4KB;
                                        }
                                        if (HW_MMU_PteClear(pteAddrL2,
@@ -1722,7 +1735,21 @@ static DSP_STATUS WMD_BRD_MemUnMap(struct 
WMD_DEV_CONTEXT *hDevContext,
                                /* Collect Physical addresses from VA */
                                pAddr = (pteVal & ~(pteSize - 1));
                                while (temp++ < numof4KPages) {
-                                       pPhysAddrPageTbl[pacount++] = pAddr;
+                                       if (pfn_valid(__phys_to_pfn(pAddr))) {
+                                               pg = phys_to_page(pAddr);
+                                               if (page_count(pg) < 1) {
+                                                       pr_info("DSPBRIDGE:"
+                                                           "UNMAP function: "
+                                                           "COUNT 0 FOR PA"
+                                                           " 0x%x, size = "
+                                                           "0x%x\n",
+                                                           pAddr, ulNumBytes);
+                                                       bad_page_dump(pAddr,
+                                                                       pg);
+                                               }
+                                               SetPageDirty(pg);
+                                               page_cache_release(pg);
+                                       }
                                        pAddr += HW_PAGE_SIZE_4KB;
                                }
                                if (HW_MMU_PteClear(L1BaseVa, vaCurr, pteSize)
@@ -1744,20 +1771,6 @@ static DSP_STATUS WMD_BRD_MemUnMap(struct 
WMD_DEV_CONTEXT *hDevContext,
         */
 EXIT_LOOP:
        flush_all(pDevContext);
-       for (temp = 0; temp < pacount; temp++) {
-               patemp = pPhysAddrPageTbl[temp];
-               if (pfn_valid(__phys_to_pfn(patemp))) {
-                       pg = phys_to_page(patemp);
-                       if (page_count(pg) < 1) {
-                               pr_info("DSPBRIDGE:UNMAP function: COUNT 0"
-                                               "FOR PA 0x%x, size = 0x%x\n",
-                                               patemp, ulNumBytes);
-                               bad_page_dump(patemp, pg);
-                       }
-                       SetPageDirty(pg);
-                       page_cache_release(pg);
-               }
-       }
        DBG_Trace(DBG_LEVEL1, "WMD_BRD_MemUnMap vaCurr %x, pteAddrL1 %x "
                  "pteAddrL2 %x\n", vaCurr, pteAddrL1, pteAddrL2);
        DBG_Trace(DBG_ENTER, "< WMD_BRD_MemUnMap status %x remBytes %x, "
-- 
1.6.2.4

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to