5555#include <nvdla_interface.h>
5656#include <nvdla_linux.h>
5757#include <nvdla_ioctl.h>
58+ #include <opendla.h>
5859
5960static struct nvdla_config nvdla_config_os_initial = {
6061 .atom_size = 32 ,
@@ -77,7 +78,6 @@ static struct nvdla_config nvdla_config_large = {
7778 .weight_compress_support = false,
7879};
7980
80-
8181void dla_debug (const char * str , ...)
8282{
8383 va_list args ;
@@ -112,7 +112,9 @@ void dla_error(const char *str, ...)
112112
113113void * dla_memset (void * src , int ch , uint64_t len )
114114{
115- return memset (src , ch , len );
115+ memset (src , ch , len );
116+ nvdla_flush_dcache (dw_virt_to_phys (src ),len );
117+ return src ;
116118}
117119
118120void * dla_memcpy (void * dest , const void * src , uint64_t len )
@@ -228,7 +230,9 @@ int32_t dla_data_write(void *driver_context, void *task_data,
228230 struct dma_buf * buf ;
229231 struct nvdla_mem_handle * handles ;
230232 struct nvdla_task * task = (struct nvdla_task * )task_data ;
233+ uint64_t dma_addr = 0 ;
231234
235+ dla_get_dma_address (driver_context , task_data ,dst , (void * )& dma_addr , DESTINATION_DMA );
232236 handles = task -> address_list ;
233237 buf = dma_buf_get (handles [dst ].handle );
234238 if (IS_ERR (buf )) {
@@ -250,7 +254,9 @@ int32_t dla_data_write(void *driver_context, void *task_data,
250254 }
251255
252256
257+ nvdla_flush_dcache (dw_virt_to_phys (src ),size );
253258 memcpy ((void * )((uint8_t * )ptr + offset ), src , size );
259+ nvdla_flush_dcache (dma_addr + offset ,size );
254260
255261 dma_buf_vunmap (buf , ptr );
256262
@@ -272,7 +278,9 @@ int32_t dla_data_read(void *driver_context, void *task_data,
272278 struct dma_buf * buf ;
273279 struct nvdla_mem_handle * handles ;
274280 struct nvdla_task * task = (struct nvdla_task * )task_data ;
281+ uint64_t dma_addr = 0 ;
275282
283+ dla_get_dma_address (driver_context , task_data , src , (void * )& dma_addr , DESTINATION_DMA );
276284 handles = task -> address_list ;
277285
278286 buf = dma_buf_get (handles [src ].handle );
@@ -294,7 +302,9 @@ int32_t dla_data_read(void *driver_context, void *task_data,
294302 goto end_cpu_access ;
295303 }
296304
305+ nvdla_flush_dcache (dma_addr + offset ,size );
297306 memcpy (dst , (void * )(((uint8_t * )ptr ) + offset ), size );
307+ nvdla_flush_dcache (dw_virt_to_phys (dst ),size );
298308
299309 dma_buf_vunmap (buf , ptr );
300310
0 commit comments