Передача DMA по физическому адресу с использованием ioremap
Я использую https://elixir.bootlin.com/linux/v4.9.127/source/drivers/dma/dmatest.c.
Выше самой передачи программы передача происходит только из буфера в буфер с помощью kmalloc. Но я хочу использовать для физического адреса, используя ioremap. Я сделал пункт назначения с ioremap, но передача dma не происходит.
И без dma с помощью буфера ioremap для передачи буфера работает нормально.
В функции dmatest_func
thread->dsts = kcalloc(dst_cnt+1, sizeof(u8 *), GFP_KERNEL);
if (!thread->dsts)
goto err_dsts;
u8 *virt;
virt=ioremap(0x80002000,params->buf_size);
thread->dsts[0]=virt;
Этого достаточно для физического адреса или любых других функций, необходимых для сопоставления физического адреса для передачи dma.
помогите мне решить эту проблему.