Lines Matching full:da
90 dev_err(dev, "iommu fault: da 0x%lx flags 0x%x\n", iova, flags); in rproc_iommu_fault()
167 * @da: remoteproc device address to translate
168 * @len: length of the memory region @da is pointing to
169 * @is_iomem: optional pointer filled in to indicate if @da is iomapped memory
187 * Note: phys_to_virt(iommu_iova_to_phys(rproc->domain, da)) will work too,
194 void *rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem) in rproc_da_to_va() argument
200 ptr = rproc->ops->da_to_va(rproc, da, len, is_iomem); in rproc_da_to_va()
206 int offset = da - carveout->da; in rproc_da_to_va()
212 /* try next carveout if da is too small */ in rproc_da_to_va()
216 /* try next carveout if da is too large */ in rproc_da_to_va()
278 * rproc_check_carveout_da() - Check specified carveout da configuration
281 * @da: area device address
285 * da, len) is part of specified carveout.
286 * If da is not set (defined as FW_RSC_ADDR_ANY), only requested length is
292 struct rproc_mem_entry *mem, u32 da, u32 len) in rproc_check_carveout_da() argument
303 if (da != FW_RSC_ADDR_ANY && mem->da == FW_RSC_ADDR_ANY) { in rproc_check_carveout_da()
306 } else if (da != FW_RSC_ADDR_ANY && mem->da != FW_RSC_ADDR_ANY) { in rproc_check_carveout_da()
307 delta = da - mem->da; in rproc_check_carveout_da()
312 "Registered carveout doesn't fit da request\n"); in rproc_check_carveout_da()
345 if (rproc_check_carveout_da(rproc, mem, rsc->vring[i].da, size)) in rproc_alloc_vring()
350 size, rsc->vring[i].da, in rproc_alloc_vring()
394 dev_dbg(dev, "vdev rsc: vring%d: da 0x%x, qsz %d, align %d\n", in rproc_parse_vring()
395 i, vring->da, vring->num, vring->align); in rproc_parse_vring()
432 rsc->vring[idx].da = 0; in rproc_free_vring()
466 * Note: @da is currently not really handled correctly: we dynamically
471 * use RSC_DEVMEM resource entries to map their required @da to the physical
539 * Currently, the 'da' member of @rsc should contain the device address
571 trace->trace_mem.da = rsc->da; in rproc_handle_trace()
586 dev_dbg(dev, "%s added: da 0x%x, len 0x%x\n", in rproc_handle_trace()
587 name, rsc->da, rsc->len); in rproc_handle_trace()
608 * the 'pa' member. If a specific device address is expected, then 'da' will
647 ret = iommu_map(rproc->domain, rsc->da, rsc->pa, rsc->len, rsc->flags, in rproc_handle_devmem()
661 mapping->da = rsc->da; in rproc_handle_devmem()
665 dev_dbg(dev, "mapped devmem pa 0x%x, da 0x%x, len 0x%x\n", in rproc_handle_devmem()
666 rsc->pa, rsc->da, rsc->len); in rproc_handle_devmem()
705 if (mem->da != FW_RSC_ADDR_ANY && !rproc->domain) { in rproc_alloc_carveout()
707 * Check requested da is equal to dma address in rproc_alloc_carveout()
710 * build pa to da translation on its side. in rproc_alloc_carveout()
712 if (mem->da != (u32)dma) in rproc_alloc_carveout()
734 if (mem->da != FW_RSC_ADDR_ANY && rproc->domain) { in rproc_alloc_carveout()
741 ret = iommu_map(rproc->domain, mem->da, dma, mem->len, in rproc_alloc_carveout()
755 mapping->da = mem->da; in rproc_alloc_carveout()
760 mem->da, &dma); in rproc_alloc_carveout()
763 if (mem->da == FW_RSC_ADDR_ANY) { in rproc_alloc_carveout()
768 mem->da = (u32)dma; in rproc_alloc_carveout()
842 dev_dbg(dev, "carveout rsc: name: %s, da 0x%x, pa 0x%x, len 0x%x, flags 0x%x\n", in rproc_handle_carveout()
843 rsc->name, rsc->da, rsc->pa, rsc->len, rsc->flags); in rproc_handle_carveout()
847 * Search by name, then check the da and length in rproc_handle_carveout()
858 if (rproc_check_carveout_da(rproc, carveout, rsc->da, rsc->len)) in rproc_handle_carveout()
869 carveout = rproc_mem_entry_init(dev, NULL, 0, rsc->len, rsc->da, in rproc_handle_carveout()
904 * @da: device address
917 void *va, dma_addr_t dma, size_t len, u32 da, in rproc_mem_entry_init() argument
931 mem->da = da; in rproc_mem_entry_init()
952 * @da: device address
963 u32 da, const char *name, ...) in rproc_of_resm_mem_entry_init() argument
972 mem->da = da; in rproc_of_resm_mem_entry_init()
1205 rsc->da = entry->da; in rproc_alloc_registered_carveouts()
1240 unmapped = iommu_unmap(rproc->domain, entry->da, entry->len); in rproc_resource_cleanup()