From 8ee05d07baa8583cf6a624a399f15c48c30bfb48 Mon Sep 17 00:00:00 2001 From: Xing Zheng Date: Fri, 12 Sep 2025 21:22:17 +0800 Subject: [PATCH] soc: rockchip: aoa_middleware: Remove the restriction that DMA count cannot be greater than periods In AOR mode, the DMA count does not need to correspond to the AAD frame count, and the maximum DMA count range can be used, such as 16-bit 0 to 65535 in RV1126B. Signed-off-by: Xing Zheng Change-Id: Ia5143d788d2c7fb142ffd453e25fbf2aa867348b --- drivers/soc/rockchip/aoa_middleware/aoa_middleware.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/soc/rockchip/aoa_middleware/aoa_middleware.c b/drivers/soc/rockchip/aoa_middleware/aoa_middleware.c index 1e59829f698a..99b0a2379fe8 100644 --- a/drivers/soc/rockchip/aoa_middleware/aoa_middleware.c +++ b/drivers/soc/rockchip/aoa_middleware/aoa_middleware.c @@ -90,11 +90,7 @@ int aoa_middleware_dma_notifier(s32 dma_count, void *data) kill_fasync(&amw_d->rk_dma_fasync_queue, SIGRTMIN + 0, POLL_IN); /* ns_id: start from 1, range: 0 ~ (periods-1) */ - if (dma_count < 0 || dma_count >= n_rkdma->periods) { - pr_err("Invalid dma_count: %d >= periods: %d\n", dma_count, n_rkdma->periods); - return -EINVAL; - } - dma_count = array_index_nospec(dma_count, n_rkdma->periods); + dma_count = array_index_nospec(dma_count % n_rkdma->periods, n_rkdma->periods); n_ns->ns_id = dma_count; n_rkdma->ns_tbl[n_ns->ns_id] = n_ns->ns; if (n_ns->ns_id < n_rkdma->last_ns_id)