Передача DMA по физическому адресу с использованием ioremap - PullRequest
0 голосов
/ 18 сентября 2018

Я использую 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.

помогите мне решить эту проблему.

...