Can somebody explain to me what this code snippet does? It's from the
uio_pruss.c driver. It looks like, for each event channel, it
establishes two separate memory regions for each event channel,
(which I think is a uio_mem) ... but that every event channel gets the
SAME two. What's the point of mapping once per event channel?
for (cnt = 0, p = gdev->info; cnt < MAX_PRUSS_EVT; cnt++, p++)
{
p->mem[0].addr = regs_prussio->start;
p->mem[0].size = resource_size(regs_prussio);
p->mem[0].memtype = UIO_MEM_PHYS;
p->mem[1].size = sram_pool_sz;
p->mem[1].memtype = UIO_MEM_PHYS;
p->mem[2].addr = gdev->ddr_paddr;
p->mem[2].size = extram_pool_sz;
p->mem[2].memtype = UIO_MEM_PHYS;
p->name = kasprintf(GFP_KERNEL, "pruss_evt%d", cnt);
p->version = DRV_VERSION;
/* Register PRUSS IRQ lines */
p->irq = gdev->hostirq_start + cnt;
p->handler = pruss_handler;
p->priv = gdev;
ret = uio_register_device(&dev->dev, p);
if (ret < 0)
goto out_free;
}