From f78a925afdd85b5fb3d0fc82d9bfb5520ca63d23 Mon Sep 17 00:00:00 2001 From: Aiyaz Patel Date: Tue, 14 Jul 2026 23:09:11 +0530 Subject: [PATCH] audioreach-driver: add dma_coherent compat wrapper for API change Wrap dma_coherent handling behind AR_SET_DMA_COHERENT(). For kernel >= 7.2.0, use dev_set_dma_coherent(dev). For older kernels, keep dev->dma_coherent = true. This fixes build failures on newer kernels where struct device no longer exposes dma_coherent as a direct field ("no member named dma_coherent"), while keeping older kernel compatibility. Signed-off-by: Aiyaz Patel --- audioreach-driver/ar_kcompat.h | 13 +++++++++++++ audioreach-driver/q6apm_audio_mem.c | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/audioreach-driver/ar_kcompat.h b/audioreach-driver/ar_kcompat.h index 6978b41..a55c442 100644 --- a/audioreach-driver/ar_kcompat.h +++ b/audioreach-driver/ar_kcompat.h @@ -82,4 +82,17 @@ # define AR_MODULE_IMPORT_NS(ns) MODULE_IMPORT_NS(ns) #endif +/* dev->dma_coherent direct field access changed in newer kernels. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(7, 2, 0) +# define AR_HAVE_DEV_SET_DMA_COHERENT 1 +#else +# define AR_HAVE_DEV_SET_DMA_COHERENT 0 +#endif + +#if AR_HAVE_DEV_SET_DMA_COHERENT +# define AR_SET_DMA_COHERENT(dev) dev_set_dma_coherent(dev) +#else +# define AR_SET_DMA_COHERENT(dev) ((dev)->dma_coherent = true) +#endif + #endif /* __AR_KCOMPAT_H__ */ diff --git a/audioreach-driver/q6apm_audio_mem.c b/audioreach-driver/q6apm_audio_mem.c index 4c821d4..7c0dfd1 100644 --- a/audioreach-driver/q6apm_audio_mem.c +++ b/audioreach-driver/q6apm_audio_mem.c @@ -835,7 +835,7 @@ static int q6apm_audio_mem_probe(struct platform_device *pdev) dev_info(dev, "%s: SMMU is %s\n", __func__, (!msm_audio_mem_data->smmu_enabled) ? "Disabled" : "Enabled"); - dev->dma_coherent = true; + AR_SET_DMA_COHERENT(dev); if (msm_audio_mem_data->smmu_enabled) { /* Get SMMU SID information from Devicetree */ smmu_sid_mask = QCOM_SMMU_SID_MASK;