in unittest.c [893:939]
static void __init of_unittest_dma_ranges_one(const char *path,
u64 expect_dma_addr, u64 expect_paddr)
{
#ifdef CONFIG_HAS_DMA
struct device_node *np;
const struct bus_dma_region *map = NULL;
int rc;
np = of_find_node_by_path(path);
if (!np) {
pr_err("missing testcase data\n");
return;
}
rc = of_dma_get_range(np, &map);
unittest(!rc, "of_dma_get_range failed on node %pOF rc=%i\n", np, rc);
if (!rc) {
phys_addr_t paddr;
dma_addr_t dma_addr;
struct device *dev_bogus;
dev_bogus = kzalloc(sizeof(struct device), GFP_KERNEL);
if (!dev_bogus) {
unittest(0, "kzalloc() failed\n");
kfree(map);
return;
}
dev_bogus->dma_range_map = map;
paddr = dma_to_phys(dev_bogus, expect_dma_addr);
dma_addr = phys_to_dma(dev_bogus, expect_paddr);
unittest(paddr == expect_paddr,
"of_dma_get_range: wrong phys addr %pap (expecting %llx) on node %pOF\n",
&paddr, expect_paddr, np);
unittest(dma_addr == expect_dma_addr,
"of_dma_get_range: wrong DMA addr %pad (expecting %llx) on node %pOF\n",
&dma_addr, expect_dma_addr, np);
kfree(map);
kfree(dev_bogus);
}
of_node_put(np);
#endif
}