mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 17:49:03 +02:00
The sanity check previously added to uaudio_transfer_buffer_setup()
assumed the allocated buffer being linear-mapped. But the buffer
allocated via usb_alloc_coherent() isn't always so, rather to be used
with (SG-)DMA API. This leaded to a false-positive warning and the
driver failed to work.
Actually uaudio_transfer_buffer_setup() deals only with the DMA-API
addresses for MEM_XFER_BUF type, while other callers of
uaudio_iommu_map() are with pages with physical addresses for
MEM_EVENT_RING and MEM_XFER_RING types. So this patch splits the
mapping helper function to two different ones, uaudio_iommu_map() for
the DMA pages and uaudio_iommu_map_pa() for the latter, in order to
handle mapping differently for each type. Along with it, the
unnecessary address check that caused probe error is dropped, too.
Fixes:
|
||
|---|---|---|
| .. | ||
| Makefile | ||
| mixer_usb_offload.c | ||
| mixer_usb_offload.h | ||
| qc_audio_offload.c | ||
| usb_audio_qmi_v01.c | ||
| usb_audio_qmi_v01.h | ||