diff -ur dahdi-linux-3.1.0/drivers/dahdi/voicebus/voicebus.c dahdi-linux-3.1.0-5.18/drivers/dahdi/voicebus/voicebus.c --- dahdi-linux-3.1.0/drivers/dahdi/voicebus/voicebus.c 2019-10-03 16:48:09.000000000 +0200 +++ dahdi-linux-3.1.0-5.18/drivers/dahdi/voicebus/voicebus.c 2022-05-25 16:18:38.185204828 +0200 @@ -260,8 +260,13 @@ dl->padding = 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dl->desc = dma_alloc_coherent(&vb->pdev->dev, + (sizeof(*d) + dl->padding) * DRING_SIZE, &dl->desc_dma, GFP_ATOMIC); +#else dl->desc = pci_alloc_consistent(vb->pdev, (sizeof(*d) + dl->padding) * DRING_SIZE, &dl->desc_dma); +#endif if (!dl->desc) return -ENOMEM; @@ -311,9 +316,15 @@ dl->padding = 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dl->desc = dma_alloc_coherent(&vb->pdev->dev, + (sizeof(*d) + dl->padding) * + DRING_SIZE, &dl->desc_dma, GFP_ATOMIC); +#else dl->desc = pci_alloc_consistent(vb->pdev, (sizeof(*d) + dl->padding) * DRING_SIZE, &dl->desc_dma); +#endif if (!dl->desc) return -ENOMEM; @@ -544,10 +555,17 @@ return; } vb_cleanup_descriptors(vb, dl); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_free_coherent( + &vb->pdev->dev, + (sizeof(struct voicebus_descriptor)+dl->padding)*DRING_SIZE, + dl->desc, dl->desc_dma); +#else pci_free_consistent( vb->pdev, (sizeof(struct voicebus_descriptor)+dl->padding)*DRING_SIZE, dl->desc, dl->desc_dma); +#endif while (!list_empty(&vb->free_rx)) { vbb = list_entry(vb->free_rx.next, struct vbb, entry); list_del(&vbb->entry); @@ -1783,7 +1801,11 @@ /* ---------------------------------------------------------------- Configure the hardware / kernel module interfaces. ---------------------------------------------------------------- */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + if (dma_set_mask(&vb->pdev->dev, DMA_BIT_MASK(32))) { +#else if (pci_set_dma_mask(vb->pdev, DMA_BIT_MASK(32))) { +#endif dev_err(&vb->pdev->dev, "No suitable DMA available.\n"); goto cleanup; } @@ -1826,7 +1848,11 @@ /* ---------------------------------------------------------------- Configure the hardware interface. ---------------------------------------------------------------- */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + if (dma_set_mask(&vb->pdev->dev, DMA_BIT_MASK(32))) { +#else if (pci_set_dma_mask(vb->pdev, DMA_BIT_MASK(32))) { +#endif dev_warn(&vb->pdev->dev, "No suitable DMA available.\n"); goto cleanup; } diff -ur dahdi-linux-3.1.0/drivers/dahdi/wct4xxp/base.c dahdi-linux-3.1.0-5.18/drivers/dahdi/wct4xxp/base.c --- dahdi-linux-3.1.0/drivers/dahdi/wct4xxp/base.c 2019-10-03 16:48:09.000000000 +0200 +++ dahdi-linux-3.1.0-5.18/drivers/dahdi/wct4xxp/base.c 2022-05-25 16:07:49.747890034 +0200 @@ -3849,8 +3849,13 @@ dma_addr_t writedma; /* 32 channels, Double-buffer, Read/Write, 4 spans */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + alloc = dma_alloc_coherent(&wc->dev->dev, numbufs * T4_BASE_SIZE(wc) * 2, + &writedma, GFP_ATOMIC); +#else alloc = pci_alloc_consistent(wc->dev, numbufs * T4_BASE_SIZE(wc) * 2, &writedma); +#endif if (!alloc) { dev_notice(&wc->dev->dev, "wct%dxxp: Unable to allocate " @@ -3928,8 +3933,13 @@ spin_unlock_irqrestore(&wc->reglock, flags); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_free_coherent(&wc->dev->dev, T4_BASE_SIZE(wc) * oldbufs * 2, + oldalloc, oldaddr); +#else pci_free_consistent(wc->dev, T4_BASE_SIZE(wc) * oldbufs * 2, oldalloc, oldaddr); +#endif dev_info(&wc->dev->dev, "Increased latency to %d\n", newlatency); @@ -5122,8 +5132,13 @@ * up first */ pci_iounmap(wc->dev, wc->membase); pci_release_regions(wc->dev); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_free_coherent(&wc->dev->dev, T4_BASE_SIZE(wc) * wc->numbufs * 2, + wc->writechunk, wc->writedma); +#else pci_free_consistent(wc->dev, T4_BASE_SIZE(wc) * wc->numbufs * 2, wc->writechunk, wc->writedma); +#endif pci_set_drvdata(wc->dev, NULL); free_wc(wc); return res; @@ -5302,8 +5317,13 @@ pci_release_regions(wc->dev); /* Immediately free resources */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_free_coherent(&wc->dev->dev, T4_BASE_SIZE(wc) * wc->numbufs * 2, + wc->writechunk, wc->writedma); +#else pci_free_consistent(wc->dev, T4_BASE_SIZE(wc) * wc->numbufs * 2, wc->writechunk, wc->writedma); +#endif order_index[wc->order]--; diff -ur dahdi-linux-3.1.0/drivers/dahdi/wctc4xxp/base.c dahdi-linux-3.1.0-5.18/drivers/dahdi/wctc4xxp/base.c --- dahdi-linux-3.1.0/drivers/dahdi/wctc4xxp/base.c 2019-10-03 16:48:09.000000000 +0200 +++ dahdi-linux-3.1.0-5.18/drivers/dahdi/wctc4xxp/base.c 2022-05-25 16:17:03.706798317 +0200 @@ -822,8 +822,13 @@ if (!dr->pending) return -ENOMEM; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dr->desc = dma_alloc_coherent(&pdev->dev, + (sizeof(*d)+dr->padding)*dr->size, &dr->desc_dma, GFP_ATOMIC); +#else dr->desc = pci_alloc_consistent(pdev, (sizeof(*d)+dr->padding)*dr->size, &dr->desc_dma); +#endif if (!dr->desc) { kfree(dr->pending); return -ENOMEM; @@ -873,8 +878,13 @@ } d->des1 &= cpu_to_le32(~(BUFFER1_SIZE_MASK)); d->des1 |= cpu_to_le32(len & BUFFER1_SIZE_MASK); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + d->buffer1 = cpu_to_le32(dma_map_single(&dr->pdev->dev, c->data, + SFRAME_SIZE, dr->direction)); +#else d->buffer1 = cpu_to_le32(pci_map_single(dr->pdev, c->data, SFRAME_SIZE, dr->direction)); +#endif SET_OWNED(d); /* That's it until the hardware is done with it. */ dr->pending[dr->tail] = c; @@ -895,8 +905,13 @@ spin_lock_irqsave(&dr->lock, flags); d = wctc4xxp_descriptor(dr, head); if (d->buffer1 && !OWNED(d)) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_unmap_single(&dr->pdev->dev, le32_to_cpu(d->buffer1), + SFRAME_SIZE, dr->direction); +#else pci_unmap_single(dr->pdev, le32_to_cpu(d->buffer1), SFRAME_SIZE, dr->direction); +#endif c = dr->pending[head]; WARN_ON(!c); dr->head = (++head) & (dr->size-1); @@ -1575,8 +1590,13 @@ for (i = 0; i < dr->size; ++i) { d = wctc4xxp_descriptor(dr, i); if (d->buffer1) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_unmap_single(&dr->pdev->dev, d->buffer1, + SFRAME_SIZE, dr->direction); +#else pci_unmap_single(dr->pdev, d->buffer1, SFRAME_SIZE, dr->direction); +#endif d->buffer1 = 0; /* Commands will also be sitting on the waiting for * response list, so we want to make sure to delete @@ -1589,8 +1609,13 @@ dr->head = 0; dr->tail = 0; dr->count = 0; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + dma_free_coherent(&dr->pdev->dev, (sizeof(*d)+dr->padding) * dr->size, + dr->desc, dr->desc_dma); +#else pci_free_consistent(dr->pdev, (sizeof(*d)+dr->padding) * dr->size, dr->desc, dr->desc_dma); +#endif kfree(dr->pending); } @@ -3940,7 +3965,11 @@ INIT_WORK(&wc->deferred_work, deferred_work_func); init_waitqueue_head(&wc->waitq); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + if (dma_set_mask(&wc->pdev->dev, DMA_BIT_MASK(32))) { +#else if (pci_set_dma_mask(wc->pdev, DMA_BIT_MASK(32))) { +#endif release_mem_region(pci_resource_start(wc->pdev, 1), pci_resource_len(wc->pdev, 1)); if (wc->iobase)