From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8955C42B75B for ; Tue, 20 Jan 2026 13:33:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916026; cv=none; b=uDOI5VikNVmIwzQhxfnaO2E/dSNN8v0G10/DlPQ+Z8JnbXdXUU1Jm30iI9VD1lvQD6cyCFRlovTw+0sCckKJyrYsyedis6upOg77gplj1XnHjc7uqTzpZZBiy3MYSEX/2/bV3ezsGP5VEOfXqVJ3SkNjftwLS8/dIZFehq4IHYM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916026; c=relaxed/simple; bh=7+lvctd+mOS+R5PxlA728yD1a8tDc2B4cTOJJy3B6f8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ILMBcztx5/VOYUCsBpOL8KkyUnxR/XzMi/xqhZJVUtAbQCU9U8jwd7iqae2qmmAGLZfc8+0Wx5qIs13RU4vC4ceOhazqg9Yt23GiiN3Z+TYoimT3RrIwN9EbjARPSAkGwmGNhlOVgVzsK6r7NoI4/PpdusydOKjDvB6DIHtoVtU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=CixNRAjb; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="CixNRAjb" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-42fb2314eb0so4380943f8f.2 for ; Tue, 20 Jan 2026 05:33:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916022; x=1769520822; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Qrf/4ha8LTjYdiPZBpuP6fOy7D8F/H7Z7s3chjS0gfM=; b=CixNRAjb1G7T/nvjjGu1aiejOEP11qt1eKZW0mQqAGGRuYhR27bOOZXWbccdlt4dWb ji4onEXm2JU308Fc5rQpT4eDvd3w4QFlZwDeV3HUGLTCT9VkRQQDP/0WaYSgQM6n3NLs CM2lp1cOY0k/PjunQMV+nBt3j6c4SiN644V8eZS09FRMrObhEdpoCNLQQEEJWBOk7J4Q BD50aL7qo5VaO4GojuqlrliqWVmymr9/q7Mm91QrMP6EBLxVkUGXwwzfH5MxrZb7ERQ4 7rgyU4mIwRP9liiBCdRdPypFfmeK6A1ezHtQtdt2EPTqL2dF7Q0Sin2z2i3LyDgfdjRU 2FxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916022; x=1769520822; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Qrf/4ha8LTjYdiPZBpuP6fOy7D8F/H7Z7s3chjS0gfM=; b=LnvD2QhTrnPpaP1y//EpsbumV9/3WnYw4tlpQr1uXwQp1LH/oA0FUr9OF4D/bicmkr bkkF2tNMtGeP9fTBWpL8Z3uLnZn+QTgxU2wOqpFYFKjLmzIOcUt1RCn4SKSWApXSy1iA pMMCM1RcTNlJp9b2iNSg/dgcnyqa6VfJ0W0sSEBOeIvuzsFxI6iLZD9Uzpi5W0bsc9FL eein8JokMcy/MtW5C3jxJb+BqL/52GyaZtq/IkCfa8JHdEwGy5+VEqtlEXuqMXPAoFZw B3FOQBYun7WNAvxHMf8SCp2C8Rs9pVgUoKEz2r34IEKh3l5Ed7+5So6GuQctey7qQbK2 NbVw== X-Forwarded-Encrypted: i=1; AJvYcCUotjcZggM0xFcKUuQIgHZyqKcWZR9zbdHcWuxqIIHl+R5cyCf/W4YWCIj4Y/LpsvronsjZ6Qkcw4O4LJg=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5v8pJiIR72cOI0Yq7fHN0RM3A3V8zXJiNuAwt7f4qcQNzstAo 7+q8X/hwDUFQFXt8pDo4xvmJ5vls3yKhx7eDg75026xZnBZEq7HT9hUcUDE/Nxqno1g= X-Gm-Gg: AZuq6aJhVcgVA0GRitsRBmoefPqHhgPHlP7k28U9GuxqHSidKSoARZ46s0o7eh8Efvo 6lS6FECgyWZgIAgEA++rO6/vZyiVp23zPeRJ7RYeN+yRjjzCQRjX6YrwTg/Q0oFGeymfFT3xMBL lmevCdSxFOurYECKTn4q9beHjx9lOC0B+RjBYRO/cC29wPn0Th1n/ta27VNePkGPqw63AS/wD14 M8NBblvtQOdbn7ps9c6M+EwZauywM+c/3NsXrzpY+GdAKC6aqim3Ap71K/ymGvLqQppdpsz/a9c jaeJ9zM6WkAZTOa3lfZmM5K0LDr3QB3owcuzR3f74FPx/7D3ethFPJDenauYTUtUCocPbIP8Sz0 RRbxim3vA09IgH1qpxkIkHlH4Van3bEj5KWrLifYqu+ZxTaujgEZ9lnyZdwMknY0kIc+TGwFn/C xUX1bXX5xc/hntzMX/vnMakn9GK6gtbpB1TNFKZ90= X-Received: by 2002:a05:6000:2481:b0:430:fdfc:7dd3 with SMTP id ffacd0b85a97d-4358ff62780mr2583333f8f.50.1768916021652; Tue, 20 Jan 2026 05:33:41 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:41 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v8 1/8] dmaengine: sh: rz-dmac: Protect the driver specific lists Date: Tue, 20 Jan 2026 15:33:23 +0200 Message-ID: <20260120133330.3738850-2-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea The driver lists (ld_free, ld_queue) are used in rz_dmac_free_chan_resources(), rz_dmac_terminate_all(), rz_dmac_issue_pending(), and rz_dmac_irq_handler_thread(), all under the virtual channel lock. Take the same lock in rz_dmac_prep_slave_sg() and rz_dmac_prep_dma_memcpy() as well to avoid concurrency issues, since these functions also check whether the lists are empty and update or remove list entries. Fixes: 5000d37042a6 ("dmaengine: sh: Add DMAC driver for RZ/G2L SoC") Cc: stable@vger.kernel.org Signed-off-by: Claudiu Beznea --- Changes in v8: - none Changes in v7: - none Changes in v6: - none Changes in v5: - none, this patch is new drivers/dma/sh/rz-dmac.c | 57 ++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index 3dde4b006bcc..36f5fc80a17a 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -10,6 +10,7 @@ */ =20 #include +#include #include #include #include @@ -453,6 +454,7 @@ static int rz_dmac_alloc_chan_resources(struct dma_chan= *chan) if (!desc) break; =20 + /* No need to lock. This is called only for the 1st client. */ list_add_tail(&desc->node, &channel->ld_free); channel->descs_allocated++; } @@ -508,18 +510,21 @@ rz_dmac_prep_dma_memcpy(struct dma_chan *chan, dma_ad= dr_t dest, dma_addr_t src, dev_dbg(dmac->dev, "%s channel: %d src=3D0x%pad dst=3D0x%pad len=3D%zu\n", __func__, channel->index, &src, &dest, len); =20 - if (list_empty(&channel->ld_free)) - return NULL; + scoped_guard(spinlock_irqsave, &channel->vc.lock) { + if (list_empty(&channel->ld_free)) + return NULL; + + desc =3D list_first_entry(&channel->ld_free, struct rz_dmac_desc, node); =20 - desc =3D list_first_entry(&channel->ld_free, struct rz_dmac_desc, node); + desc->type =3D RZ_DMAC_DESC_MEMCPY; + desc->src =3D src; + desc->dest =3D dest; + desc->len =3D len; + desc->direction =3D DMA_MEM_TO_MEM; =20 - desc->type =3D RZ_DMAC_DESC_MEMCPY; - desc->src =3D src; - desc->dest =3D dest; - desc->len =3D len; - desc->direction =3D DMA_MEM_TO_MEM; + list_move_tail(channel->ld_free.next, &channel->ld_queue); + } =20 - list_move_tail(channel->ld_free.next, &channel->ld_queue); return vchan_tx_prep(&channel->vc, &desc->vd, flags); } =20 @@ -535,27 +540,29 @@ rz_dmac_prep_slave_sg(struct dma_chan *chan, struct s= catterlist *sgl, int dma_length =3D 0; int i =3D 0; =20 - if (list_empty(&channel->ld_free)) - return NULL; + scoped_guard(spinlock_irqsave, &channel->vc.lock) { + if (list_empty(&channel->ld_free)) + return NULL; =20 - desc =3D list_first_entry(&channel->ld_free, struct rz_dmac_desc, node); + desc =3D list_first_entry(&channel->ld_free, struct rz_dmac_desc, node); =20 - for_each_sg(sgl, sg, sg_len, i) { - dma_length +=3D sg_dma_len(sg); - } + for_each_sg(sgl, sg, sg_len, i) + dma_length +=3D sg_dma_len(sg); =20 - desc->type =3D RZ_DMAC_DESC_SLAVE_SG; - desc->sg =3D sgl; - desc->sgcount =3D sg_len; - desc->len =3D dma_length; - desc->direction =3D direction; + desc->type =3D RZ_DMAC_DESC_SLAVE_SG; + desc->sg =3D sgl; + desc->sgcount =3D sg_len; + desc->len =3D dma_length; + desc->direction =3D direction; =20 - if (direction =3D=3D DMA_DEV_TO_MEM) - desc->src =3D channel->src_per_address; - else - desc->dest =3D channel->dst_per_address; + if (direction =3D=3D DMA_DEV_TO_MEM) + desc->src =3D channel->src_per_address; + else + desc->dest =3D channel->dst_per_address; + + list_move_tail(channel->ld_free.next, &channel->ld_queue); + } =20 - list_move_tail(channel->ld_free.next, &channel->ld_queue); return vchan_tx_prep(&channel->vc, &desc->vd, flags); } =20 --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 804FD436347 for ; Tue, 20 Jan 2026 13:33:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916026; cv=none; b=FxWFT9B/ibVBTmeqd6Xj8g0qVtbPEEpDRgc79PztGZFMEOISEsa7/RenTDxuBP0iO75Fn7RSrW4EuBmlDZZZ//y1T6Bu8zbO/IkcgeKONW/p7gPrvhhPR6V8abrbg4awB3q+ocpGsuqLCOFDxMAJSjQ8lskIQ2wKgjK0tmtFjrI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916026; c=relaxed/simple; bh=Fmghef1Fww0dPCiuwecGEhxAwkx9U8pFSKi7M4eGW50=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G2vbKciH7mqOUjNXdSyYOdOw2DsLu/yWl0h/fkDP1GYFg1//imuIJgZ38TIZFlgOTBa6Suq+R08LkoJv+WTlul89XF5jq3r77JD6G7zG966SYaSBI4ToqaN4Zpi2W1vJxH6aLdvMvBb3JqJxkN+c1ZKvZVsljm4sA/7SC6tEyXA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=TnXml3zX; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="TnXml3zX" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-43246af170aso3136258f8f.0 for ; Tue, 20 Jan 2026 05:33:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916023; x=1769520823; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Avajm5y4036daHiMDTtwCw98gx6dBRxK0z6ouokSi1g=; b=TnXml3zXzsfj8ZbBW7Or2o8WzUlAIN3JOgoYfajkXdNUVgVsVe8B8aiCF/unq3ffqV IdIR0RAxg2Dx7nNzj+QLam1Woy+AiZYG6TtpzRf645NUjwen17sLklAXwt5gMSUUhsGw tbXhxgcDh+0iwp+6mjTfyYWQLY+TLGEDQgh0Er44v32Oc0K476+wGfKfL1iYfqpFwo+2 YoOq1fWnce/2e0mAdiKStxX/Gu89o3uMsglh0cHneno1TjpDJYHP82IaI6Bsi62zt/t+ b/seE7sMXjPelb4bFNgATpui8Nc44wNoXQ74D/tEsCYRgmTkA4w5gpAoYEJa2SLeA9B9 FelA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916023; x=1769520823; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Avajm5y4036daHiMDTtwCw98gx6dBRxK0z6ouokSi1g=; b=fKAY6LTnwqyOF5nAKkskHJb6sXmv2019y4uSCHr4EhvyoZPHWDeOGU1Z9UwWLMPLyH Fx0ukyI5iDbxuKZc6q98Zb3z5VUd2aN50mjL9nERR/j5b6hLGIWxz4gvcsaDElDNWDJI yqE4FCiKYkPPn/cJ61cOPNaHqqOtCOKAocgnXyZUoqUHLXUl9vraOhR708/+Qphnqaxq MkluioMQjhc2o4YO4PFHTdl5It1Z9ciuanyCD1cz+FKO71gxVQ5UOnzm8SJNrU+jeys2 Jpbu3v9BHeN8sMbWqhUlZsdcQOM+M5LLMJdU/h9V2okdq3ILCaR5LbEo9DHtr/C8pA1e LoDQ== X-Forwarded-Encrypted: i=1; AJvYcCUa9JDwaT7n+WrEIQOW//GJmkB6nfuQ9N4fs0odYiiNDhqpVY0aEScOUSl3wIQfkKqAoHdzP8S7ZbWfa3k=@vger.kernel.org X-Gm-Message-State: AOJu0Yxm1i0GoSVl6GulAIplgh28CST/rMx1jPwSPfJEEKGudkUCKUtW oQ/fw+rnsfHs3rH58ZrR3Ko5EUmS4LWoHzcmuNl7AF4YZ9NysjRLSgE0QRZWdN9wEwc= X-Gm-Gg: AZuq6aLJHcbGrGgDr45Mc0s0XZv+OYhFytuiWc0Ni1Mav3qXakIB5zH5C5+NIZ/YSsi 5J/H/Zjjpks+eU+XXq6eOl3j6ZyqKXd95Pd1vWX6jS3o9nFbRULmbxcJZA0APACU09vC8Whj652 wK3WrlRJ2+S+MFRdEuHYEQ4IlzPBX/k2AajVLLw4W+phXRrZarLaVdaz3KX5e2XraodIHLq8wFf 8O9f7T2/UZsk5GjRqnTMMtYABtotzBynRScUNJUBKjQINM5HyCHe2UZ9n6uFjJjoeMPU0iiA3H8 /bbfI5R8LjacqkdnO50fqyOxPthEmn4vqxmqJRSXQVWrNK2NAGhXB3UX22nlXCit4m7SkoJAn/9 E0LUy2QSdVPWWJ+GK5SKCkfFDL9+AGugIJDzAQhhqXC3i0Bb2/5WMZXOfPMvzzRdbFLCkoKkmXb Bs03HG6oyuJCLJVKMukASOW13SddkGaov3b+imJAs= X-Received: by 2002:a05:6000:1817:b0:435:9144:13fe with SMTP id ffacd0b85a97d-435914414e8mr1903692f8f.26.1768916022893; Tue, 20 Jan 2026 05:33:42 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:42 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea , stable@vger.kernel.org Subject: [PATCH v8 2/8] dmaengine: sh: rz-dmac: Move CHCTRL updates under spinlock Date: Tue, 20 Jan 2026 15:33:24 +0200 Message-ID: <20260120133330.3738850-3-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Both rz_dmac_disable_hw() and rz_dmac_irq_handle_channel() update the CHCTRL register. To avoid concurrency issues when configuring functionalities exposed by this registers, take the virtual channel lock. All other CHCTRL updates were already protected by the same lock. Previously, rz_dmac_disable_hw() disabled and re-enabled local IRQs, before accessing CHCTRL registers but this does not ensure race-free access. Remove the local IRQ disable/enable code as well. Fixes: 5000d37042a6 ("dmaengine: sh: Add DMAC driver for RZ/G2L SoC") Cc: stable@vger.kernel.org Reviewed-by: Biju Das Signed-off-by: Claudiu Beznea --- Changes in v8: - none Changes in v7: - collected tags Changes in v6: - update patch title and description - in rz_dmac_irq_handle_channel() lock only around the updates for the error path and continued using the vc lock as this is the error path and the channel will anyway be stopped; this avoids updating the code with another lock as it was suggested in the review process of v5 and the code remain simpler for a fix, w/o any impact on performance Changes in v5: - none, this patch is new drivers/dma/sh/rz-dmac.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index 36f5fc80a17a..c0f1e77996bd 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -304,13 +304,10 @@ static void rz_dmac_disable_hw(struct rz_dmac_chan *c= hannel) { struct dma_chan *chan =3D &channel->vc.chan; struct rz_dmac *dmac =3D to_rz_dmac(chan->device); - unsigned long flags; =20 dev_dbg(dmac->dev, "%s channel %d\n", __func__, channel->index); =20 - local_irq_save(flags); rz_dmac_ch_writel(channel, CHCTRL_DEFAULT, CHCTRL, 1); - local_irq_restore(flags); } =20 static void rz_dmac_set_dmars_register(struct rz_dmac *dmac, int nr, u32 d= mars) @@ -574,8 +571,8 @@ static int rz_dmac_terminate_all(struct dma_chan *chan) unsigned int i; LIST_HEAD(head); =20 - rz_dmac_disable_hw(channel); spin_lock_irqsave(&channel->vc.lock, flags); + rz_dmac_disable_hw(channel); for (i =3D 0; i < DMAC_NR_LMDESC; i++) lmdesc[i].header =3D 0; =20 @@ -706,7 +703,9 @@ static void rz_dmac_irq_handle_channel(struct rz_dmac_c= han *channel) if (chstat & CHSTAT_ER) { dev_err(dmac->dev, "DMAC err CHSTAT_%d =3D %08X\n", channel->index, chstat); - rz_dmac_ch_writel(channel, CHCTRL_DEFAULT, CHCTRL, 1); + + scoped_guard(spinlock_irqsave, &channel->vc.lock) + rz_dmac_ch_writel(channel, CHCTRL_DEFAULT, CHCTRL, 1); goto done; } =20 --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 207D543636C for ; Tue, 20 Jan 2026 13:33:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916028; cv=none; b=CyYwQWRe2COMz1brYb8zfIegiCmokRV6TbGTICIf1MdKYzxQ8GPynNjAySgMvaIqWJye0M0qUYQxDhMTGcq1MJAo5np5RFy+fjDkgGPQjAkbppRtbj3BoE/rbN/EBWef0noxotsVBvYN2dw2Pms7dhgQrdHZ9Lo/hNuxoxvsUxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916028; c=relaxed/simple; bh=W0PMYWluR4s+4ZGBLZytPjvzufu5cGFxS/9iOr9nc0Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NLeX+sUrDz3GFhWR2vvKUHMpqxMjQjcjWZPX/bO5RG0aRG+uJ1a8FxPEbuAWnGHhMHGu6KITbav7/YTR3hDZw/KB+fbXaxNV7PhnNwx3GTuMmJQyY49t8vZ2XEEq0//RsZrmwDKbsELSuAvzvH+Zdz/+zR98UIwoQvYNRzrCRe4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=J8Y9GtX2; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="J8Y9GtX2" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-47edd9024b1so34002325e9.3 for ; Tue, 20 Jan 2026 05:33:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916024; x=1769520824; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VcUa3wgqVKrSdjpDcbTNWk0MXPErhZe+CUK2K28sdgM=; b=J8Y9GtX2BE1NxQK534ARSIktMOL6MgBuXAGg2HpKQin8UppVy6PtHukzsYoDM4JoA+ mHeRgz39cbDqocs5G3cDEAISYey62BKFqn4hE+4eXqo4IxJ8hThWubmSHHyWTMdl4TWT Kl3uFdsjIl97bHBmT2emmbgvhxUbDZGApZq5zzUpsWX/3G1IslNDNR8cHHeBwKqHfSiq nbyskSud+QGdQPNRBjG96hWA50pcedxsV/2xHNnkGBY/hXDTpEUT7YZaJYUi+RdaU1ay OcXRnvTct1/dJHDc/ep/Zdb4KqEQ6ge8QQOgPy7cedOtj//YQITiIqk933G6RjkHTV11 nJKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916024; x=1769520824; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VcUa3wgqVKrSdjpDcbTNWk0MXPErhZe+CUK2K28sdgM=; b=jIoowePoZVnhkNiWndXHWiMV9G7Y6nikXmrgXi7sqmIkk7LiyS3RcRMFCMY3XlEWt0 +28W4/6jpBA7RayBj40oALn4nWs34ZxqYKetsp4Jwtxqxdi6SO8WMz2Q40kzcTA/Uddl F+niugvDg90t+fQKreZ5v1s6KhihHqGJ0rj76RlPly4ELNpT2JNzgp8g6YI/VOCreVNx zR2FpujGyjnAIEyloKMGkHx+UaQ4Ilx7UXI8pMuNCXEfn99f5LcXS8PAse+/D6LMxrZK 81Qe4o5nxRT6ExDPjsV937wP50lp6Xkj6vi8eqv0ufFO7cxxEzVNZs9Hr+b10sD7qSux nDVA== X-Forwarded-Encrypted: i=1; AJvYcCXt2sGAPMXBT7QqIZ5cclHaQH+XloYzhv0Z1PocjLyCkWBVN/0GHUNLmAZXLTSzwh85T4+xSJ0//RGxRSU=@vger.kernel.org X-Gm-Message-State: AOJu0YwDKzkzXJDJ8DLYIlGKg/9ior0qoCnIN47IRjhvk+IiZ8/aqBt9 alJcMYhlQQ8HOh1TVUVNrgZwUDcKQ7MEt5hc6x5ifAH01mCJvgoJtYUBebOcTWUa0zg= X-Gm-Gg: AZuq6aIrENQ8xFtUdZo8Tot/nrFP7Y40oBST8uPNTluy3e6M1+ZfzCw2Yz1CtzwyD7M 2UopJRc4MecJy7cZDgXKG5sxj2hAjtKDGGOpfrLI2yc9pbd8X5HKC/53f1qbcKpNpFE69TaMvfQ J1WtlZDjQuBJKP2Hn76gVDqZaaud69WCQLfIaW5eG1lkulmcJQvvNxAUnD8U0snlJe9+tgcczmS 6BkhGV9VaEAJR9nTNPlfvzsHUhm2siCUso04Suw8vyZSbo2mJm/EX590SZ1l7T/aKxY1fVOgIyd 7xmU/rwO1mTbJ81iAbpdicJdkiSu7iz6tIY2dty5/AUv+a/uhgzr5A9LjDRbAmxshVUEqextPrL whrpEu6mqObSJNWXgkIgyV5nXLp5R7H2eu7mEe0kg243jZe0KLadnQdqLvxjlOL/w+ZEechgqvu P4VrFLODq1R1j9Fg13ETUSsP/hqybu5CVI3Ba6sz0= X-Received: by 2002:adf:f983:0:b0:435:6c8d:d017 with SMTP id ffacd0b85a97d-4356c8dd0d7mr16960338f8f.32.1768916024434; Tue, 20 Jan 2026 05:33:44 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:43 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea Subject: [PATCH v8 3/8] dmaengine: sh: rz-dmac: Drop read of CHCTRL register Date: Tue, 20 Jan 2026 15:33:25 +0200 Message-ID: <20260120133330.3738850-4-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea The CHCTRL register has 11 bits that can be updated by software. The documentation for all these bits states the following: - A read operation results in 0 being read - Writing zero does not affect the operation All bits in the CHCTRL register accessible by software are set and clear bits. The documentation for the CLREND bit of CHCTRL states: Setting this bit to 1 can clear the END bit of the CHSTAT_n/nS register. Also, the DMA transfer end interrupt is cleared. An attempt to read this bit results in 0 being read. 1: Clears the END bit. 0: Does not affect the operation. Since writing zero to any bit in this register does not affect controller operation and reads always return zero, there is no need to perform read-modify-write accesses to set the CLREND bit. Drop the read of the CHCTRL register. Also, since setting the CLREND bit does not interact with other functionalities exposed through this register and only clears the END interrupt, there is no need to lock around this operation. Add a comment to document this. Reviewed-by: Biju Das Signed-off-by: Claudiu Beznea --- Changes in v8: - none Changes in v7: - collected tags Changes in v6: - none, this patch is new drivers/dma/sh/rz-dmac.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index c0f1e77996bd..bb9ca19cf784 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -697,7 +697,7 @@ static void rz_dmac_irq_handle_channel(struct rz_dmac_c= han *channel) { struct dma_chan *chan =3D &channel->vc.chan; struct rz_dmac *dmac =3D to_rz_dmac(chan->device); - u32 chstat, chctrl; + u32 chstat; =20 chstat =3D rz_dmac_ch_readl(channel, CHSTAT, 1); if (chstat & CHSTAT_ER) { @@ -709,8 +709,11 @@ static void rz_dmac_irq_handle_channel(struct rz_dmac_= chan *channel) goto done; } =20 - chctrl =3D rz_dmac_ch_readl(channel, CHCTRL, 1); - rz_dmac_ch_writel(channel, chctrl | CHCTRL_CLREND, CHCTRL, 1); + /* + * No need to lock. This just clears the END interrupt. Writing + * zeros to CHCTRL is just ignored by HW. + */ + rz_dmac_ch_writel(channel, CHCTRL_CLREND, CHCTRL, 1); done: return; } --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3542438FE3 for ; Tue, 20 Jan 2026 13:33:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916029; cv=none; b=DSVG20rB8hZTffxI6WMndc3ZUAL9XnjwEEeinPtv1yJIoC4JPpsxl23pTOJQe+093pOgO+p9DyXErBaAQF38uzTjZCjFbtSKkD/5nvohW+Q/VZURYEhRA95Tv+EmkJvEOuSM+U0SHlVNVcKEBBCRDdFlHddqNJDGIDzehbtL4fM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916029; c=relaxed/simple; bh=5mM2uTcjaYXheBt0FIVFSFgIssygZdhyDFfDja25cB0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A/b+JoeUKhVxxWAP8HBlJYPWRaClRn6rcdXsMpd+YruGUdDkVVnZNf7zZuWRXfdoapJP3MpHs/P+nAWegeNSQHGBYvaBJyq3GN8wq16J74v5K9mWYIIEAwMtFxMmcRSF4o805Ur0JcxQ82xUHBMzSz3R8b0I4PfPSoDBzg3lqw0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=V02zpTjo; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="V02zpTjo" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-47f5c2283b6so35474165e9.1 for ; Tue, 20 Jan 2026 05:33:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916026; x=1769520826; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GCRWv8BoukUYariTfudysMyZzqcHq5px1XRxiaHfVGI=; b=V02zpTjoMYI5fv4nhphhgeiGxy9WYLfJzrTjT8xmmn0m1LWGJ33PhQdFFGPG2Pm0Be 6ezJAJbtQ3f3GmqMNZAoM+CI2ML3lffm6X5MGtP8phyAhigmOX2p0lVyEDJhwUS0bgfL armNaa0kCt9BbLgWV1rkY7blGqafr9CWthSGVIfY1FMiIhvgU5xzoDLc5YAgfw3VFXlS TmuQdEMlN6WC2eIIzcDuq0mx4s8P7vYlDcgkPkglJ5Q4t+a1l5lfB8xSp2NYy0r9MNJy CJiKkNCAUWi8wxaxNJugbKnFPPaKGpmzScpOZTv15mZiFPtBuIY+cZGwWzzkayHb+AyV KT1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916026; x=1769520826; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=GCRWv8BoukUYariTfudysMyZzqcHq5px1XRxiaHfVGI=; b=Xg4cqI3GHybi5Fmh5VdvtUXKlvNweqO2J11sMvIPSTs83M6xRBlYGwViD0880VO+dE C2nJ/nqe9uIhO5jupMewrcpJZQlgO3vM48rWYwCpP1maA0zWZBoHbo/Xe6rYn8WpvYpa ljw6pX2c1ai8Du5CLQV5I49Dffa37o7EzJs3BqWdUELcBje0DGPCcVtNXvuX4eIyAmmL rpJKsFKDeZ/YBTkBCd9CLuUnGLkgZFy4dMfBthYySXN0T8P3aTF1fPaWVvwk84pMYKkW bqJc0M1ALo8Fh/JrQuGGXl7JfcvSi8cPoEdMsnGCLZHcg4d0tI4oi5bV5EyLdXGlAUaL t0Ng== X-Forwarded-Encrypted: i=1; AJvYcCX9U+C1gSnoKYEhQCO/KpEvu77cLRxnVq5315juAuDAtY3dmeY7kb6g1Bio05Iixp/SKPiNj9JrH8h3jzo=@vger.kernel.org X-Gm-Message-State: AOJu0YyfTkjyxIDECPugFLXq04B/deMKIxEwp8C5TuS84YtWbottt1En 2LPxhqNjQHD/N6x3BXrCUo+gdtqafQaPI+1Io8QlQIlP/gYsA3LWxC1IV1aSyzJd8wY= X-Gm-Gg: AY/fxX7d57RlqBVIdoaP/Drw6knFvjic4ujOa1Yp8JF97Ei1bmgZe3lS8cnxuTnifvY vRKSMAVXoZhCuxccZJyyE7oMni2Ojlx8aX6G6andZfIt19Au+mObgIHYQH5Jxx+LaIGCfRKUvI7 LJ0Lpu0w36xfshN9qBzbUsb3V6JywUgcBC2vOU8tN444DTs69CeeBIBS3USXanG2eb+hI41MoD1 jnCXzzBa7/GgYdKeHeIGnkxhfzBaNcRjFr4gnFxx9dtfDDB3cIyCOOTbbksf0FToFa5soScV/ea b7OvpbCQmlkUUE0fr4/tDemF7C4BiOpiAqZcEJeTuSA6+atw7BKXeIN+fO4EtvniEzbkb+SoboO FVcY6CzA4bgGfA8Xv/CLXTeSuFeRc/+1/NAOM7mTp2cdsK01VZpuJe16RxDUqHP2ojQBbimrkI+ o1Fus6srLktysaJ1cgUyDxG4a4aHSrpaiCp7JIUkg= X-Received: by 2002:a05:600c:4f8a:b0:480:3c28:838 with SMTP id 5b1f17b1804b1-4803e78ffbemr25694855e9.8.1768916025719; Tue, 20 Jan 2026 05:33:45 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:45 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea Subject: [PATCH v8 4/8] dmaengine: sh: rz-dmac: Drop goto instruction and label Date: Tue, 20 Jan 2026 15:33:26 +0200 Message-ID: <20260120133330.3738850-5-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea There is no need to jump to the done label just to return. Return immediately. Signed-off-by: Claudiu Beznea --- Changes in v8: - none Changes in v7: - none Changes in v6: - none, this patch is new drivers/dma/sh/rz-dmac.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index bb9ca19cf784..cc540b35dc29 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -706,7 +706,7 @@ static void rz_dmac_irq_handle_channel(struct rz_dmac_c= han *channel) =20 scoped_guard(spinlock_irqsave, &channel->vc.lock) rz_dmac_ch_writel(channel, CHCTRL_DEFAULT, CHCTRL, 1); - goto done; + return; } =20 /* @@ -714,8 +714,6 @@ static void rz_dmac_irq_handle_channel(struct rz_dmac_c= han *channel) * zeros to CHCTRL is just ignored by HW. */ rz_dmac_ch_writel(channel, CHCTRL_CLREND, CHCTRL, 1); -done: - return; } =20 static irqreturn_t rz_dmac_irq_handler(int irq, void *dev_id) --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD73C438FF7 for ; Tue, 20 Jan 2026 13:33:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916030; cv=none; b=GlM2DPkivhxqZp0AxBMPtEH4bWpRvac5Hz3mq3v08Xcd/MKYIEol1n71MPZyp2JfiGb4w36HSrl7aoQR/RbxUv/cxPV+nNvhbEymvgi5PIsE3cjXBKuud6/LS/9PNcjkujGWOzjDUt9BZyMdpkniFoB0vKmNHTJMvV3wMqj+7cY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916030; c=relaxed/simple; bh=Srrns1UbIhd+W/08Zz/FajPVxyWsymnEvTSHjcquxoA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IeE2/ySOBqFeCJwOGWFIH4HogMtDuALB/wRIWauGslNkFSbYa7gPjIG8p/WeFk6oK7FD0xpfoEG0kqCy2sC8HUcL6p32dXVf1p6xvnL9l5CG0TPcXWvtY7FQycF9bOAlp9Z5mGR9olGs5CpUtCqtUzKcTR8ARFM0r4G9EHvN7/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=IuORIvlC; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="IuORIvlC" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-43596062728so173041f8f.1 for ; Tue, 20 Jan 2026 05:33:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916027; x=1769520827; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MV8DeVgKKaG/bWcnGvfHKBTE2gBrbH2K1tyqM9pJWLk=; b=IuORIvlCBulJHSjzNd7BlDcuIfjId1s25m2v3ni88fAn/0FWB9FQIJy/SXKqnyHYvD xolALuacTXK3Hr6R1OEcKYtG8YqHUKVpArhzTTyTH0sIXCb/zNnx2N35VcGNcwVYmKcO F/rCtYzDpm3tc/ffsS8tzhRW4ty8ujuBqc5K6Omk2hxP2m1FC8NmaioOQCNHPVtMGMG8 4d/jFzcKvOeqJibqtzHE15qDZbOnRD2QmAvS+LkGdRAcXd2Mn5sVZXyr2u64+fRHhuIr BraKOy+WwP90NblFxE4Cx9RrwR0OIYIonWJBFBr3V+u7+1lIeoCa9iXSn9uLcVjVxMpw LJDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916027; x=1769520827; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MV8DeVgKKaG/bWcnGvfHKBTE2gBrbH2K1tyqM9pJWLk=; b=lUbhrq6BMe8kxb0WaDNHrkd1vIGsL1iRqhPxpQi06ykhZscr1eWm+OVtIXmpPb2AZT ODzEzrqYz6TImW5ewUsodP99wOrPmzN+o/b3jvA02ohk2fcK5jyIq93GI9S3SjoTTuyh 7Mq6o6fpmsbf6i1xPcywjdyOo8Rfal3Vz+1xVtF5OIgvwp3CSawy+zS+sFsKn+nVzkEs 6BgLHyRqBYxKYRBzWPxqkpR8GtGYEi6uh1sN+VVuiCgsjHqYoSdHKaCzNgE8NowQRtM8 /+whSV6Mnmql58dEoJSYrNYRtReWgdgrEGjhHhAQzM1b1+Oorm4CgfR9+A7sHWrEJIl3 1JUw== X-Forwarded-Encrypted: i=1; AJvYcCWmry7a8cF0nuYDJv/39ypU+yOyHv8XgQ+y383HxtPjGj/Zru6Sn3hqVQHaHoa4VwYcNxipfLy9nM0pPWM=@vger.kernel.org X-Gm-Message-State: AOJu0YzvBO2Wc+Fvln2sY+/eVOqLuNPpXe4RRmgxsPnKtF+HHkkTJeUh Q7enOhV5odbfHr05Oxz7SG3wN1ytrxR3vA7FDn+WU1n3FjFl2I0tbTlBuNHaUrfbFJ8= X-Gm-Gg: AZuq6aIztkZsMLsP2pCLV9HiNnuVCF+B+4mr7bmV8ps3JC3XuUfrsGLLh/RoL2Ex4yH pLMQUmsplrfDpRJqQYXd+sTCbaLLVxSgNIwOXkDDCnapIypef5SxtxPy9kJ23YP2nhPJQ1p4FMK E75l0/dpKq8jzxh5BC3eat99dv8wsNbC7qit5HpezuXd/29jyusD7bV2KK5UoTc1m7XpzHRoGXs NwVgl3ckREUy9DE4hqfsnfmKvgBE5hYdypzdpYYqV6zriRZnmfXWiEjQa6kXvFaTccbnJxHjZia 5bXZIflvREV4vazbWxxRdO9vau7hlyjIncb52llgxlqUVrqQ3myZqqpqjmeM0XxcSAWo/WCNM2o IHfSD3io7w0sllbnylfX9LxR6LamvOChnCZCyrLiehqHould2bvt7YqMZKwkRW9xlpSh9ovgJ9i cZiQ30YdBHdD1F3kkd3KjWexrxVmVGOnRfTD1XykI= X-Received: by 2002:a05:6000:25c3:b0:435:953e:5897 with SMTP id ffacd0b85a97d-435953e5bbcmr1722508f8f.25.1768916027069; Tue, 20 Jan 2026 05:33:47 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:46 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea Subject: [PATCH v8 5/8] dmaengine: sh: rz-dmac: Drop unnecessary local_irq_save() call Date: Tue, 20 Jan 2026 15:33:27 +0200 Message-ID: <20260120133330.3738850-6-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea rz_dmac_enable_hw() calls local_irq_save()/local_irq_restore(), but this is not needed because the callers of rz_dmac_enable_hw() already protect the critical section using spin_lock_irqsave()/spin_lock_irqrestore(). Remove the local_irq_save()/local_irq_restore() calls. Signed-off-by: Claudiu Beznea --- Changes in v8: - none Changes in v7: - none Changes in v6: - none Changes in v5: - none, this patch is new drivers/dma/sh/rz-dmac.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index cc540b35dc29..1d2b50d6273b 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -273,15 +273,12 @@ static void rz_dmac_enable_hw(struct rz_dmac_chan *ch= annel) { struct dma_chan *chan =3D &channel->vc.chan; struct rz_dmac *dmac =3D to_rz_dmac(chan->device); - unsigned long flags; u32 nxla; u32 chctrl; u32 chstat; =20 dev_dbg(dmac->dev, "%s channel %d\n", __func__, channel->index); =20 - local_irq_save(flags); - rz_dmac_lmdesc_recycle(channel); =20 nxla =3D channel->lmdesc.base_dma + @@ -296,8 +293,6 @@ static void rz_dmac_enable_hw(struct rz_dmac_chan *chan= nel) rz_dmac_ch_writel(channel, CHCTRL_SWRST, CHCTRL, 1); rz_dmac_ch_writel(channel, chctrl, CHCTRL, 1); } - - local_irq_restore(flags); } =20 static void rz_dmac_disable_hw(struct rz_dmac_chan *channel) --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15528439013 for ; Tue, 20 Jan 2026 13:33:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916032; cv=none; b=FjTj3+88liS5r7gfbYerCcF17JXAv4VV8iWyHF7MGXFXBVq8FzBTRF5QjEKEEI5L8+uwkxO/TL4rqe5up/1qHfQJyNgj3hT4F/U3ByevHQcIF/LDVlPgDhWEHDMaRYEqPuz7TEYAAboF14PRBWgd+ltXEL8+8cc6sjWunUwZnlA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916032; c=relaxed/simple; bh=m77zOpALSyNtcyFmOUw9w2UEW+MDDblSkvPS8bNGpNs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BpgVYR7Lfp2FqWRPnbtkznsmZwhOlY10irDzverN7zkxa/tqU+Mn1HkoXNUNjmEqQgDMlO8mMnS40/3AkPbbza5zjFMqA/BAvEbYNTRotvQV+LIXs42q7UhdSp4lA06SAfvbVxq92qcD5N2u3BrXUTRLUY6VulnVBoA3UvZB9fk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=PiprLM5W; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="PiprLM5W" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-432d256c2e6so4544613f8f.3 for ; Tue, 20 Jan 2026 05:33:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916028; x=1769520828; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QKsTj4m4+06Hp+IFPIu8Y7r+3Udg8E1fB4/dkbfWl54=; b=PiprLM5Wqrs2WxZ8VhvSZIJoP57Mbw3RBm5T3YEEvhOcizs37m61/vZxaw+0tROTUY +qamxBCWAVmD7nYROG66j2i1djEVdgYgbrYUSJwNnLMRgk48VpCR+AYUn6pHb485671G MM8uzxbCP1HFzJKL1e1THPj+EjlJ1ZNfYhHxIJ7wDc/n6Mxl+NBMjqZG+j2r3SWK1NCx acn7UlOo7r2bh01h+LTcR6WGCtE+v2URDQg+HwFSUg/x+tzuqSKfgJP3gx/99Yyp8ccJ wUy1We93hYCJ5RHzBpnEBJMRdEyFEA8E3jVfqV2JOwQfeEEwLScL9maoPvtCCIoFknQP 2oJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916028; x=1769520828; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QKsTj4m4+06Hp+IFPIu8Y7r+3Udg8E1fB4/dkbfWl54=; b=neZ1P7XhuxEYPIT+y4DscAWH+wQpubiaOEBucRTHXkFjpwcTb00USM4f19ojbWcpKM gEH9q994rZv20wMg+muDMDqvUTYRfboxjtbulA13zWIjsWhE+VKd9qVgCtPkE6sHP8Ak 3fTl25zqL06w9IQFp4/7lGSd1WppQDLhVhkFZUkx+n2Xfw9FhJDpy9wQbZjVN8aLZywW cVOt8+66wFuGXrWToaiBGG8P0tUETMjleifRvrbAG/7RMp1+VvT8HKqTs8Z25nHpZXKw teRdLxkceK5eBUflW75ohj2UF7fPh8zlnvjEbuS2s/99RNwfqCgbAYBi1CSOh9l+luFs ygzQ== X-Forwarded-Encrypted: i=1; AJvYcCWXa4y4Butq4gojDu+GYIL4be9c0Pk3RCLe9HHHbR6sTsp9PggLcV8nLPYVGjGs+hPr/CKZl77nFvKEEVU=@vger.kernel.org X-Gm-Message-State: AOJu0YzMERpJwpHymEsh832accMDE7/IpPU2gb7IqTIJB3bDvMj3G+60 LW8ztZJEm17xvh6nIPK35tkqvhKD3SJLCOht6iC+qe3obrRCUcBhYx7f3TjA4vy4N1U= X-Gm-Gg: AZuq6aKXYf2WKQWsQh4Ge2x8Zs8d1OJnuZblJceTTQ7cQWtuDzH6kKowMAmu4G95tHH Sf45xR5F2N8D66p5/BIPeFPFdSxr9Ie9RWWYXX+nNqD0v6QCAcbN3F6svDpuvNIEaiW9ZOnHb3s eFwy7pLXgYPzrUOOpaifJoK2VvDuEAX2OyJtC0GB/AfrxAwhoHLQoGRDGKoYd1bAvugX2eEI0ra thUZHvtzQuutBw/rVfs6WNnx1H9SnR+0va8nM8bC/v/7IgWsj2/aZYsTs03aoOQcGQYPJalz2iX fBt7qrNfjMZcyYJ13APb5nSzHiy+dAzhSR4iNozqzOG8V3TbjlsrqOmFwbGX8nW1bbPS41pegOk hGXqry7WPgbs/thrYvzcv9Hmz8kmE1adOSnrx6H7Y3c/X6VFq8mvSqh557iCjOEgZZNn5v01kUT borK1drzpkuQq4DECmh8dgwsk+/3Oz1S2VCFHBTpc= X-Received: by 2002:a05:6000:2486:b0:432:dfea:1fa8 with SMTP id ffacd0b85a97d-4358ff300f1mr2754677f8f.45.1768916028280; Tue, 20 Jan 2026 05:33:48 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:47 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea Subject: [PATCH v8 6/8] dmaengine: sh: rz-dmac: Add rz_dmac_invalidate_lmdesc() Date: Tue, 20 Jan 2026 15:33:28 +0200 Message-ID: <20260120133330.3738850-7-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das Add rz_dmac_invalidate_lmdesc() so that the same code can be shared between rz_dmac_terminate_all() and rz_dmac_free_chan_resources(). Based on a patch in the BSP by Long Luu . Signed-off-by: Biju Das [claudiu.beznea: adjusted the commit description; defined the lmdesc inside the for block to have more compact code] Signed-off-by: Claudiu Beznea --- Changes in v8: - none Changes in v7: - none Changes in v6: - none Changes in v5: - adjusted the commit description - defined the lmdesc inside the for block drivers/dma/sh/rz-dmac.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index 1d2b50d6273b..4602f8b7408a 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -256,6 +256,13 @@ static void rz_lmdesc_setup(struct rz_dmac_chan *chann= el, * Descriptors preparation */ =20 +static void rz_dmac_invalidate_lmdesc(struct rz_dmac_chan *channel) +{ + for (struct rz_lmdesc *lmdesc =3D channel->lmdesc.base; + lmdesc < channel->lmdesc.base + DMAC_NR_LMDESC; lmdesc++) + lmdesc->header =3D 0; +} + static void rz_dmac_lmdesc_recycle(struct rz_dmac_chan *channel) { struct rz_lmdesc *lmdesc =3D channel->lmdesc.head; @@ -461,15 +468,12 @@ static void rz_dmac_free_chan_resources(struct dma_ch= an *chan) { struct rz_dmac_chan *channel =3D to_rz_dmac_chan(chan); struct rz_dmac *dmac =3D to_rz_dmac(chan->device); - struct rz_lmdesc *lmdesc =3D channel->lmdesc.base; struct rz_dmac_desc *desc, *_desc; unsigned long flags; - unsigned int i; =20 spin_lock_irqsave(&channel->vc.lock, flags); =20 - for (i =3D 0; i < DMAC_NR_LMDESC; i++) - lmdesc[i].header =3D 0; + rz_dmac_invalidate_lmdesc(channel); =20 rz_dmac_disable_hw(channel); list_splice_tail_init(&channel->ld_active, &channel->ld_free); @@ -561,15 +565,12 @@ rz_dmac_prep_slave_sg(struct dma_chan *chan, struct s= catterlist *sgl, static int rz_dmac_terminate_all(struct dma_chan *chan) { struct rz_dmac_chan *channel =3D to_rz_dmac_chan(chan); - struct rz_lmdesc *lmdesc =3D channel->lmdesc.base; unsigned long flags; - unsigned int i; LIST_HEAD(head); =20 spin_lock_irqsave(&channel->vc.lock, flags); rz_dmac_disable_hw(channel); - for (i =3D 0; i < DMAC_NR_LMDESC; i++) - lmdesc[i].header =3D 0; + rz_dmac_invalidate_lmdesc(channel); =20 list_splice_tail_init(&channel->ld_active, &channel->ld_free); list_splice_tail_init(&channel->ld_queue, &channel->ld_free); --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 768F343C052 for ; Tue, 20 Jan 2026 13:33:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916033; cv=none; b=fCKuqvEwyLMku6/SZPYec9iS+6e0TxA+9znEGAOA0gz3h1IODaSFx6ZJ1eJr7gP8yRd03ug8rYvscmLXc90h4aP1plSFclPE1tL0DYoYyBLRqI/QAIzhI4NiNXlC4h7bGoTAY/XOUqXZ9WjaAHA3nviRbCK16Ox9ANZ1S3yGx0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916033; c=relaxed/simple; bh=o4M2IWsmqIIAFJgMEBDJzmV4HRAbRJRDwcspKwKckv8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iV8RtPagyFlK8SvW7Z0/zFgcx7n5OQSskyMGeNhYgCiufF5aV/RMsmlYd9xQckItC9yYO7oTHGK+MiNyNWX+daCDfdmt+qAtIu/Lg262ZcP458wvWzZq6b+uzWRJmXdnUHSExf/5SE6gnreYNeQyA6+aoJKRcN1j1t6t6PR88+M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=LRkkn/5S; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="LRkkn/5S" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-47d63594f7eso38197315e9.0 for ; Tue, 20 Jan 2026 05:33:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916029; x=1769520829; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qf5FXhcean7d3UoIj1n4atOkrjx5heNNBTiKucMvKis=; b=LRkkn/5SUHp9VcMiHYOxOlbhMdOQ3ogbp6qkc/PM2vdW6Efehmg6xyP2T7MNPQwOGa KcBJllZV1tUVfHkJhA+vRt03TjWRu3UlVKUNj1BdVy8g2zFx7ddwHbt9+yRUVoty4uuH pDbIP7QIW2+wZJjS/nyB54I+P+BzEmD5bTEf9jm8y81jvvrC5fPFkiO8OUjNUNi+HJ1j fQ0uBIgyYbMhleCjFh8xvXzUv9Ohqvy7xEPRzBrpLMiotiVDDq6ZBBWlS7EHm7xYf1AO 1ieBw1mQQrvOesyzMrWZJrZxzmMaSpUpGcYzO6JWvWZzkfY+ud4WJ/gRCcBFMiCMdAY/ T6fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916029; x=1769520829; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qf5FXhcean7d3UoIj1n4atOkrjx5heNNBTiKucMvKis=; b=M4V7tWUFop6R4C2ZryJkpQWtYZ7WUMsZMwuLOqhtu1dbloQdFPeDnj902UcyZiMOQw lJ6jIgoNM6vk9aiPdUSMJNsmEQBnJblfMpnWIorZZPQSe03CnhFvEOtlI/ArhpDQMQAv KYsW5S7ffIDfmqoJxrLzwbCrxgjUZ6XuEUEehEqgPuJZ7GTA6g7kFjraeeIHskzpu9xd thoyxHIFe5gQK+kmYy12X4RCqyL8vXM+ofzoJsap7nUuawCy2kaxuIscFy9MduWrgvyI mj6tyh6NkhZqNvSjNg1VDsRGCD78pe32Dl+rg7ZxNFSi6Zuo20CVyooD1mKbFjfTfySL Kv/g== X-Forwarded-Encrypted: i=1; AJvYcCXyieVMrQImWkEweajqAlZuItvAI2HejLjHFkmfXKM2st0DKy8odbI1vwU0X9gdeR6j6jQwdmxHxGYkC4w=@vger.kernel.org X-Gm-Message-State: AOJu0YzdAiITcxwcWc4svsNozXJ6/oRBqWcyzgEdANBoF7evAp/lIgBi yKmWKG+/8yk2WXIw7iMEhWllHbmUaw+2fgEnXmaVK7ULHCa7m3iTtiteF5Ut4zIePbo= X-Gm-Gg: AY/fxX70vViQ/HgbuPbzfX+6DhU8XA5HJ3/gv3Bl23oep37dc3BqTeXb4A9xtl1FWhK RRFKcoie1vdh2wUAmbxqOJgXSLZCJ4Ep7nrFvSsv7elGnhNezQKyivOdCv353fBmiijGA721pR0 XtHFKtHinhdJ/hnBE6N0ULLst7lAjd4H2VMa03e5DB/QXUEe3QmIjzpj/LGxOS3KFDmum/9MZ08 vGUyDsWdOX5f5geUV948zUWL/5aWTQR8dZdngDuSBvsDXx/SvBxmL84XV6x/5dOWrVEgMQz/3LM VgkyrEI7iX0CO5YrKI1Tbz2GZRhucDNPga0hsG84jc80ffwGezlVwpPqRK3ZDTmkkP9E6yOhRgn kI+lbRjoILOvyyEmTS3rwwOdNv9ieqSWB+G+G4GhZSY2tCN8HKeI83+bye9j/uPuQ6X8M9E1nVc 04+YQXyVoAi9FHIx//Xi2EVEnrL32e8B+/eLMCR8I= X-Received: by 2002:a05:600c:35d2:b0:47e:f481:24b7 with SMTP id 5b1f17b1804b1-4801e33a871mr246126415e9.17.1768916029549; Tue, 20 Jan 2026 05:33:49 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:49 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea Subject: [PATCH v8 7/8] dmaengine: sh: rz-dmac: Add device_tx_status() callback Date: Tue, 20 Jan 2026 15:33:29 +0200 Message-ID: <20260120133330.3738850-8-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das Add support for device_tx_status() callback as it is needed for RZ/G2L SCIFA driver. Based on a patch in the BSP similar to rcar-dmac by Long Luu . Signed-off-by: Biju Das [claudiu.beznea: - post-increment lmdesc in rz_dmac_get_next_lmdesc() to allow the next pointer to advance - use 'lmdesc->nxla !=3D crla' comparison instead of '!(lmdesc->nxla =3D=3D crla)' in rz_dmac_calculate_residue_bytes_in_vd() - in rz_dmac_calculate_residue_bytes_in_vd() use '++i >=3D DMAC_NR_LMDESC' to verify if the full lmdesc list was checked - drop rz_dmac_calculate_total_bytes_in_vd() and use desc->len instead - re-arranged comments so they span fewer lines and are wrapped to ~80 characters - use u32 for the residue value and the functions returning it - use u32 for the variables storing register values - fixed typos] Signed-off-by: Claudiu Beznea --- Changes in v8: - populated engine->residue_granularity Changes in v7: - none Changes in v6: - s/byte/bytes in comment from rz_dmac_chan_get_residue() Changes in v5: - post-increment lmdesc in rz_dmac_get_next_lmdesc() to allow the next pointer to advance - use 'lmdesc->nxla !=3D crla' comparison instead of '!(lmdesc->nxla =3D=3D crla)' in rz_dmac_calculate_residue_bytes_in_vd() - in rz_dmac_calculate_residue_bytes_in_vd() use '++i >=3D DMAC_NR_LMDESC' to verify if the full lmdesc list was checked - drop rz_dmac_calculate_total_bytes_in_vd() and use desc->len instead - re-arranged comments so they span fewer lines and are wrapped to ~80 characters - use u32 for the residue value and the functions returning it - use u32 for the variables storing register values - fixed typos drivers/dma/sh/rz-dmac.c | 145 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index 4602f8b7408a..27c963083e29 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -125,10 +125,12 @@ struct rz_dmac { * Registers */ =20 +#define CRTB 0x0020 #define CHSTAT 0x0024 #define CHCTRL 0x0028 #define CHCFG 0x002c #define NXLA 0x0038 +#define CRLA 0x003c =20 #define DCTRL 0x0000 =20 @@ -684,6 +686,146 @@ static void rz_dmac_device_synchronize(struct dma_cha= n *chan) rz_dmac_set_dma_req_no(dmac, channel->index, dmac->info->default_dma_req_= no); } =20 +static struct rz_lmdesc * +rz_dmac_get_next_lmdesc(struct rz_lmdesc *base, struct rz_lmdesc *lmdesc) +{ + struct rz_lmdesc *next =3D ++lmdesc; + + if (next >=3D base + DMAC_NR_LMDESC) + next =3D base; + + return next; +} + +static u32 rz_dmac_calculate_residue_bytes_in_vd(struct rz_dmac_chan *chan= nel) +{ + struct rz_lmdesc *lmdesc =3D channel->lmdesc.head; + struct dma_chan *chan =3D &channel->vc.chan; + struct rz_dmac *dmac =3D to_rz_dmac(chan->device); + u32 residue =3D 0, crla, i =3D 0; + + crla =3D rz_dmac_ch_readl(channel, CRLA, 1); + while (lmdesc->nxla !=3D crla) { + lmdesc =3D rz_dmac_get_next_lmdesc(channel->lmdesc.base, lmdesc); + if (++i >=3D DMAC_NR_LMDESC) + return 0; + } + + /* Calculate residue from next lmdesc to end of virtual desc */ + while (lmdesc->chcfg & CHCFG_DEM) { + residue +=3D lmdesc->tb; + lmdesc =3D rz_dmac_get_next_lmdesc(channel->lmdesc.base, lmdesc); + } + + dev_dbg(dmac->dev, "%s: VD residue is %u\n", __func__, residue); + + return residue; +} + +static u32 rz_dmac_chan_get_residue(struct rz_dmac_chan *channel, + dma_cookie_t cookie) +{ + struct rz_dmac_desc *current_desc, *desc; + enum dma_status status; + u32 crla, crtb, i; + + /* Get current processing virtual descriptor */ + current_desc =3D list_first_entry(&channel->ld_active, + struct rz_dmac_desc, node); + if (!current_desc) + return 0; + + /* + * If the cookie corresponds to a descriptor that has been completed + * there is no residue. The same check has already been performed by the + * caller but without holding the channel lock, so the descriptor could + * now be complete. + */ + status =3D dma_cookie_status(&channel->vc.chan, cookie, NULL); + if (status =3D=3D DMA_COMPLETE) + return 0; + + /* + * If the cookie doesn't correspond to the currently processing virtual + * descriptor then the descriptor hasn't been processed yet, and the + * residue is equal to the full descriptor size. Also, a client driver + * is possible to call this function before rz_dmac_irq_handler_thread() + * runs. In this case, the running descriptor will be the next + * descriptor, and will appear in the done list. So, if the argument + * cookie matches the done list's cookie, we can assume the residue is + * zero. + */ + if (cookie !=3D current_desc->vd.tx.cookie) { + list_for_each_entry(desc, &channel->ld_free, node) { + if (cookie =3D=3D desc->vd.tx.cookie) + return 0; + } + + list_for_each_entry(desc, &channel->ld_queue, node) { + if (cookie =3D=3D desc->vd.tx.cookie) + return desc->len; + } + + list_for_each_entry(desc, &channel->ld_active, node) { + if (cookie =3D=3D desc->vd.tx.cookie) + return desc->len; + } + + /* + * No descriptor found for the cookie, there's thus no residue. + * This shouldn't happen if the calling driver passes a correct + * cookie value. + */ + WARN(1, "No descriptor for cookie!"); + return 0; + } + + /* + * We need to read two registers. Make sure the hardware does not move + * to next lmdesc while reading the current lmdesc. Trying it 3 times + * should be enough: initial read, retry, retry for the paranoid. + */ + for (i =3D 0; i < 3; i++) { + crla =3D rz_dmac_ch_readl(channel, CRLA, 1); + crtb =3D rz_dmac_ch_readl(channel, CRTB, 1); + /* Still the same? */ + if (crla =3D=3D rz_dmac_ch_readl(channel, CRLA, 1)) + break; + } + + WARN_ONCE(i >=3D 3, "residue might not be continuous!"); + + /* + * Calculate number of bytes transferred in processing virtual descriptor. + * One virtual descriptor can have many lmdesc. + */ + return crtb + rz_dmac_calculate_residue_bytes_in_vd(channel); +} + +static enum dma_status rz_dmac_tx_status(struct dma_chan *chan, + dma_cookie_t cookie, + struct dma_tx_state *txstate) +{ + struct rz_dmac_chan *channel =3D to_rz_dmac_chan(chan); + enum dma_status status; + u32 residue; + + status =3D dma_cookie_status(chan, cookie, txstate); + if (status =3D=3D DMA_COMPLETE || !txstate) + return status; + + scoped_guard(spinlock_irqsave, &channel->vc.lock) + residue =3D rz_dmac_chan_get_residue(channel, cookie); + + /* if there's no residue, the cookie is complete */ + if (!residue) + return DMA_COMPLETE; + + dma_set_residue(txstate, residue); + + return status; +} + /* * -----------------------------------------------------------------------= ------ * IRQ handling @@ -1007,6 +1149,7 @@ static int rz_dmac_probe(struct platform_device *pdev) engine =3D &dmac->engine; dma_cap_set(DMA_SLAVE, engine->cap_mask); dma_cap_set(DMA_MEMCPY, engine->cap_mask); + engine->residue_granularity =3D DMA_RESIDUE_GRANULARITY_BURST; rz_dmac_writel(dmac, DCTRL_DEFAULT, CHANNEL_0_7_COMMON_BASE + DCTRL); rz_dmac_writel(dmac, DCTRL_DEFAULT, CHANNEL_8_15_COMMON_BASE + DCTRL); =20 @@ -1014,7 +1157,7 @@ static int rz_dmac_probe(struct platform_device *pdev) =20 engine->device_alloc_chan_resources =3D rz_dmac_alloc_chan_resources; engine->device_free_chan_resources =3D rz_dmac_free_chan_resources; - engine->device_tx_status =3D dma_cookie_status; + engine->device_tx_status =3D rz_dmac_tx_status; engine->device_prep_slave_sg =3D rz_dmac_prep_slave_sg; engine->device_prep_dma_memcpy =3D rz_dmac_prep_dma_memcpy; engine->device_config =3D rz_dmac_config; --=20 2.43.0 From nobody Mon Feb 9 09:47:08 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B3E243C067 for ; Tue, 20 Jan 2026 13:33:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916034; cv=none; b=PxicNTWho8WSB992/bhhLT4g9R0IU0uIP8Hru121TD8SYbYe7DqoI0AhWmVzd8681klrAY1+7JDMNQWuahNIxVEEA0y4xjkzsfLnYJgDKdmUMqloKAtk9AoXwejQjR8alh/eMGI/Rf1bNBF41aEJTdODJwSAQQVF0Gdn/lCr/uw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768916034; c=relaxed/simple; bh=hrsUEoSTkdNYFm8WzseU1HUqOXHvGZY2m9IltHxuiXU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FDG3o3TtJkI/DXwCOfb5KwfGzWXUici8bffiMuN0z/+QzeFGGx8NIUaOLZRZOCP6TRU3f29dtZo7kjy51076VCaKa2skIJCjTxmpc3N/c3kO8jw7+B9d4QS0Te0YrsMfhzPcKnEOHS1ytZZ4tRtp+H+7EzMlvVFbkjuH+mnzHNY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=NoZvxrsy; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="NoZvxrsy" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-42fbc305552so3928396f8f.0 for ; Tue, 20 Jan 2026 05:33:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1768916031; x=1769520831; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Or2PvAUr6ZHPTcmvHehxrdDkv+cU8AUyLZ4ALfe+ybo=; b=NoZvxrsyD1xGhuk4FK7nw7eqjfhLs9D60QPao7OO+n5kWBeZcHd2T5nUz/A0xt56dn m2qQO5+yAQb4M/Kyku7dzyzTDYzH3iPaFXRzVWlbCV9I4/wR5bUkM1oZAQDyp2bFrjXQ JLk6Sn1ycvQxb+aHX9DoT1C2ofKbDlmnMgvIxjd+HihSfg0cXijfk2tnDjjpNwGX6fP5 V0m+5QCfo8U7UK3hmzQsveM/vatxSw566g2+/DXXI0nutyHFtTfPxYG8PSGNOWoUSKPB 5rg1/Su0oDKeTxeQD2SM2P1jkZS646Vb2tjL5P2rfDgOrPsZTdJ8OxJz6YSAxMPJpPdO V4mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768916031; x=1769520831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Or2PvAUr6ZHPTcmvHehxrdDkv+cU8AUyLZ4ALfe+ybo=; b=btKyoSVru1PiX/c7CafOh3CcRSRREIx0dVLEBOdWonk2YA7o2/6u7cxzTGRRpwMcyz +HOYjwwC41iVvZ/Rfhks2Egs102GtLRaXD8mIxhDupHayt9IxBbg5pqe/sSg+hfYySlr EZ1okZtp1riBuekLKLX/q7DXP5xLgbvdhvWgS/0FJyAD9KBFFCIsb6nEPX9SSy74Cqq3 bqSTnsejcB8dncc+W9pskF4n0bZ1dPDQa3yVgEhhGIRn4MAw9DmOE4+1ce4CSPCIXpKl bZASMFr4hcWRGqnWLySig+rH0+5gtzofwRRsMfrF25cyazIMZdI4/arZN4kYkls8BKWA o9nw== X-Forwarded-Encrypted: i=1; AJvYcCWJlQ48QafOfKsVvt0FPjDOy5wT5atSdARa3BPJKrMkUcL6szKsc7EgIkUBq1h46fu1tmSm3g8Lz9aSDJA=@vger.kernel.org X-Gm-Message-State: AOJu0Yzt/jvVCa+o+/Nq7omk1k9VRmWlq2w5qVrKcVjhcRKuP/km6yQc /UJv1WRTMqHwgjXXa75ll5+2M5C2B3pEt58gUANnLR+54i/Ccqd8tXnU5i4AtLGw4Kw= X-Gm-Gg: AZuq6aIHJQUSZYz9yw2KpRo24G8Au7i+1Z/j03UDJG6Bs6ynnm+R3hxmHVksOUIdtGq QaHUXiD6S5lUXT6aj7iF9pj56EHmN9avP/g1ZYmwCNfbIqGo3byY7s18gtCFQrnZjqMG9sSlDAd puxhBfsO6OfijSrk4RXUvRry3Kfm8+LNV3vWQ5vdSRUoIzcmvuMOYUbVER/nSO+N2hUXIj5QusF UMrx6dct4EuaYX0xnrrhzxCeAUAk0RWIJd92s2sxqf/SJmx0ipqQHmP5HltPW8miqUL1ZiV7sTX cC/oGBoyczcoYGd5VAzf5pzfTHqZN7wLlbjZCzodAABQA0qbyHo0Ti5hs3ObTE+njwxdNz5hYQm eFdme9d3QOzQkE3CLZijDGy+IK+wHRLrBrllpVnq8nodEakrssMxH/ysvRUhoBWMHUGYGEJ+63E GMIdYFvnHKkOwcLkKumyqnATTU0lVC1gQ2mRHIe8k= X-Received: by 2002:a5d:5889:0:b0:430:ff81:2961 with SMTP id ffacd0b85a97d-4356a082ebfmr20516546f8f.51.1768916030840; Tue, 20 Jan 2026 05:33:50 -0800 (PST) Received: from claudiu-X670E-Pro-RS.. ([82.78.167.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996dad0sm29331439f8f.27.2026.01.20.05.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 05:33:50 -0800 (PST) From: Claudiu X-Google-Original-From: Claudiu To: vkoul@kernel.org, geert+renesas@glider.be, biju.das.jz@bp.renesas.com, fabrizio.castro.jz@renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com Cc: claudiu.beznea@tuxon.dev, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Claudiu Beznea Subject: [PATCH v8 8/8] dmaengine: sh: rz-dmac: Add device_{pause,resume}() callbacks Date: Tue, 20 Jan 2026 15:33:30 +0200 Message-ID: <20260120133330.3738850-9-claudiu.beznea.uj@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> References: <20260120133330.3738850-1-claudiu.beznea.uj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Claudiu Beznea Add support for device_{pause, resume}() callbacks. These are required by the RZ/G2L SCIFA driver. Signed-off-by: Claudiu Beznea --- Changes in v8: - reported residue for paused channels as well Changes in v7: - use guard() instead of scoped_guard() - in rz_dmac_device_pause() checked the channel is enabled before suspending it to avoid read poll timeouts - added a comment in rz_dmac_device_resume() Changes in v6: - set CHCTRL_SETSUS for pause and CHCTRL_CLRSUS for resume - dropped read-modify-update approach for CHCTRL updates as the HW returns zero when reading CHCTRL - moved the read_poll_timeout_atomic() under spin lock to ensure avoid any races b/w pause and resume functionalities Changes in v5: - used suspend capability of the controller to pause/resume the transfers drivers/dma/sh/rz-dmac.c | 49 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index 27c963083e29..caa3335bf95d 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -141,10 +141,12 @@ struct rz_dmac { #define CHANNEL_8_15_COMMON_BASE 0x0700 =20 #define CHSTAT_ER BIT(4) +#define CHSTAT_SUS BIT(3) #define CHSTAT_EN BIT(0) =20 #define CHCTRL_CLRINTMSK BIT(17) #define CHCTRL_CLRSUS BIT(9) +#define CHCTRL_SETSUS BIT(8) #define CHCTRL_CLRTC BIT(6) #define CHCTRL_CLREND BIT(5) #define CHCTRL_CLRRQ BIT(4) @@ -814,11 +816,18 @@ static enum dma_status rz_dmac_tx_status(struct dma_c= han *chan, if (status =3D=3D DMA_COMPLETE || !txstate) return status; =20 - scoped_guard(spinlock_irqsave, &channel->vc.lock) + scoped_guard(spinlock_irqsave, &channel->vc.lock) { + u32 val; + residue =3D rz_dmac_chan_get_residue(channel, cookie); =20 - /* if there's no residue, the cookie is complete */ - if (!residue) + val =3D rz_dmac_ch_readl(channel, CHSTAT, 1); + if (val & CHSTAT_SUS) + status =3D DMA_PAUSED; + } + + /* if there's no residue and no paused, the cookie is complete */ + if (!residue && status !=3D DMA_PAUSED) return DMA_COMPLETE; =20 dma_set_residue(txstate, residue); @@ -826,6 +835,38 @@ static enum dma_status rz_dmac_tx_status(struct dma_ch= an *chan, return status; } =20 +static int rz_dmac_device_pause(struct dma_chan *chan) +{ + struct rz_dmac_chan *channel =3D to_rz_dmac_chan(chan); + u32 val; + + guard(spinlock_irqsave)(&channel->vc.lock); + + val =3D rz_dmac_ch_readl(channel, CHSTAT, 1); + if (!(val & CHSTAT_EN)) + return 0; + + rz_dmac_ch_writel(channel, CHCTRL_SETSUS, CHCTRL, 1); + return read_poll_timeout_atomic(rz_dmac_ch_readl, val, + (val & CHSTAT_SUS), 1, 1024, + false, channel, CHSTAT, 1); +} + +static int rz_dmac_device_resume(struct dma_chan *chan) +{ + struct rz_dmac_chan *channel =3D to_rz_dmac_chan(chan); + u32 val; + + guard(spinlock_irqsave)(&channel->vc.lock); + + /* Do not check CHSTAT_SUS but rely on HW capabilities. */ + + rz_dmac_ch_writel(channel, CHCTRL_CLRSUS, CHCTRL, 1); + return read_poll_timeout_atomic(rz_dmac_ch_readl, val, + !(val & CHSTAT_SUS), 1, 1024, + false, channel, CHSTAT, 1); +} + /* * -----------------------------------------------------------------------= ------ * IRQ handling @@ -1164,6 +1205,8 @@ static int rz_dmac_probe(struct platform_device *pdev) engine->device_terminate_all =3D rz_dmac_terminate_all; engine->device_issue_pending =3D rz_dmac_issue_pending; engine->device_synchronize =3D rz_dmac_device_synchronize; + engine->device_pause =3D rz_dmac_device_pause; + engine->device_resume =3D rz_dmac_device_resume; =20 engine->copy_align =3D DMAENGINE_ALIGN_1_BYTE; dma_set_max_seg_size(engine->dev, U32_MAX); --=20 2.43.0