am65xx: Remove dependence on DEVMEM entry
authorSam Nelson <sam.nelson@ti.com>
Mon, 20 Jan 2020 19:05:09 +0000 (14:05 -0500)
committerSam Nelson <sam.nelson@ti.com>
Fri, 31 Jan 2020 16:20:28 +0000 (11:20 -0500)
AM65XX does not have an IOMMU, and currently the DEVMEM entry is used as
a work around.
But in reality the VA and PA are directly mapped and dependence on
DEVMEM to do the address translation need to be removed.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
packages/ti/ipc/family/am65xx/VirtQueue.c
packages/ti/ipc/remoteproc/rsc_table_am65xx_r5f.h

index 5b85be3c5942590bf33b9b828b62307ae01f1e99..09db6a04b2aeed56b4ca94818434e7dcd71ff58c 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2017-2019 Texas Instruments Incorporated - http://www.ti.com
+ * Copyright (c) 2017-2020 Texas Instruments Incorporated - http://www.ti.com
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -237,9 +237,9 @@ static Void _VirtQueue_init()
     }
 }
 
     }
 }
 
-static inline Void * _VirtQueue_getVA(VirtQueue_Handle vq, UInt32 pa)
+static inline Void * mapPAtoVA(UInt pa)
 {
 {
-    return (Void *)(pa - vq->basePa + vq->baseVa);
+    return (Void *)(pa);
 }
 
 /*!
 }
 
 /*!
@@ -321,7 +321,7 @@ Int16 VirtQueue_getAvailBuf(VirtQueue_Handle vq, Void **buf, Int *len)
          */
         head = vq->vring.avail->ring[vq->last_avail_idx++ % vq->vring.num];
 
          */
         head = vq->vring.avail->ring[vq->last_avail_idx++ % vq->vring.num];
 
-        *buf = _VirtQueue_getVA(vq, vq->vring.desc[head].addr);
+        *buf = mapPAtoVA(vq->vring.desc[head].addr);
         *len = vq->vring.desc[head].len;
     }
     GateHwi_leave(vq->gateH, key);
         *len = vq->vring.desc[head].len;
     }
     GateHwi_leave(vq->gateH, key);
@@ -461,13 +461,7 @@ VirtQueue_Handle VirtQueue_create(UInt16 remoteProcId, VirtQueue_Params *params,
             vq->basePa = (UInt32)Resource_getVringDA(vq->id);
             Assert_isTrue(vq->basePa != 0, NULL);
 
             vq->basePa = (UInt32)Resource_getVringDA(vq->id);
             Assert_isTrue(vq->basePa != 0, NULL);
 
-            result = Resource_physToVirt(vq->basePa, &(vq->baseVa));
-            Assert_isTrue(result == Resource_S_SUCCESS, (Assert_Id)NULL);
-            /* Additional check to handle case when Assert is disabled */
-            if (result != Resource_S_SUCCESS) {
-                return (NULL);
-            }
-
+            vq->baseVa = mapPAtoVA(vq->basePa);
             vringAddr = (Void *)vq->baseVa;
             break;
         default:
             vringAddr = (Void *)vq->baseVa;
             break;
         default:
index 8dba08111ed584b6ed2f993b791fa32c3def0198..3ae0dc0d144e9407c05099fb15ba0bd47517fe1c 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2017-2018, Texas Instruments Incorporated
+ * Copyright (c) 2017-2020, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,7 +57,7 @@
 
 #define R5F_MEM_IPC_VRING_SIZE  SZ_1M
 
 
 #define R5F_MEM_IPC_VRING_SIZE  SZ_1M
 
-#define R5F_NUM_ENTRIES 3
+#define R5F_NUM_ENTRIES 2
 
 /*
  * Assign direct mapped RAM address to facilitate address translations in
 
 /*
  * Assign direct mapped RAM address to facilitate address translations in
@@ -89,9 +89,6 @@ struct my_resource_table {
 
     /* trace entry */
     struct fw_rsc_trace trace;
 
     /* trace entry */
     struct fw_rsc_trace trace;
-
-    /* devmem entry */
-    struct fw_rsc_devmem devmem0;
 };
 extern char ti_trace_SysMin_Module_State_0_outbuf__A[];
 
 };
 extern char ti_trace_SysMin_Module_State_0_outbuf__A[];
 
@@ -109,7 +106,6 @@ const struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     {
         offsetof(struct my_resource_table, rpmsg_vdev),
         offsetof(struct my_resource_table, trace),
     {
         offsetof(struct my_resource_table, rpmsg_vdev),
         offsetof(struct my_resource_table, trace),
-        offsetof(struct my_resource_table, devmem0),
     },
 
     /* rpmsg vdev entry */
     },
 
     /* rpmsg vdev entry */
@@ -130,12 +126,6 @@ const struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
 #endif
     },
 
 #endif
     },
 
-    {
-        TYPE_DEVMEM,
-        R5F_MEM_IPC_VRING, PHYS_MEM_IPC_VRING,
-        R5F_MEM_IPC_VRING_SIZE, 0, 0, "R5F_MEM_IPC_VRING",
-    },
-
 };
 
 #endif /* _RSC_TABLE_AM65XX_R5F_H_ */
 };
 
 #endif /* _RSC_TABLE_AM65XX_R5F_H_ */