From nobody Mon Dec 1 23:36:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA37E31960C; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; cv=none; b=fTNCyvShhVDtXr1QE1TWAIc4rJliG8kqoFJXi5ZoHG2t5jD2digdILBZhXHgnCgfI2Lp/9Ppm1fw+7k33TsXRoAsKDTwkDCSPM3GkUYPH80jaloVAQGSLTG39l6D8rBimzUuDPi+pkGjY8OD3NIZZTFEw0r45wgDLGmGybiw8Fg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; c=relaxed/simple; bh=c4hfh7JuwsfiLhuVDttvKrbLU4tWLHCTyrAp7i/wpyE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HxFzFtGt5tufeCBvp2YE7uDekHgYp9EkWICjzXZwLTZ5+vhMoTH3rhs/UkRHiCzx0M0VPeDevQRLzLfWTZ7FnxDni+sd37iQZ3v+rFWvBOd6j/L2D5NgCHDlcqHobfG3x1E0Q7MfjVT1EQslwkDtVNiRDTQV6kEGxA5Iwb71mbo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YKbQmNhR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YKbQmNhR" Received: by smtp.kernel.org (Postfix) with ESMTPS id F12F9C113D0; Wed, 26 Nov 2025 08:36:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764146164; bh=c4hfh7JuwsfiLhuVDttvKrbLU4tWLHCTyrAp7i/wpyE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=YKbQmNhRN98Gh94Ty3hQcr/E7uvX/SqdiLG1JevNmiZHtDXBarb84xL8ao8ss/etg N2bbLYLGZKgn0m6urGNjSDIdAZr+3ZgLRuVyok/PIBnCT00J0FAnKEMpFkZYxv+nOy GcNpoxz20ORQqyALBjvPlEf/soDRDl1IvfqYzRvW4JZzeeJMBraovqpp4at/VH3Fjl Vqu/lu5bLCZfuJ9fsPRGX2x4DsbJnCVKZa+B3uY/DQihDUo1lMh5pDNPvSrkS2yEaq 6gjuDJMh/vivfvp2FsMKAB8sX/8RiFmnxxC7+80vKMSLKbls0iL8oyFF/jnn+l9F1P TanBqy5gxehkA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2D04D10391; Wed, 26 Nov 2025 08:36:03 +0000 (UTC) From: Jean-Michel Hautbois via B4 Relay Date: Wed, 26 Nov 2025 09:36:02 +0100 Subject: [PATCH v2 1/5] dma: fsl-edma: Add FSL_EDMA_DRV_MCF flag for ColdFire eDMA Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251126-dma-coldfire-v2-1-5b1e4544d609@yoseli.org> References: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> In-Reply-To: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> To: Frank Li , Vinod Koul , Angelo Dureghello Cc: Greg Ungerer , imx@lists.linux.dev, dmaengine@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1764146162; l=2499; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=9Rl/w8Flv4FYHKNwt2QAAOrN5X7BfFjFIc6s+uDV++s=; b=qxtJdH6M5NqML0HZbwh4Es0Y/QUSnr+NBgpH0A7u7ay9142548awxn+ruhMWpHWc4nIiSjk+d zdxCMuA6eGvA/cpjqTlKje7dvM+vNG2IsC+9xGT50DAinjJ/8aNrUFL X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-Endpoint-Received: by B4 Relay for jeanmichel.hautbois@yoseli.org/20240925 with auth_id=570 X-Original-From: Jean-Michel Hautbois Reply-To: jeanmichel.hautbois@yoseli.org From: Jean-Michel Hautbois Add FSL_EDMA_DRV_MCF driver flag to identify MCF ColdFire eDMA controllers which have a native M68K register layout. The edma_writeb() function applies an XOR ^ 0x3 byte-lane adjustment for big-endian eDMA controllers where byte registers within a 32-bit word need address correction. However, the MCF54418 eDMA 8-bit registers (SERQ, CERQ, SEEI, CEEI, CINT, CERR, SSRT, CDNE) are located at sequential byte addresses (0x4018-0x401F) as documented in the MCF54418 Reference Manual Table 19-2. No byte-lane adjustment is needed, as applying the XOR causes writes to target incorrect registers (writing to CERR at 0x401D would actually access SSRT at 0x401E). Set this flag in the MCF eDMA driver to bypass the XOR adjustment and access registers at their documented addresses. Reviewed-by: Frank Li Signed-off-by: Jean-Michel Hautbois --- drivers/dma/fsl-edma-common.h | 5 ++++- drivers/dma/mcf-edma-main.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 205a96489094..4c86f2f39c1d 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -225,6 +225,8 @@ struct fsl_edma_desc { #define FSL_EDMA_DRV_TCD64 BIT(15) /* All channel ERR IRQ share one IRQ line */ #define FSL_EDMA_DRV_ERRIRQ_SHARE BIT(16) +/* MCF eDMA: Different register layout, no XOR for byte access */ +#define FSL_EDMA_DRV_MCF BIT(17) =20 =20 #define FSL_EDMA_DRV_EDMA3 (FSL_EDMA_DRV_SPLIT_REG | \ @@ -419,7 +421,8 @@ static inline void edma_writeb(struct fsl_edma_engine *= edma, u8 val, void __iomem *addr) { /* swap the reg offset for these in big-endian mode */ - if (edma->big_endian) + /* MCF eDMA has different register layout, no XOR needed */ + if (edma->big_endian && !(edma->drvdata->flags & FSL_EDMA_DRV_MCF)) iowrite8(val, (void __iomem *)((unsigned long)addr ^ 0x3)); else iowrite8(val, addr); diff --git a/drivers/dma/mcf-edma-main.c b/drivers/dma/mcf-edma-main.c index 9e1c6400c77b..f95114829d80 100644 --- a/drivers/dma/mcf-edma-main.c +++ b/drivers/dma/mcf-edma-main.c @@ -145,7 +145,7 @@ static void mcf_edma_irq_free(struct platform_device *p= dev, } =20 static struct fsl_edma_drvdata mcf_data =3D { - .flags =3D FSL_EDMA_DRV_EDMA64, + .flags =3D FSL_EDMA_DRV_EDMA64 | FSL_EDMA_DRV_MCF, .setup_irq =3D mcf_edma_irq_init, }; =20 --=20 2.39.5 From nobody Mon Dec 1 23:36:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA24B319603; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; cv=none; b=DvqTyJn6io5aqU9IktkFpiu5au8HnyfYKkDzAIMTNoRyD5zXeH/4UJKSbdgNOtNQe3RYgbxZZ346K4KLjdEW7TX6df112+DxPzPnqt44SW3EzHMG1OKz5CmRdXEQdCQIfxPsshM/EmIKGwqoeTyXsHhCDN1bJ8kQ13TstxvmcfA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; c=relaxed/simple; bh=sjzSudo3EoBVY+lDVXdn/xFAbAYc+5JQiCsHKUpfBW8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WrLLckzHZKzujvpDN6vVopd/gZCm741/s1bGDWKdXmlygpfNaULRm2GERCV4DuSmbsQ+veUZfIZDBWJWcUrScsnKG4N5WsnzpDz6Pfw5qWtwhaOkOGZhabA9/O3+HsxiqWaKTQOKyxodah06zRs091S+q0PvVFJRtAKkT2i6kUY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OnOymYDF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OnOymYDF" Received: by smtp.kernel.org (Postfix) with ESMTPS id 07DCEC116D0; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764146164; bh=sjzSudo3EoBVY+lDVXdn/xFAbAYc+5JQiCsHKUpfBW8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=OnOymYDFaTJedmGS42+ISGis2z+Vz7I/WkxLK/bD4NG7Irc6doyp96rDSegK0xQY2 GfWXrzQxzOvYd215+JxRIHrO5WvMVdcg2q8/icDoSlINSKNcej19qObo4YTmBHOvZR aD6MOe9kru/LEblqG264oQYx/xfI/hgzHNj7CmULyqpjl4ozhaEA/czDZ83lflOnJc EhDZz/D51w89PsacfFigm5PwsQ+reZmihDvDtzvuZ6iLt6kvdBII0PyQGa/s+speYW +OBmEKXW7+v7X88jdWYyMIIywBYt5bzQ2/p33gRh1vudevoKecvPLBHOdo4fepf3E1 jREPBEO4KLuUA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC106D10390; Wed, 26 Nov 2025 08:36:03 +0000 (UTC) From: Jean-Michel Hautbois via B4 Relay Date: Wed, 26 Nov 2025 09:36:03 +0100 Subject: [PATCH v2 2/5] dma: mcf-edma: Add per-channel IRQ naming for debugging Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251126-dma-coldfire-v2-2-5b1e4544d609@yoseli.org> References: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> In-Reply-To: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> To: Frank Li , Vinod Koul , Angelo Dureghello Cc: Greg Ungerer , imx@lists.linux.dev, dmaengine@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1764146162; l=2484; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=TOkFpkS4T7DbH7y0xlolnOAKUy6LY9n/XPRytl2P/DM=; b=eXEURz7RQO0BH0cJTkHQf62CHI2X69oRsk8d+iX2tOt9SVdilKka5OtxkRGVOhFlVYbteVbXa fHPERnOPFXaDjLqwnSSABn7K2/lG265dpaDWM0d6p5epUVBuRLHSQ4/ X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-Endpoint-Received: by B4 Relay for jeanmichel.hautbois@yoseli.org/20240925 with auth_id=570 X-Original-From: Jean-Michel Hautbois Reply-To: jeanmichel.hautbois@yoseli.org From: Jean-Michel Hautbois Add dynamic per-channel IRQ naming to make DMA interrupt identification easier in /proc/interrupts and debugging tools. Instead of all channels showing "eDMA", they now show: - "eDMA-0" through "eDMA-15" for channels 0-15 - "eDMA-16" through "eDMA-55" for channels 16-55 - "eDMA-tx-56" for the shared channel 56-63 interrupt - "eDMA-err" for the error interrupt This aids debugging DMA issues by making it clear which channel's interrupt is being serviced. Signed-off-by: Jean-Michel Hautbois --- drivers/dma/mcf-edma-main.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/dma/mcf-edma-main.c b/drivers/dma/mcf-edma-main.c index f95114829d80..6a7d88895501 100644 --- a/drivers/dma/mcf-edma-main.c +++ b/drivers/dma/mcf-edma-main.c @@ -81,8 +81,14 @@ static int mcf_edma_irq_init(struct platform_device *pde= v, if (!res) return -1; =20 - for (ret =3D 0, i =3D res->start; i <=3D res->end; ++i) - ret |=3D request_irq(i, mcf_edma_tx_handler, 0, "eDMA", mcf_edma); + for (ret =3D 0, i =3D res->start; i <=3D res->end; ++i) { + char *irq_name =3D devm_kasprintf(&pdev->dev, GFP_KERNEL, + "eDMA-%d", (int)(i - res->start)); + if (!irq_name) + return -ENOMEM; + + ret |=3D request_irq(i, mcf_edma_tx_handler, 0, irq_name, mcf_edma); + } if (ret) return ret; =20 @@ -91,23 +97,27 @@ static int mcf_edma_irq_init(struct platform_device *pd= ev, if (!res) return -1; =20 - for (ret =3D 0, i =3D res->start; i <=3D res->end; ++i) - ret |=3D request_irq(i, mcf_edma_tx_handler, 0, "eDMA", mcf_edma); + for (ret =3D 0, i =3D res->start; i <=3D res->end; ++i) { + char *irq_name =3D devm_kasprintf(&pdev->dev, GFP_KERNEL, + "eDMA-%d", (int)(16 + i - res->start)); + if (!irq_name) + return -ENOMEM; + + ret |=3D request_irq(i, mcf_edma_tx_handler, 0, irq_name, mcf_edma); + } if (ret) return ret; =20 ret =3D platform_get_irq_byname(pdev, "edma-tx-56-63"); if (ret !=3D -ENXIO) { - ret =3D request_irq(ret, mcf_edma_tx_handler, - 0, "eDMA", mcf_edma); + ret =3D request_irq(ret, mcf_edma_tx_handler, 0, "eDMA-tx-56", mcf_edma); if (ret) return ret; } =20 ret =3D platform_get_irq_byname(pdev, "edma-err"); if (ret !=3D -ENXIO) { - ret =3D request_irq(ret, mcf_edma_err_handler, - 0, "eDMA", mcf_edma); + ret =3D request_irq(ret, mcf_edma_err_handler, 0, "eDMA-err", mcf_edma); if (ret) return ret; } --=20 2.39.5 From nobody Mon Dec 1 23:36:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4EED23191D4; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; cv=none; b=usdAXybN7A35mqMcHJ0+TMKaUvpOG5rWOHzOsIy0gbLOGGPwhp+ZATBNvvJyycHPBbD9rkyougkqLcrmlr+bbR+t/Pf/S0XL30h1JVJcXk/MoXZH3hPPcew2CSnKUiR8/3FIBTIqpmbGZ1PBqqoOaGSiXJ5DwxKgpu/rS/NFYUc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; c=relaxed/simple; bh=nd+pFsIerpdXVlUEPgldk3qgziMj5gCsybyDQWOCukY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s6aIdGKCo5Wo4Fk/QdJcqYkgUouBkJkxo5bDP8WE28Hg8gou1WJQ9uC9DjRESk2jcatilCdvFxgQ4OwOt88Q2GRm9go9S3t/HEDrdscJSq0eY+53HpoWg0+X8Bht3goNV7A/2g7+wszbvc1dzZrtB4YwblEUz9llRRDqOEUaqcY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KEjUtsSN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KEjUtsSN" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2F921C19423; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764146164; bh=nd+pFsIerpdXVlUEPgldk3qgziMj5gCsybyDQWOCukY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=KEjUtsSNE/fMvbVVhk4Skb1fhge4ota8yCkFNW8gOh9edVKPfySI0X3flm/dFf6A8 W24VZDBpNeY1S51wCzk1DcvICJlawv+mkBwpzlR+NLolIxF+b6P21agZlKk1oPNPMk 81+RzVtQbQHxttxgbrmewwcuoVV2yeNPzZmmfX9CE+IcYsWQ50rbv/cZyt2bTh21P8 ANO8ZXw65MigftjOglfRCB5OoxIt5KJ3VFkBU+U3cxVUm1qddTbRjIrITduM6US5AQ AcfsZUFRWMfjU2YBOKPJh5eg9ORIvsxi2Qur8QNsMdPwJgJctLd0lJA8NO/YuuiNi4 0pGy8P9qWq9pQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 22EE9D10381; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) From: Jean-Michel Hautbois via B4 Relay Date: Wed, 26 Nov 2025 09:36:04 +0100 Subject: [PATCH v2 3/5] dma: mcf-edma: Fix interrupt handler for 64 DMA channels Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251126-dma-coldfire-v2-3-5b1e4544d609@yoseli.org> References: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> In-Reply-To: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> To: Frank Li , Vinod Koul , Angelo Dureghello Cc: Greg Ungerer , imx@lists.linux.dev, dmaengine@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1764146162; l=1734; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=HaOGswepi6CQhV7Li1tzKCLUeD5NEzStbHTwZzESV9o=; b=uFIDruW6J6TJ+c/uGZMkDzQ/D/jTLyW/AytHC0gVcBXZ66liZBJ8QDBtWrrynsG1Cls5WGZ8J GuJc3xn1sxaDlDURdqZcfavyBHNAI+E2XOyQpcFkJWXJRWsFH+fzsJU X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-Endpoint-Received: by B4 Relay for jeanmichel.hautbois@yoseli.org/20240925 with auth_id=570 X-Original-From: Jean-Michel Hautbois Reply-To: jeanmichel.hautbois@yoseli.org From: Jean-Michel Hautbois Fix the DMA completion interrupt handler to properly handle all 64 channels on MCF54418 ColdFire processors. The previous code used BIT(ch) to test interrupt status bits, which causes undefined behavior on 32-bit architectures when ch >=3D 32 because unsigned long is 32 bits and the shift would exceed the type width. Replace with bitmap_from_u64() and for_each_set_bit() which correctly handle 64-bit values on 32-bit systems by using a proper bitmap representation. Reviewed-by: Frank Li Signed-off-by: Jean-Michel Hautbois --- drivers/dma/mcf-edma-main.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/dma/mcf-edma-main.c b/drivers/dma/mcf-edma-main.c index 6a7d88895501..6353303df957 100644 --- a/drivers/dma/mcf-edma-main.c +++ b/drivers/dma/mcf-edma-main.c @@ -18,7 +18,8 @@ static irqreturn_t mcf_edma_tx_handler(int irq, void *dev= _id) { struct fsl_edma_engine *mcf_edma =3D dev_id; struct edma_regs *regs =3D &mcf_edma->regs; - unsigned int ch; + unsigned long ch; + DECLARE_BITMAP(status_mask, 64); u64 intmap; =20 intmap =3D ioread32(regs->inth); @@ -27,11 +28,11 @@ static irqreturn_t mcf_edma_tx_handler(int irq, void *d= ev_id) if (!intmap) return IRQ_NONE; =20 - for (ch =3D 0; ch < mcf_edma->n_chans; ch++) { - if (intmap & BIT(ch)) { - iowrite8(EDMA_MASK_CH(ch), regs->cint); - fsl_edma_tx_chan_handler(&mcf_edma->chans[ch]); - } + bitmap_from_u64(status_mask, intmap); + + for_each_set_bit(ch, status_mask, mcf_edma->n_chans) { + iowrite8(EDMA_MASK_CH(ch), regs->cint); + fsl_edma_tx_chan_handler(&mcf_edma->chans[ch]); } =20 return IRQ_HANDLED; --=20 2.39.5 From nobody Mon Dec 1 23:36:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA2F631960A; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; cv=none; b=oqpXjfeio9aQPT8Fw3MQIk09mYUxUhsOtexL/6AQz8J1XheURXQWeAm0rXMGhzuAbRAHPVzq3ctlbH+pv+VuP+Crc2sLE/wfa1Aap9RzTVOPHHQX6vtDU6SCIqHM4LEhlMdW0o52t0scdrX7n+o4/g6adMKZ0hNL9R9j8DcWUXE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146164; c=relaxed/simple; bh=fOmsUHpgbUfm96TRpWCT/YXCIOrIrgwM+3sS66JgI0U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ij4YkzAscrx6yZ6/GgbT9QQBAfrPmXN95vQ8pz5omzW4GoLpkgjdVrpYNAzf1l6KH8sO9KvIxQmObbYQOMyfaZQ1iUJobMooxenYK3InjO/akOClKOOvBqR3Fmw71CknbL/6s/RQRXxb38TU+P+IqYCZ5YgRTVioGiticUDHsPA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VuxdDgFF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VuxdDgFF" Received: by smtp.kernel.org (Postfix) with ESMTPS id 57A70C19422; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764146164; bh=fOmsUHpgbUfm96TRpWCT/YXCIOrIrgwM+3sS66JgI0U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VuxdDgFFABklqYuk8Yd+YQ3AC27lYGUrzliQ+s5JYPOZNMvMPErQzI8QYsuRfUFLN XvDu6GFPWlrkAYmbQqlHOFL+37TSg6iOGIkL5PC1WjzcIxWbj2umYOrpi3qvQO6pu8 EiHweKQcDU1q2yAy5dXtIBc34TZIIHGfWhXTxMTW1iJ6nUZ8GHPDJaqZJHeaYjutxT Daieh0isDzXYWPI5Rg2TmCE9FOHD+XFsCqqfRpTLysi4aPsGnHiqfK727liajCo+m6 qdWYgnLaDIz28S9Y/WriIr6t9av53LKyoPtahoHrwRVrBgenD9SZHhomKWPHDhvvhW Zi803ecakGfaw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47F99D10390; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) From: Jean-Michel Hautbois via B4 Relay Date: Wed, 26 Nov 2025 09:36:05 +0100 Subject: [PATCH v2 4/5] dma: fsl-edma: Move error handler out of header file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251126-dma-coldfire-v2-4-5b1e4544d609@yoseli.org> References: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> In-Reply-To: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> To: Frank Li , Vinod Koul , Angelo Dureghello Cc: Greg Ungerer , imx@lists.linux.dev, dmaengine@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1764146162; l=1782; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=gG4IzOttHb1mDGj3hSrbOa5uG61+wAi/EXuAZ5+EKHs=; b=5CVOve8F7k3DV8CGTn4M0M42Wyr47VbbF4O7r9xtQ9Sn+z5nbv+OkMjMHKv/r01wvrdsOus8+ anmIioJWRw5AtV1EwbXG6XX1iUJ9GqER/P/0xmNI7nj2eQibHashL2k X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-Endpoint-Received: by B4 Relay for jeanmichel.hautbois@yoseli.org/20240925 with auth_id=570 X-Original-From: Jean-Michel Hautbois Reply-To: jeanmichel.hautbois@yoseli.org From: Jean-Michel Hautbois Move fsl_edma_err_chan_handler from an inline function in the header to a proper function in fsl-edma-common.c. This prepares for MCF ColdFire eDMA support where the error handler needs to be called from the MCF-specific error interrupt handler. No functional change for existing users. Reviewed-by: Frank Li Signed-off-by: Jean-Michel Hautbois --- drivers/dma/fsl-edma-common.c | 5 +++++ drivers/dma/fsl-edma-common.h | 6 +----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index 4976d7dde080..49d5dca216b6 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -44,6 +44,11 @@ #define EDMA64_ERRH 0x28 #define EDMA64_ERRL 0x2c =20 +void fsl_edma_err_chan_handler(struct fsl_edma_chan *fsl_chan) +{ + fsl_chan->status =3D DMA_ERROR; +} + void fsl_edma_tx_chan_handler(struct fsl_edma_chan *fsl_chan) { spin_lock(&fsl_chan->vchan.lock); diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 4c86f2f39c1d..64b537527291 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -478,11 +478,7 @@ static inline struct fsl_edma_desc *to_fsl_edma_desc(s= truct virt_dma_desc *vd) return container_of(vd, struct fsl_edma_desc, vdesc); } =20 -static inline void fsl_edma_err_chan_handler(struct fsl_edma_chan *fsl_cha= n) -{ - fsl_chan->status =3D DMA_ERROR; -} - +void fsl_edma_err_chan_handler(struct fsl_edma_chan *fsl_chan); void fsl_edma_tx_chan_handler(struct fsl_edma_chan *fsl_chan); void fsl_edma_disable_request(struct fsl_edma_chan *fsl_chan); void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan, --=20 2.39.5 From nobody Mon Dec 1 23:36:41 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DB3B031AF2A; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146167; cv=none; b=ZrTtYrphgm4sAaSJyU/you/G+OzmUq6xXXn976gk/oFmYjKxDgMJUvPUOe04JiAs4oMt6ExfHE/71urMFqdwmEmxAZWUW+PWCcAdPG3lQahLa0QUTOYUzN8ZC/F/SUYGjYlbyQSgiCJHZuq+E/9MaZPpInsmgzRnGfUgifWNtDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764146167; c=relaxed/simple; bh=xg86XDj9pRDdo0U6V4j1oVQz4TQKTZ8SIFQx2ZFaDEE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g6Z5aIeZRQpqa4X9QMCCyVXM8HZAlH/3PTkWzq+wmWYCRfYfFUP0fqbpDeHVwwxSq+/4HEPAFx5RvMXkJY+VRr2GxFk8oyUGlo20bu9WyBxEfegyHW7PGjHN1y0KxwwPL2JazYFJ5LJ3ssJq83nxwWt2N+TepOODBvoMiLqCxTE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oEC1JKJa; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oEC1JKJa" Received: by smtp.kernel.org (Postfix) with ESMTPS id 804EBC19423; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764146164; bh=xg86XDj9pRDdo0U6V4j1oVQz4TQKTZ8SIFQx2ZFaDEE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=oEC1JKJacR6ZCpJ8mWBXoQLMQ3hgv0Qlds7bYlriGmSPCSoGAQ/z9/bO/XkFynSik Ulm+pxjCFVULteVv4jx0fVf9LzYB0zXY72Ne5eaSm0KWcOMVH6kKYWvcXGJVvHggF0 0See5+YeSx+GP2oCzNeuqrQEovj+2F1d3E1xv484INKHVBww/0BhLS3UssVV2vsF9H j9hmt5jGe/uD/2xk7lya+vB7oV3VeZ6SsvFc1rk3kIhk2IRJmlvS0iEUa6lf0/cpeO nYBwdaFRJNGZv7o+08Vz7z6jPXk7FUpgg0Jo6crp3qrGEeObIKbDoZiYeYtVBPpRNm at6/LPgeLYMtg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71664D10391; Wed, 26 Nov 2025 08:36:04 +0000 (UTC) From: Jean-Michel Hautbois via B4 Relay Date: Wed, 26 Nov 2025 09:36:06 +0100 Subject: [PATCH v2 5/5] dma: mcf-edma: Fix error handler for all 64 DMA channels Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251126-dma-coldfire-v2-5-5b1e4544d609@yoseli.org> References: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> In-Reply-To: <20251126-dma-coldfire-v2-0-5b1e4544d609@yoseli.org> To: Frank Li , Vinod Koul , Angelo Dureghello Cc: Greg Ungerer , imx@lists.linux.dev, dmaengine@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Jean-Michel Hautbois X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1764146162; l=2813; i=jeanmichel.hautbois@yoseli.org; s=20240925; h=from:subject:message-id; bh=vl4xoSP2zo/uChO0eC60aaXD5ndaGWcvFMvKviIm1xU=; b=LymQXM4KCzVvv0kmu11h2B4RJ+ha1izOfOtd0vxxxL+XGROu79FCczZRnBubCYOCyRNYJQUUi 0lebl7db8Y/BSFA/GHXxHopMxdmDgce7MpjluF9wBvCYbojkdJx3udv X-Developer-Key: i=jeanmichel.hautbois@yoseli.org; a=ed25519; pk=MsMTVmoV69wLIlSkHlFoACIMVNQFyvJzvsJSQsn/kq4= X-Endpoint-Received: by B4 Relay for jeanmichel.hautbois@yoseli.org/20240925 with auth_id=570 X-Original-From: Jean-Michel Hautbois Reply-To: jeanmichel.hautbois@yoseli.org From: Jean-Michel Hautbois Fix the DMA error interrupt handler to properly handle errors on all 64 channels. The previous implementation had several issues: 1. Returned IRQ_NONE if low channels had no errors, even if high channels did 2. Used direct status assignment instead of fsl_edma_err_chan_handler() for high channels Split the error handling into two separate loops for the low (0-31) and high (32-63) channel groups, using for_each_set_bit() for cleaner iteration. Both groups now consistently use fsl_edma_err_chan_handler() for proper error status reporting. Fixes: e7a3ff92eaf1 ("dmaengine: fsl-edma: add ColdFire mcf5441x edma suppo= rt") Signed-off-by: Jean-Michel Hautbois Reviewed-by: Frank Li --- drivers/dma/mcf-edma-main.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/dma/mcf-edma-main.c b/drivers/dma/mcf-edma-main.c index 6353303df957..5bd04faa639c 100644 --- a/drivers/dma/mcf-edma-main.c +++ b/drivers/dma/mcf-edma-main.c @@ -12,6 +12,7 @@ #include "fsl-edma-common.h" =20 #define EDMA_CHANNELS 64 +#define EDMA_CHANS_PER_REG (EDMA_CHANNELS / 2) #define EDMA_MASK_CH(x) ((x) & GENMASK(5, 0)) =20 static irqreturn_t mcf_edma_tx_handler(int irq, void *dev_id) @@ -42,33 +43,33 @@ static irqreturn_t mcf_edma_err_handler(int irq, void *= dev_id) { struct fsl_edma_engine *mcf_edma =3D dev_id; struct edma_regs *regs =3D &mcf_edma->regs; - unsigned int err, ch; + unsigned int ch; + unsigned long err; + bool handled =3D false; =20 + /* Check low 32 channels (0-31) */ err =3D ioread32(regs->errl); - if (!err) - return IRQ_NONE; - - for (ch =3D 0; ch < (EDMA_CHANNELS / 2); ch++) { - if (err & BIT(ch)) { + if (err) { + handled =3D true; + for_each_set_bit(ch, &err, EDMA_CHANS_PER_REG) { fsl_edma_disable_request(&mcf_edma->chans[ch]); iowrite8(EDMA_CERR_CERR(ch), regs->cerr); fsl_edma_err_chan_handler(&mcf_edma->chans[ch]); } } =20 + /* Check high 32 channels (32-63) */ err =3D ioread32(regs->errh); - if (!err) - return IRQ_NONE; - - for (ch =3D (EDMA_CHANNELS / 2); ch < EDMA_CHANNELS; ch++) { - if (err & (BIT(ch - (EDMA_CHANNELS / 2)))) { - fsl_edma_disable_request(&mcf_edma->chans[ch]); - iowrite8(EDMA_CERR_CERR(ch), regs->cerr); - mcf_edma->chans[ch].status =3D DMA_ERROR; + if (err) { + handled =3D true; + for_each_set_bit(ch, &err, EDMA_CHANS_PER_REG) { + fsl_edma_disable_request(&mcf_edma->chans[ch + EDMA_CHANS_PER_REG]); + iowrite8(EDMA_CERR_CERR(ch + EDMA_CHANS_PER_REG), regs->cerr); + fsl_edma_err_chan_handler(&mcf_edma->chans[ch + EDMA_CHANS_PER_REG]); } } =20 - return IRQ_HANDLED; + return handled ? IRQ_HANDLED : IRQ_NONE; } =20 static int mcf_edma_irq_init(struct platform_device *pdev, --=20 2.39.5