Передача 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.

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

0 ответов

Другие вопросы по тегам